久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

[python]解析通達信盤后數(shù)據(jù)獲取歷史日線數(shù)據(jù)

 imelee 2017-03-17

轉自:http://bbs./forum.php?mod=viewthread&tid=4804415&page=1

平時我們在做 離線的模型 回溯測試時候,需要歷史的k線數(shù)據(jù),。

可是通達信 的日線數(shù)據(jù)如下:
日線數(shù)據(jù)在

通達信的安裝目錄: vipdoc\sh\lday  下面


本地的通達信 是沒有開放api和外部的  自己的交易回溯測試 工具或框架 進行交互的,。

雖然 我們也可以  通過 sina 的api ,或者 yahoo,,或者 juhe聚合數(shù)據(jù),,或者 wind 或者 tushare (http:///index.html),或者 通聯(lián)金融大數(shù)據(jù)  等 網(wǎng)絡的api接口 獲取  股票的 歷史K線數(shù)據(jù),,  但是網(wǎng)絡的開銷總是會比較耗時一些,。

其實可以通過 Python來 解析 通達信  的這些 day 文件的數(shù)據(jù),變成 我們熟悉的csv格式的數(shù)據(jù),。

[python] view plain copy
在CODE上查看代碼片派生到我的代碼片
  1. #!/usr/bin/python    
  2. def exactStock(fileName, code):  
  3.     ofile = open(fileName,'rb')  
  4.     buf=ofile.read()  
  5.     ofile.close()  
  6.     num=len(buf)  
  7.     no=num/32  
  8.     b=0  
  9.     e=32  
  10.     items = list()   
  11.     for i in range(int(no)):  
  12.         a=unpack('IIIIIfII',buf[b:e])  
  13.         year = int(a[0]/10000);  
  14.         m = int((a[0]%10000)/100);  
  15.         month = str(m);  
  16.         if m <10 :  
  17.             month = "0" + month;  
  18.         d = (a[0]%10000)%100;  
  19.         day=str(d);  
  20.         if d< 10 :  
  21.             day = "0" + str(d);  
  22.         dd = str(year)+"-"+month+"-"+day  
  23.         openPrice = a[1]/100.0  
  24.         high = a[2]/100.0  
  25.         low =  a[3]/100.0  
  26.         close = a[4]/100.0  
  27.         amount = a[5]/10.0  
  28.         vol = a[6]  
  29.         unused = a[7]  
  30.         if i == 0 :  
  31.             preClose = close  
  32.         ratio = round((close - preClose)/preClose*100, 2)  
  33.         preClose = close  
  34.         item=[code, dd, str(openPrice), str(high), str(low), str(close), str(ratio), str(amount), str(vol)]  
  35.         items.append(item)  
  36.         b=b+32  
  37.         e=e+32  
  38.           
  39.     return items  
  40.   
  41. exactStock('E:\\new_tdx\\vipdoc\\sh\\lday\\sh000001.day',"000001")  

然后調用 這個方法,,就可以把day文件變成csv文件,方便pandas來處理,。


(在調用這個py文件前,, 先在通達信的 軟件 菜單里面 ,把通達信的 歷史日K線數(shù)據(jù)都下載到本地,,一次即可下載整個市場所有股票品種的數(shù)據(jù),。。)

批量處理的,,請參考下面腳本
調用示例:
pathdir='/vipdoc/sh/lday'
targetDir='/python_data_gupiao/sh/lday'
listfile=os.listdir(pathdir)
for in listfile:
      day2csv_data(pathdir,f,targetDir)


最終的效果如下:



打開這些文件如下:

是不是很熟悉的csv或者excel的格式,。,。,。

這個格式的數(shù)據(jù),


大家就 可以用  python的數(shù)據(jù)分析的庫 pandas 的 pd.read_csv 方法來讀取了,。

這樣速度回比較快,,而且python調用 通達信的歷史數(shù)據(jù) ,就很方便了,。


    本站是提供個人知識管理的網(wǎng)絡存儲空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導購買等信息,謹防詐騙,。如發(fā)現(xiàn)有害或侵權內(nèi)容,,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多