<?php
/*
用php写的一个超短线T+1(第一天买第二天卖)的选股程序
每天早上9:26分运行9:30分买入股票,
第二天早上9:30卖出股票
程序采集了163早盘集合竞价放量的股票,以及益盟股票医生的智能分析和同花顺的个股诊断工具
*/
set_time_limit(0); // 取消超时断开
$url = 'http://quotes.money.163.com/hs/service/marketradar_ajax.php?page=0&query=STYPE%3AEQA&types=JHJJFL&count=28&type=query'; //将163的集合竞价网址存入变量$url
/*
匹配页码数
*/
$file = json_decode(file_get_contents($url), true);
$out = $file['list'];
$pageCount = (int)$file['pagecount'];
/*
获取每一页的股票代码并放入相应的数组
*/
for ($q = 1; $q < $pageCount; $q++)
{
$url = 'http://quotes.money.163.com/hs/service/marketradar_ajax.php?page=' . $q .
'&query=STYPE%3AEQA&types=JHJJFL&count=28&type=query';
$file = json_decode(file_get_contents($url), true);
foreach ($file['list'] as $v)
$out[] = $v;
}
function get_symbol($ar)
{
return $ar['SYMBOL'];
}
$symbol = array_map('get_symbol', $out);
/*
将数组中的代码组装到网址当中,并存入新的数组
*/
ob_end_clean();
echo str_pad('', 1024); // 设置足够大,大过php.ini的output_buffering设置值
$count = count($symbol);
for ($i = 0; $i <= $count - 1; $i++)
{
preg_match_all('/^00|^30/', $symbol[$i], $sza);
if ($sza[0])
{
$code[$i] = "sz";
}
else
{
$code[$i] = "sh";
}
$doctor[$i] = "http://stockapp.finance.qq.com/doctor/" . $code[$i] . $symbol[$i] .
".html";
//echo $doctor[$i]."<br>";
}
$datas=newfuc($doctor);
echo "163股票代吗获取成功"."<br>";
$shu=count($datas);
//echo $shu;
//the problem below!
for($sh=0;$sh<=$shu-1;$sh++)
{
//echo $datas[$sh];
preg_match_all('/强<\/span>股票走势/', $datas[$sh], $dac);
//print_r($dac[0]);
if($dac[0]!=null)
{
//echo $symbol[$sh]."<br>";
$newurl[$sh]="http://doctor.10jqka.com.cn/".$symbol[$sh]."/";
// echo $newurl[$sh]."<br/>";
$akfile[$sh]=iconv("gb2312","utf-8",file_get_contents($newurl[$sh]));
//echo $akfile;
if (preg_match_all('/短线上涨概率较大/', $akfile[$sh]))
{
//print_r ($dac[0] ) 成本上方|;
echo $symbol[$sh]."<br>";
}
}
}
echo "正则表达匹配成功";
function newfuc($doctorz)
{
$mh = curl_multi_init();
foreach ($doctorz as $j => $uri) {
$conn[$j] = curl_init($uri);
curl_setopt($conn[$j], CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)");
curl_setopt($conn[$j], CURLOPT_HEADER ,0);
curl_setopt($conn[$j], CURLOPT_CONNECTTIMEOUT,60);
curl_setopt($conn[$j],CURLOPT_RETURNTRANSFER,true); // 设置不将爬取代码写到浏览器,而是转化为字符串
curl_multi_add_handle ($mh,$conn[$j]);
}
do {
curl_multi_exec($mh,$active);
} while ($active);
foreach ($doctorz as $j => $uri) {
$data[$j]= curl_multi_getcontent($conn[$j]); // 获得爬取的代码字符串
//echo $data[$j];
//注意各个数据源源码的编码必须一致
}
return $data;
}
flush();
sleep(1);
?>