netEasy.class.php 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374
  1. <?php
  2. /**
  3. * @author:王刚涛
  4. * 用于获取 并存入数据库,通过$url,可以设置需要获取的时间段
  5. */
  6. error_reporting( E_ALL&~E_NOTICE );
  7. class netEasy
  8. {
  9. public function get($code){
  10. $stock_code = $code;
  11. if (Stock_info::checkCode($code))
  12. {
  13. return -1;
  14. }
  15. $end_date = date("Ymd", time());
  16. $f = substr($stock_code, 0, 1);
  17. if ($f == "6")
  18. {
  19. $stock_code = "0".$code;
  20. }
  21. else
  22. {
  23. $stock_code = "1".$code;
  24. }
  25. $start_date = date("Ymd", time() - 86400*10);
  26. $url = "http://quotes.money.163.com/service/chddata.html?code=".$stock_code."&start=".$start_date."&end=".$end_date."&fields=TOPEN;HIGH;LOW;TCLOSE;VATURNOVER;VOTURNOVER;";
  27. //echo($url);
  28. $flag = 0;
  29. //echo $stock_code;
  30. //构建所要发送的url
  31. $curlHandle = curl_init();
  32. curl_setopt( $curlHandle , CURLOPT_URL, $url );
  33. curl_setopt( $curlHandle , CURLOPT_RETURNTRANSFER, 1 );
  34. curl_setopt( $curlHandle , CURLOPT_SSL_VERIFYPEER, false);
  35. curl_setopt( $curlHandle , CURLOPT_SSL_VERIFYHOST, false);
  36. curl_setopt( $curlHandle , CURLOPT_TIMEOUT, 10 );
  37. $content = curl_exec($curlHandle);
  38. curl_close( $curlHandle );
  39. $content1 = explode("'",$content);
  40. //print_r($content);
  41. if(!empty($content1[1])){
  42. for($i=count($content1)-1;$i>=0;$i--){
  43. if(!empty($content1[$i])){
  44. $content2 = explode(",",iconv("gbk","utf-8",$content1[$i]));
  45. }
  46. //解析返回的历史数据
  47. if($i==0){
  48. $date = str_replace("-","",$content2[9]);
  49. $t = explode("-",$content2[9]);
  50. }else{
  51. $date = str_replace("-","",$content2[8]);
  52. $t = explode("-",$content2[8]);
  53. }
  54. $content3 = explode(",",iconv("gbk","utf-8",$content1[$i+1]));
  55. //$date = str_replace(" ","", $date);
  56. //print_r($content3);
  57. //print_r($t);
  58. $date = trim($t[0].$t[1].$t[2]);
  59. $time = mktime(0,0,0,floatval($t[1]),floatval($t[2]),floatval($t[0]));
  60. $data['time'] = $time;
  61. $data['date'] = $date;
  62. $data['code'] = $content3[0];
  63. //$data['name'] = $content3[1];
  64. $data['open'] = floatval($content3[2]);
  65. $data['high'] = floatval($content3[3]);
  66. $data['low'] = floatval($content3[4]);
  67. $data['close'] = floatval($content3[5]);
  68. $data['turnover'] = floatval($content3[6])/1000000;
  69. $data['volume'] = floatval($content3[7]);
  70. $data['weeknum'] = floatval($t[0]).''.date('W',trim($time));
  71. $data['monthnum'] = floatval($t[0]).''.intval(date('m',$time));
  72. //将所要存储的数据放入一个数组中
  73. $stock_name = $content3[1];
  74. if($data['close']==0){
  75. continue;
  76. }
  77. //echo "$date=>$content3[0]";
  78. if(!empty($date)){
  79. //$datas[] = $data;
  80. Stock_info::add($stock_name,$content3[0]);
  81. //将这支股票的股票名称和股票代码存入
  82. K_line::insert($data);
  83. //将这支股票的历史数据存入数据库
  84. //var_dump($data);
  85. $flag = 1;
  86. }
  87. $data = null;
  88. }
  89. //k_line::insertweekandmonth($datas);
  90. }
  91. $content = null;
  92. $content2 = null;
  93. $content3 = null;
  94. return $flag;
  95. }
  96. //获取前复权数据
  97. public function getRec($code, $year){
  98. $stock_code = $code;
  99. $f = substr($stock_code, 0, 1);
  100. if ($f == "6")
  101. {
  102. $stock_code = "0".$code;
  103. }
  104. else
  105. {
  106. $stock_code = "1".$code;
  107. }
  108. $url = "http://img1.money.126.net/data/hs/klinederc/day/history/".$year."/".$stock_code.".json";
  109. echo($url."\n");
  110. $flag = 0;
  111. //echo $stock_code;
  112. //构建所要发送的url
  113. $curlHandle = curl_init();
  114. curl_setopt( $curlHandle , CURLOPT_URL, $url );
  115. curl_setopt( $curlHandle , CURLOPT_RETURNTRANSFER, 1 );
  116. curl_setopt( $curlHandle , CURLOPT_SSL_VERIFYPEER, false);
  117. curl_setopt( $curlHandle , CURLOPT_SSL_VERIFYHOST, false);
  118. curl_setopt( $curlHandle , CURLOPT_TIMEOUT, 10 );
  119. $content = curl_exec($curlHandle);
  120. curl_close( $curlHandle );
  121. $j = json_decode($content);
  122. $data = $j->data;
  123. for ($i = 0; $i < count($data); $i++)
  124. {
  125. $d = $data[$i];
  126. $time = strtotime($d[0]);
  127. $a['time'] = $time;
  128. $a['date'] = $d[0];
  129. $a['code'] = $code;
  130. $a['open'] = floatval($d[1]);
  131. $a['high'] = floatval($d[3]);
  132. $a['low'] = floatval($d[4]);
  133. $a['close'] = floatval($d[2]);
  134. $a['turnover'] = floatval($d[5]);
  135. $a['volume'] = floatval($d[5]);
  136. $a['weeknum'] = $year.''.date('W',trim($time));
  137. $a['monthnum'] = $year.''.intval(date('m',$time));
  138. Rec_k_line::insert($a);
  139. }
  140. return $flag;
  141. }
  142. public function getIndex($code){
  143. /*
  144. if (Index::checkCode($code))
  145. {
  146. return -1;
  147. }
  148. */
  149. $end_date = date("Ymd", time());
  150. $start_date = date("Ymd", time() - 86400*10);
  151. $url = "http://quotes.money.163.com/service/chddata.html?code=".$code."&start=".$start_date."&end=".$end_date."&fields=TOPEN;HIGH;LOW;TCLOSE;VATURNOVER;VOTURNOVER;";
  152. //echo($url);
  153. $flag = 0;
  154. //echo $stock_code;
  155. //构建所要发送的url
  156. $curlHandle = curl_init();
  157. curl_setopt( $curlHandle , CURLOPT_URL, $url );
  158. curl_setopt( $curlHandle , CURLOPT_RETURNTRANSFER, 1 );
  159. curl_setopt( $curlHandle , CURLOPT_SSL_VERIFYPEER, false);
  160. curl_setopt( $curlHandle , CURLOPT_SSL_VERIFYHOST, false);
  161. curl_setopt( $curlHandle , CURLOPT_TIMEOUT, 10 );
  162. $content = curl_exec($curlHandle);
  163. curl_close( $curlHandle );
  164. $content1 = explode("'",$content);
  165. //print_r($content);
  166. if(!empty($content1[1])){
  167. for($i=count($content1)-1;$i>=0;$i--){
  168. if(!empty($content1[$i])){
  169. $content2 = explode(",",iconv("gbk","utf-8",$content1[$i]));
  170. }
  171. //解析返回的历史数据
  172. if($i==0){
  173. $date = str_replace("-","",$content2[9]);
  174. $t = explode("-",$content2[9]);
  175. }else{
  176. $date = str_replace("-","",$content2[8]);
  177. $t = explode("-",$content2[8]);
  178. }
  179. $content3 = explode(",",iconv("gbk","utf-8",$content1[$i+1]));
  180. //$date = str_replace(" ","", $date);
  181. //print_r($content3);
  182. //print_r($t);
  183. $date = trim($t[0].$t[1].$t[2]);
  184. $time = mktime(0,0,0,floatval($t[1]),floatval($t[2]),floatval($t[0]));
  185. $data['time'] = $time;
  186. $data['date'] = $date;
  187. $data['code'] = $content3[0];
  188. //$data['name'] = $content3[1];
  189. $data['open'] = floatval($content3[2]);
  190. $data['high'] = floatval($content3[3]);
  191. $data['low'] = floatval($content3[4]);
  192. $data['close'] = floatval($content3[5]);
  193. $data['turnover'] = floatval($content3[6])/1000000;
  194. $data['volume'] = floatval($content3[7]);
  195. $data['weeknum'] = floatval($t[0]).''.date('W',trim($time));
  196. $data['monthnum'] = floatval($t[0]).''.intval(date('m',$time));
  197. //将所要存储的数据放入一个数组中
  198. $stock_name = $content3[1];
  199. if($data['close']==0){
  200. continue;
  201. }
  202. //echo "$date=>$content3[0]";
  203. if(!empty($date)){
  204. //$datas[] = $data;
  205. Index::add($stock_name,$content3[0]);
  206. //将这支股票的股票名称和股票代码存入
  207. Index_k_line::insert($data);
  208. //将这支股票的历史数据存入数据库
  209. //var_dump($data);
  210. $flag = 1;
  211. }
  212. $data = null;
  213. }
  214. //k_line::insertweekandmonth($datas);
  215. }
  216. $content = null;
  217. $content2 = null;
  218. $content3 = null;
  219. return $flag;
  220. }
  221. //发现新股
  222. public function get_new($code)
  223. {
  224. $info = Stock_info::getInfoByCode($code);
  225. if($info)
  226. {
  227. //echo ("already in\n");
  228. return 0;
  229. }
  230. $time = time();
  231. $url="http://hq.sinajs.cn/list=";
  232. if (strncmp($code, "30",2) == 0)
  233. {
  234. //创业板
  235. $url .= "sz";
  236. }
  237. else if (strncmp($code, "68",2) == 0)
  238. {
  239. //科创板
  240. $url .= "sh";
  241. }
  242. else if (strncmp($code, "60",2) == 0)
  243. {
  244. //主板
  245. $url .= "sh";
  246. }
  247. else if (strncmp($code, "00",2) == 0)
  248. {
  249. //中小板
  250. $url .= "sz";
  251. }
  252. $url .= $code;
  253. $curlHandle = curl_init();
  254. curl_setopt( $curlHandle , CURLOPT_URL, $url );
  255. curl_setopt( $curlHandle , CURLOPT_RETURNTRANSFER, 1 );
  256. curl_setopt( $curlHandle , CURLOPT_SSL_VERIFYPEER, false);
  257. curl_setopt( $curlHandle , CURLOPT_SSL_VERIFYHOST, false);
  258. curl_setopt( $curlHandle , CURLOPT_TIMEOUT, 10 );
  259. $content = curl_exec($curlHandle);
  260. //print_r($content);
  261. curl_close( $curlHandle );
  262. $content1 = explode('"',$content);
  263. //print_r($content1);
  264. if (!$content1 || $content1[1] == "")
  265. {
  266. //echo("no data");
  267. return -1;
  268. }
  269. $content2 = explode(",",iconv("gb2312","utf-8",$content1[1]));
  270. //print_r($content2);
  271. Stock_info::add($content2[0],$code);
  272. return 0;
  273. }
  274. public function getIndexKLine($code)
  275. {
  276. //填入指数日K信息
  277. $time = time();
  278. $url="http://hq.sinajs.cn/list=";
  279. if (strncmp($code, "3",1) == 0)
  280. {
  281. //创业板
  282. $url .= "sz";
  283. }
  284. else if (strncmp($code, "0",1) == 0)
  285. {
  286. //科创板
  287. $url .= "sh";
  288. }
  289. $url .= $code;
  290. //echo($url."\n");
  291. $curlHandle = curl_init();
  292. curl_setopt( $curlHandle , CURLOPT_URL, $url );
  293. curl_setopt( $curlHandle , CURLOPT_RETURNTRANSFER, 1 );
  294. curl_setopt( $curlHandle , CURLOPT_SSL_VERIFYPEER, false);
  295. curl_setopt( $curlHandle , CURLOPT_SSL_VERIFYHOST, false);
  296. curl_setopt( $curlHandle , CURLOPT_TIMEOUT, 10 );
  297. $content = curl_exec($curlHandle);
  298. //print_r($content);
  299. curl_close( $curlHandle );
  300. $content1 = explode('"',$content);
  301. //print_r($content1);
  302. if (!$content1 || $content1[1] == "")
  303. {
  304. //echo("no data");
  305. return -1;
  306. }
  307. $content2 = explode(",",iconv("gb2312","utf-8",$content1[1]));
  308. $t = explode("-",$content2[30]);
  309. $date1 =trim($t[0].$t[1].$t[2]);
  310. $time = mktime(0,0,0,floatval($t[1]),floatval($t[2]),floatval($t[0]));
  311. $close = floatval($content2[3]);
  312. $volume = floatval($content2[8]);
  313. $turnover = floatval($content2[9]/10000);
  314. $data2['code'] = $code;
  315. $data2['date'] = $date1;
  316. $data2['time'] = $time;
  317. $data2['open'] = floatval($content2[1]);
  318. $data2['high'] = floatval($content2[4]);
  319. $data2['low'] = floatval($content2[5]);
  320. $data2['close'] = floatval($close);
  321. $data2['volume'] = 0;//floatval($volume);//成交量(手=100股)
  322. $data2['turnover'] = 0;//floatval($turnover);//成交额 = 当前价格*当前交易股数
  323. $data2['weeknum'] = floatval($t[0]).''.date('W',trim($time));
  324. $data2['monthnum'] = floatval($t[0]).''.intval(date('m',$time));
  325. //print_r($data2);
  326. Index_k_line::insert($data2);
  327. return 0;
  328. }
  329. }
  330. ?>