|
|
@@ -0,0 +1,374 @@
|
|
|
+<?php
|
|
|
+/**
|
|
|
+ * @author:王刚涛
|
|
|
+ * 用于获取 并存入数据库,通过$url,可以设置需要获取的时间段
|
|
|
+ */
|
|
|
+error_reporting( E_ALL&~E_NOTICE );
|
|
|
+
|
|
|
+
|
|
|
+class netEasy
|
|
|
+{
|
|
|
+public function get($code){
|
|
|
+ $stock_code = $code;
|
|
|
+ if (Stock_info::checkCode($code))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+ $end_date = date("Ymd", time());
|
|
|
+ $f = substr($stock_code, 0, 1);
|
|
|
+ if ($f == "6")
|
|
|
+ {
|
|
|
+ $stock_code = "0".$code;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ $stock_code = "1".$code;
|
|
|
+ }
|
|
|
+ $start_date = date("Ymd", time() - 86400*10);
|
|
|
+ $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;";
|
|
|
+//echo($url);
|
|
|
+ $flag = 0;
|
|
|
+ //echo $stock_code;
|
|
|
+ //构建所要发送的url
|
|
|
+ $curlHandle = curl_init();
|
|
|
+ curl_setopt( $curlHandle , CURLOPT_URL, $url );
|
|
|
+ curl_setopt( $curlHandle , CURLOPT_RETURNTRANSFER, 1 );
|
|
|
+ curl_setopt( $curlHandle , CURLOPT_SSL_VERIFYPEER, false);
|
|
|
+ curl_setopt( $curlHandle , CURLOPT_SSL_VERIFYHOST, false);
|
|
|
+ curl_setopt( $curlHandle , CURLOPT_TIMEOUT, 10 );
|
|
|
+ $content = curl_exec($curlHandle);
|
|
|
+ curl_close( $curlHandle );
|
|
|
+ $content1 = explode("'",$content);
|
|
|
+//print_r($content);
|
|
|
+ if(!empty($content1[1])){
|
|
|
+
|
|
|
+ for($i=count($content1)-1;$i>=0;$i--){
|
|
|
+
|
|
|
+ if(!empty($content1[$i])){
|
|
|
+ $content2 = explode(",",iconv("gbk","utf-8",$content1[$i]));
|
|
|
+ }
|
|
|
+ //解析返回的历史数据
|
|
|
+ if($i==0){
|
|
|
+ $date = str_replace("-","",$content2[9]);
|
|
|
+ $t = explode("-",$content2[9]);
|
|
|
+ }else{
|
|
|
+ $date = str_replace("-","",$content2[8]);
|
|
|
+
|
|
|
+ $t = explode("-",$content2[8]);
|
|
|
+ }
|
|
|
+ $content3 = explode(",",iconv("gbk","utf-8",$content1[$i+1]));
|
|
|
+ //$date = str_replace(" ","", $date);
|
|
|
+ //print_r($content3);
|
|
|
+ //print_r($t);
|
|
|
+ $date = trim($t[0].$t[1].$t[2]);
|
|
|
+ $time = mktime(0,0,0,floatval($t[1]),floatval($t[2]),floatval($t[0]));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ $data['time'] = $time;
|
|
|
+ $data['date'] = $date;
|
|
|
+ $data['code'] = $content3[0];
|
|
|
+ //$data['name'] = $content3[1];
|
|
|
+ $data['open'] = floatval($content3[2]);
|
|
|
+ $data['high'] = floatval($content3[3]);
|
|
|
+ $data['low'] = floatval($content3[4]);
|
|
|
+ $data['close'] = floatval($content3[5]);
|
|
|
+ $data['turnover'] = floatval($content3[6])/1000000;
|
|
|
+ $data['volume'] = floatval($content3[7]);
|
|
|
+ $data['weeknum'] = floatval($t[0]).''.date('W',trim($time));
|
|
|
+ $data['monthnum'] = floatval($t[0]).''.intval(date('m',$time));
|
|
|
+ //将所要存储的数据放入一个数组中
|
|
|
+ $stock_name = $content3[1];
|
|
|
+ if($data['close']==0){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ //echo "$date=>$content3[0]";
|
|
|
+ if(!empty($date)){
|
|
|
+
|
|
|
+ //$datas[] = $data;
|
|
|
+ Stock_info::add($stock_name,$content3[0]);
|
|
|
+ //将这支股票的股票名称和股票代码存入
|
|
|
+ K_line::insert($data);
|
|
|
+ //将这支股票的历史数据存入数据库
|
|
|
+ //var_dump($data);
|
|
|
+ $flag = 1;
|
|
|
+ }
|
|
|
+ $data = null;
|
|
|
+ }
|
|
|
+ //k_line::insertweekandmonth($datas);
|
|
|
+ }
|
|
|
+ $content = null;
|
|
|
+ $content2 = null;
|
|
|
+ $content3 = null;
|
|
|
+ return $flag;
|
|
|
+ }
|
|
|
+
|
|
|
+//获取前复权数据
|
|
|
+public function getRec($code, $year){
|
|
|
+ $stock_code = $code;
|
|
|
+ $f = substr($stock_code, 0, 1);
|
|
|
+ if ($f == "6")
|
|
|
+ {
|
|
|
+ $stock_code = "0".$code;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ $stock_code = "1".$code;
|
|
|
+ }
|
|
|
+ $url = "http://img1.money.126.net/data/hs/klinederc/day/history/".$year."/".$stock_code.".json";
|
|
|
+echo($url."\n");
|
|
|
+ $flag = 0;
|
|
|
+ //echo $stock_code;
|
|
|
+ //构建所要发送的url
|
|
|
+ $curlHandle = curl_init();
|
|
|
+ curl_setopt( $curlHandle , CURLOPT_URL, $url );
|
|
|
+ curl_setopt( $curlHandle , CURLOPT_RETURNTRANSFER, 1 );
|
|
|
+ curl_setopt( $curlHandle , CURLOPT_SSL_VERIFYPEER, false);
|
|
|
+ curl_setopt( $curlHandle , CURLOPT_SSL_VERIFYHOST, false);
|
|
|
+ curl_setopt( $curlHandle , CURLOPT_TIMEOUT, 10 );
|
|
|
+ $content = curl_exec($curlHandle);
|
|
|
+ curl_close( $curlHandle );
|
|
|
+ $j = json_decode($content);
|
|
|
+ $data = $j->data;
|
|
|
+ for ($i = 0; $i < count($data); $i++)
|
|
|
+ {
|
|
|
+ $d = $data[$i];
|
|
|
+ $time = strtotime($d[0]);
|
|
|
+ $a['time'] = $time;
|
|
|
+ $a['date'] = $d[0];
|
|
|
+ $a['code'] = $code;
|
|
|
+ $a['open'] = floatval($d[1]);
|
|
|
+ $a['high'] = floatval($d[3]);
|
|
|
+ $a['low'] = floatval($d[4]);
|
|
|
+ $a['close'] = floatval($d[2]);
|
|
|
+ $a['turnover'] = floatval($d[5]);
|
|
|
+ $a['volume'] = floatval($d[5]);
|
|
|
+ $a['weeknum'] = $year.''.date('W',trim($time));
|
|
|
+ $a['monthnum'] = $year.''.intval(date('m',$time));
|
|
|
+ Rec_k_line::insert($a);
|
|
|
+ }
|
|
|
+ return $flag;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+public function getIndex($code){
|
|
|
+ /*
|
|
|
+ if (Index::checkCode($code))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+ */
|
|
|
+ $end_date = date("Ymd", time());
|
|
|
+ $start_date = date("Ymd", time() - 86400*10);
|
|
|
+
|
|
|
+ $url = "http://quotes.money.163.com/service/chddata.html?code=".$code."&start=".$start_date."&end=".$end_date."&fields=TOPEN;HIGH;LOW;TCLOSE;VATURNOVER;VOTURNOVER;";
|
|
|
+//echo($url);
|
|
|
+ $flag = 0;
|
|
|
+ //echo $stock_code;
|
|
|
+ //构建所要发送的url
|
|
|
+ $curlHandle = curl_init();
|
|
|
+ curl_setopt( $curlHandle , CURLOPT_URL, $url );
|
|
|
+ curl_setopt( $curlHandle , CURLOPT_RETURNTRANSFER, 1 );
|
|
|
+ curl_setopt( $curlHandle , CURLOPT_SSL_VERIFYPEER, false);
|
|
|
+ curl_setopt( $curlHandle , CURLOPT_SSL_VERIFYHOST, false);
|
|
|
+ curl_setopt( $curlHandle , CURLOPT_TIMEOUT, 10 );
|
|
|
+ $content = curl_exec($curlHandle);
|
|
|
+ curl_close( $curlHandle );
|
|
|
+ $content1 = explode("'",$content);
|
|
|
+//print_r($content);
|
|
|
+ if(!empty($content1[1])){
|
|
|
+
|
|
|
+ for($i=count($content1)-1;$i>=0;$i--){
|
|
|
+
|
|
|
+ if(!empty($content1[$i])){
|
|
|
+ $content2 = explode(",",iconv("gbk","utf-8",$content1[$i]));
|
|
|
+ }
|
|
|
+ //解析返回的历史数据
|
|
|
+ if($i==0){
|
|
|
+ $date = str_replace("-","",$content2[9]);
|
|
|
+ $t = explode("-",$content2[9]);
|
|
|
+ }else{
|
|
|
+ $date = str_replace("-","",$content2[8]);
|
|
|
+
|
|
|
+ $t = explode("-",$content2[8]);
|
|
|
+ }
|
|
|
+ $content3 = explode(",",iconv("gbk","utf-8",$content1[$i+1]));
|
|
|
+ //$date = str_replace(" ","", $date);
|
|
|
+ //print_r($content3);
|
|
|
+ //print_r($t);
|
|
|
+ $date = trim($t[0].$t[1].$t[2]);
|
|
|
+ $time = mktime(0,0,0,floatval($t[1]),floatval($t[2]),floatval($t[0]));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ $data['time'] = $time;
|
|
|
+ $data['date'] = $date;
|
|
|
+ $data['code'] = $content3[0];
|
|
|
+ //$data['name'] = $content3[1];
|
|
|
+ $data['open'] = floatval($content3[2]);
|
|
|
+ $data['high'] = floatval($content3[3]);
|
|
|
+ $data['low'] = floatval($content3[4]);
|
|
|
+ $data['close'] = floatval($content3[5]);
|
|
|
+ $data['turnover'] = floatval($content3[6])/1000000;
|
|
|
+ $data['volume'] = floatval($content3[7]);
|
|
|
+ $data['weeknum'] = floatval($t[0]).''.date('W',trim($time));
|
|
|
+ $data['monthnum'] = floatval($t[0]).''.intval(date('m',$time));
|
|
|
+ //将所要存储的数据放入一个数组中
|
|
|
+ $stock_name = $content3[1];
|
|
|
+ if($data['close']==0){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ //echo "$date=>$content3[0]";
|
|
|
+ if(!empty($date)){
|
|
|
+
|
|
|
+ //$datas[] = $data;
|
|
|
+ Index::add($stock_name,$content3[0]);
|
|
|
+ //将这支股票的股票名称和股票代码存入
|
|
|
+ Index_k_line::insert($data);
|
|
|
+ //将这支股票的历史数据存入数据库
|
|
|
+ //var_dump($data);
|
|
|
+ $flag = 1;
|
|
|
+ }
|
|
|
+ $data = null;
|
|
|
+ }
|
|
|
+ //k_line::insertweekandmonth($datas);
|
|
|
+ }
|
|
|
+ $content = null;
|
|
|
+ $content2 = null;
|
|
|
+ $content3 = null;
|
|
|
+ return $flag;
|
|
|
+ }
|
|
|
+
|
|
|
+//发现新股
|
|
|
+public function get_new($code)
|
|
|
+{
|
|
|
+ $info = Stock_info::getInfoByCode($code);
|
|
|
+ if($info)
|
|
|
+ {
|
|
|
+ //echo ("already in\n");
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ $time = time();
|
|
|
+ $url="http://hq.sinajs.cn/list=";
|
|
|
+ if (strncmp($code, "30",2) == 0)
|
|
|
+ {
|
|
|
+ //创业板
|
|
|
+ $url .= "sz";
|
|
|
+ }
|
|
|
+ else if (strncmp($code, "68",2) == 0)
|
|
|
+ {
|
|
|
+ //科创板
|
|
|
+ $url .= "sh";
|
|
|
+ }
|
|
|
+ else if (strncmp($code, "60",2) == 0)
|
|
|
+ {
|
|
|
+ //主板
|
|
|
+ $url .= "sh";
|
|
|
+ }
|
|
|
+ else if (strncmp($code, "00",2) == 0)
|
|
|
+ {
|
|
|
+ //中小板
|
|
|
+ $url .= "sz";
|
|
|
+ }
|
|
|
+ $url .= $code;
|
|
|
+
|
|
|
+ $curlHandle = curl_init();
|
|
|
+ curl_setopt( $curlHandle , CURLOPT_URL, $url );
|
|
|
+
|
|
|
+
|
|
|
+ curl_setopt( $curlHandle , CURLOPT_RETURNTRANSFER, 1 );
|
|
|
+ curl_setopt( $curlHandle , CURLOPT_SSL_VERIFYPEER, false);
|
|
|
+ curl_setopt( $curlHandle , CURLOPT_SSL_VERIFYHOST, false);
|
|
|
+ curl_setopt( $curlHandle , CURLOPT_TIMEOUT, 10 );
|
|
|
+
|
|
|
+ $content = curl_exec($curlHandle);
|
|
|
+
|
|
|
+//print_r($content);
|
|
|
+ curl_close( $curlHandle );
|
|
|
+ $content1 = explode('"',$content);
|
|
|
+
|
|
|
+//print_r($content1);
|
|
|
+ if (!$content1 || $content1[1] == "")
|
|
|
+ {
|
|
|
+//echo("no data");
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+ $content2 = explode(",",iconv("gb2312","utf-8",$content1[1]));
|
|
|
+//print_r($content2);
|
|
|
+ Stock_info::add($content2[0],$code);
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+public function getIndexKLine($code)
|
|
|
+{
|
|
|
+ //填入指数日K信息
|
|
|
+ $time = time();
|
|
|
+ $url="http://hq.sinajs.cn/list=";
|
|
|
+ if (strncmp($code, "3",1) == 0)
|
|
|
+ {
|
|
|
+ //创业板
|
|
|
+ $url .= "sz";
|
|
|
+ }
|
|
|
+ else if (strncmp($code, "0",1) == 0)
|
|
|
+ {
|
|
|
+ //科创板
|
|
|
+ $url .= "sh";
|
|
|
+ }
|
|
|
+
|
|
|
+ $url .= $code;
|
|
|
+//echo($url."\n");
|
|
|
+ $curlHandle = curl_init();
|
|
|
+ curl_setopt( $curlHandle , CURLOPT_URL, $url );
|
|
|
+
|
|
|
+
|
|
|
+ curl_setopt( $curlHandle , CURLOPT_RETURNTRANSFER, 1 );
|
|
|
+ curl_setopt( $curlHandle , CURLOPT_SSL_VERIFYPEER, false);
|
|
|
+ curl_setopt( $curlHandle , CURLOPT_SSL_VERIFYHOST, false);
|
|
|
+ curl_setopt( $curlHandle , CURLOPT_TIMEOUT, 10 );
|
|
|
+
|
|
|
+ $content = curl_exec($curlHandle);
|
|
|
+
|
|
|
+//print_r($content);
|
|
|
+ curl_close( $curlHandle );
|
|
|
+ $content1 = explode('"',$content);
|
|
|
+
|
|
|
+//print_r($content1);
|
|
|
+ if (!$content1 || $content1[1] == "")
|
|
|
+ {
|
|
|
+//echo("no data");
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+ $content2 = explode(",",iconv("gb2312","utf-8",$content1[1]));
|
|
|
+ $t = explode("-",$content2[30]);
|
|
|
+ $date1 =trim($t[0].$t[1].$t[2]);
|
|
|
+
|
|
|
+ $time = mktime(0,0,0,floatval($t[1]),floatval($t[2]),floatval($t[0]));
|
|
|
+
|
|
|
+
|
|
|
+ $close = floatval($content2[3]);
|
|
|
+ $volume = floatval($content2[8]);
|
|
|
+ $turnover = floatval($content2[9]/10000);
|
|
|
+
|
|
|
+ $data2['code'] = $code;
|
|
|
+ $data2['date'] = $date1;
|
|
|
+ $data2['time'] = $time;
|
|
|
+ $data2['open'] = floatval($content2[1]);
|
|
|
+ $data2['high'] = floatval($content2[4]);
|
|
|
+ $data2['low'] = floatval($content2[5]);
|
|
|
+ $data2['close'] = floatval($close);
|
|
|
+ $data2['volume'] = 0;//floatval($volume);//成交量(手=100股)
|
|
|
+ $data2['turnover'] = 0;//floatval($turnover);//成交额 = 当前价格*当前交易股数
|
|
|
+ $data2['weeknum'] = floatval($t[0]).''.date('W',trim($time));
|
|
|
+ $data2['monthnum'] = floatval($t[0]).''.intval(date('m',$time));
|
|
|
+//print_r($data2);
|
|
|
+ Index_k_line::insert($data2);
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ ?>
|