wanggangtao hace 5 años
padre
commit
726d38232e

+ 10 - 24
lib/day_k.class.php

@@ -6,36 +6,27 @@
  * @author		王刚涛
  * 日线数据
  */
-class Day_k_base {
+class Day_k {
 
-    public function __construct()
-    {
 
-    }
 
     static public function getInfoById($id)
     {
-        $Table_day_k_base = new Table_day_k_base();
-        return $Table_day_k_base->getInfoById($id);
+        $Table_day_k = new Table_day_k();
+        return $Table_day_k->getInfoById($id);
     }
 
 
-    static public function add($attrs,$date=0)
+    static public function add($attrs)
     {
-        if (empty($attrs)) throw new Exception('参数不能为空', 102);
-        if($date===0)
-        {
-            $date=strtotime(date('Ym'));
-        }
-        $Table_day_k_base = new Table_day_k_base($date);
-        return $Table_day_k_base->add($attrs);
-
+        $Table_day_k = new Table_day_k();
+        return $Table_day_k->add($attrs);
     }
 
     static public function getList($filter = array(), $count=0, $page=0, $pageSize=0)
     {
-        $Table_day_k_base = new Table_day_k_base();
-        return $Table_day_k_base->getList($filter, $count, $page, $pageSize);
+        $Table_day_k = new Table_day_k();
+        return $Table_day_k->getList($filter, $count, $page, $pageSize);
     }
 
     /***
@@ -47,13 +38,8 @@ class Day_k_base {
      */
     static public function insert($attrs,$date=0)
     {
-        if (empty($attrs)) throw new Exception('参数不能为空', 102);
-        if($date===0)
-        {
-            $date=strtotime(date('Ymd'));
-        }
-        $Table_day_k_base = new Table_day_k_base($date);
-        $id = $Table_day_k_base->insert($attrs);
+        $Table_day_k = new Table_day_k($date);
+        $id = $Table_day_k->insert($attrs);
         return $id;
     }
 

+ 70 - 0
lib/inputSinaDayK.class.php

@@ -0,0 +1,70 @@
+<?php
+/**
+ * @author:王刚涛
+ * 用于获取当天各种指数
+ * http://hq.sinajs.cn/list=s_sz000002
+ */
+
+
+class InputSinaDayK
+{
+
+    /****
+     * @param $url
+     * @return array|bool|string
+     * 对curl_setopt进行封装,消除代码冗余
+     */
+    static private function curl_get_data($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);//防止中文乱码
+        $content2 = iconv("gbk", "utf-8", $content);//子串
+        $content3 = substr($content2, stripos($content2, "=\"") + 2); //获取 var hq_str_sz000002="万 科A,30.780,30.800,30.510,  ="之后部分
+        $content4 = substr($content3, 0, strripos($content3, "\";")); //获取     万 科A,30.94,0.14,0.45,584039,178827";         ";之前部分
+        $content5 = explode(",", $content4);//分割
+        return $content5;
+    }
+
+
+    /***
+     * @param $code
+     * @param $date
+     * @return mixed
+     * 日k线表 day_k_******(每月存一张表,比如boniu_day_k_202011)
+     * 抓取当天的数据,结合163的接口
+     *
+     */
+    static public function get_day_k($code, $exchange)
+    {
+        $stock_code= $exchange.$code;
+        $url = "http://hq.sinajs.cn/list=" . $stock_code;
+        $content3=self::curl_get_data($url);//封装为函数,
+        if (empty($content3))
+        {
+            throw new Exception('抓取的数据不能为空', 102);
+        }
+
+        $data['timestamp'] = time();
+        $data['date'] = (int) date("Ymd",time());
+        $data['code'] = $code;//股票代码此时去掉sh,sz
+        $data['name'] = $content3[0];
+        $data['open_price'] = floatval($content3[1]);//开盘价
+        $data['close_price'] = floatval($content3[3]);//3点之后的当前价格就是收盘价
+        $data['hightest_price'] = floatval($content3[4]);//今日最高价
+        $data['lowest_price'] = floatval($content3[5]);//今日最低价
+        $data['amount'] = floatval($content3[8]);//成交的股票数,以百为单位
+        $data['value'] = floatval($content3[9]);//成交金额以万为单位
+
+
+        return Day_k::add($data);
+    }
+
+
+}
+
+?>

+ 2 - 2
lib/stock.class.php

@@ -9,10 +9,10 @@
 class Stock {
 
 
-    static public function getStockCodeList($id)
+    static public function getStockCodeList()
     {
         $Table_stock = new Table_stock();
-        return $Table_stock->getStockCodeList($id);
+        return $Table_stock->getStockCodeList();
     }
 
     static public function getInfoById($id)

+ 39 - 53
lib/table/table_day_k.class.php

@@ -7,65 +7,49 @@
  * Time: 14:51
  */
 
-class Table_day_k_base extends Table {
+class Table_day_k extends Table {
 
     protected $base  = "";              //分表的后缀日期,在进行数据库操作的时候"Table_day_k_".$base
-    protected $table_name       = "day_k_";//表名,不带前缀,前缀在config中定义
+    protected $table_name       = "day_k";//表名,不带前缀,前缀在config中定义
     protected $table_id         = "day_k_id";//指定ID字段名称,必须
     protected $table_status     = '';//指定状态字段名称,如果有
     protected $table_order      = '';//指定排序字段名称,如果有
-    protected $table_fullname    = "day_k_";//拼接好后表名  后面拼接日期  day_k_202011
 
 	//数据库结构
 	protected function struct(){
 		$attr = array();
-		$attr['id']                 = 'day_k_id';
-		$attr['date']               = 'day_k_date';
-		$attr['code']               = 'day_k_code';
-        $attr['name']               = 'day_k_name';
-        $attr['open_price']         = 'day_k_open_price';
-        $attr['close_price']        = 'day_k_close_price';
-        $attr['hightest_price']     = 'day_k_hightest_price';
-        $attr['lowest_price']       = 'day_k_lowest_price';
-        $attr['increase_price']     = 'day_k_increase_price';
-        $attr['increase_value']     = 'day_k_increase_value';
-        $attr['turnover']           = 'day_k_turnover';
-        $attr['amount']             = 'day_k_amount';
-        $attr['value']              = 'day_k_value';
-        $attr['open_price_qfq']     = 'day_k_open_price_qfq';
-        $attr['close_price_qfq']    = 'day_k_close_price_qfq';
-        $attr['hightest_price_qfq'] = 'day_k_hightest_price_qfq';
-        $attr['lowest_price_qfq']   = 'day_k_lowest_price_qfq';
-        $attr['m10']                = 'day_k_m10';
-        $attr['m20']                = 'day_k_m20';
-        $attr['m60']                = 'day_k_m60';
-        $attr['kdj']                = 'day_k_kdj';
-        $attr['macd']               = 'day_k_macd';
-        $attr['rsi']                = 'day_k_rsi';
+		$attr['id']                              = 'day_k_id';
+        $attr['timestamp']                       = 'day_k_timestamp';
+		$attr['date']                            = 'day_k_date';
+		$attr['code']                            = 'day_k_code';
+        $attr['name']                            = 'day_k_name';
+        $attr['open_price']                      = 'day_k_open_price';
+        $attr['close_price']                     = 'day_k_close_price';
+        $attr['hightest_price']                  = 'day_k_hightest_price';
+        $attr['lowest_price']                    = 'day_k_lowest_price';
+        $attr['increase_price']                  = 'day_k_increase_price';
+        $attr['increase_ratio']                  = 'day_k_increase_ratio';
+        $attr['turnover']                        = 'day_k_turnover';
+        $attr['amount']                          = 'day_k_amount';
+        $attr['value']                           = 'day_k_value';
+        $attr['m5']                              = 'day_k_m5';
+        $attr['m10']                             = 'day_k_m10';
+        $attr['m20']                             = 'day_k_m20';
+        $attr['m30']                             = 'day_k_m30';
+        $attr['m60']                             = 'day_k_m60';
+        $attr['m233']                            = 'day_k_m233';
+        $attr['day_k_tradable_amount']           = 'tradable_amount';
+        $attr['day_k_tradable_value']           = 'tradable_value';
+        $attr['day_k_total_amount']             = 'total_amount';
+        $attr['day_k_total_value']              = 'total_value';
+        $attr['day_k_profitable']               = 'profitable';
+        $attr['day_k_pb']                       = 'pb';
+        $attr['day_k_pe_static']                = 'pe_static';
+        $attr['day_k_pe_dynamic']               = 'pe_dynamic';
+        $attr['day_k_pe_ttm']                   = 'pe_ttm';
 		return $attr;
 	}
 
-    /***
-     * Table_day_k_base constructor.
-     * 构造函数,动态获取表的后缀年月
-     * 王刚涛
-     */
-    public function __construct($date) {
-        parent::__construct();
-        $this->table_name .= $date;//表名不代前缀
-        $this->table_fullname .= $date;//表名代前缀
-        $this ->createBaseTable();
-    }
-
-    /****
-     *在构造函数中调用该函数,自动创建表
-     * 王刚涛
-     */
-     public function createBaseTable(){
-         global $mypdo;
-         $sql = " CREATE TABLE IF NOT EXISTS `". $this->table_fullname."` LIKE  boniu_day_k_base";
-         $mypdo->pdo->exec($sql);
-     }
 
     /****
      * @param $attr
@@ -74,8 +58,10 @@ class Table_day_k_base extends Table {
      */
     public function add($attr){
         $param = array (
-             'day_k_date'    => array('number', strtotime($attr['date'])),
-             'day_k_code'    => array('number', $attr['code']),
+
+        'day_k_timestamp '    => array('number', $attr['timestamp']),
+             'day_k_date'    => array('number', $attr['date']),
+             'day_k_code'    => array('string', $attr['code']),
              'day_k_name'    => array('string', $attr['name']),
             'day_k_open_price'    => array('number', $attr['open_price']),
              'day_k_close_price'    => array('number', $attr['close_price']),
@@ -83,10 +69,10 @@ class Table_day_k_base extends Table {
              'day_k_lowest_price'    => array('number', $attr['lowest_price']),
              'day_k_amount'    => array('number', $attr['amount']),
              'day_k_value'    => array('number', $attr['value']),
-            'day_k_close_price_qfq'    => array('number', $attr['close_price_qfq']),
-            'day_k_increase_price'    => array('number', $attr['increase_price']),
-            'day_k_increase_value'    => array('number', $attr['increase_value']),
-            'day_k_turnover'    => array('number', $attr['turnover']),
+//            'day_k_close_price_qfq'    => array('number', $attr['close_price_qfq']),
+//            'day_k_increase_price'    => array('number', $attr['increase_price']),
+//            'day_k_increase_value'    => array('number', $attr['increase_value']),
+//            'day_k_turnover'    => array('number', $attr['turnover']),
         );
         return $this->pdo->sqlinsert($this->table_fullname, $param);
     }

+ 3 - 2
lib/table/table_stock.class.php

@@ -50,12 +50,12 @@ class Table_stock extends Table {
     public function getStockCodeList(){
 
         $where="where 1=1";
-        $sql = "select "."`stock_code`". "from ". $this->table_fullname ." $where order by ".$this->table_id." asc";
+        $sql = "select "."`*`". "from ". $this->table_fullname ." $where order by ".$this->table_id." asc";
         $rs  = $this->pdo->sqlQuery($sql);
         $r  = array();
         if($rs){
             foreach($rs as $key => $val){
-                $r[$key] =$val["stock_code"];
+                $r[$key] = $this->dataToAttr($val);
             }
             return $r;
         }else{
@@ -64,6 +64,7 @@ class Table_stock extends Table {
     }
 
 
+
     public function getInfoByCode($code){
 
         //查询语句必须用sql_check_input检查参数

+ 17 - 0
task/task_get_day_k_stock.php

@@ -0,0 +1,17 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: 王刚涛
+ * Date: 2020/12/1
+ * Time: 19:35
+ * 获取股票的日K数据
+ */
+require('../init.php');
+$codeList=Stock::getStockCodeList();//获取股票代码
+
+foreach ($codeList as $key=>$value){
+    inputSinaDayK::get_day_k($value["code"],$value["exchange"]);
+}
+
+
+?>