量化分析:把Tushare數據源,規整成PyalgoTrade所需格式

量化分析:把Tushare數據源,規整成PyalgoTrade所需格式

分析A股歷史數據,首先須要肯定數據來源。若是隻想作日k線、周k線的技術分析,能夠用PyalgoTrade直接從yahoo、google等下載數據,用不着Tushare。可是,若是想作分鐘k線的技術分析,或者想了解基本面和消息面的數據,就用得着Tushare了。python

PyalgoTrade使用的基本數據格式有兩種,一是Yahoo格式,二是NinjaTrader格式。google

Yahoo格式的數據分段爲:spa

  • 日線數據:Date,Open,High,Low,Close,Volume,Adj Close
  • 分鐘數據:Date Time,Open,High,Low,Close,Volume,Adj Close

Tushare提供的數據格式,日k線、分鐘線均爲:.net

  • date:日期
  • open:開盤價
  • high:最高價
  • close:收盤價
  • low:最低價
  • volume:成交量
  • price_change:價格變更
  • p_change:漲跌幅
  • ma5:5日均價
  • ma10:10日均價
  • ma20:20日均價
  • v_ma5:5日均量
  • v_ma10:10日均量
  • v_ma20:20日均量
  • turnover:換手率[注:指數無此項]

把Tushar數據轉換成Yahoo格式,本來很簡單。但我對Pandas不熟,只好找來相關pdf書,加上Baidu,在Jupyter Notebook中,邊學邊練,實驗屢次,最終搞定。blog

 

[python]  view plain  copy
 
  1. import tushare as ts  
  2. import pandas as pd  
  3.   
  4. # 獲得15分鐘數據(股票300336,始於2016-01-01,止於2016-05-24,15分鐘數據)  
  5. data = ts.get_hist_data('300336','2016-01-01','2016-05-24','15')  
  6. # 數據存盤  
  7. data.to_csv('15-300336-2016.csv')  
  8. # 讀出數據,DataFrame格式  
  9. df = pd.read_csv('15-300336-2016.csv')  
  10. # 從df中選取數據段,改變段名;新段'Adj Close'使用原有段'close'的數據  
  11. df2 = pd.DataFrame({'Date Time' : df['date'], 'Open' : df['open'],  
  12.                     'High' : df['high'],'Close' : df['close'],  
  13.                     'Low' : df['low'],'Volume' : df['volume'],  
  14.                     'Adj Close':df['close']})  
  15. # 按照Yahoo格式的要求,調整df2各段的順序  
  16. dt = df2.pop('Date Time')  
  17. df2.insert(0,'Date Time',dt)  
  18. o = df2.pop('Open')  
  19. df2.insert(1,'Open',o)  
  20. h = df2.pop('High')  
  21. df2.insert(2,'High',h)  
  22. l = df2.pop('Low')  
  23. df2.insert(3,'Low',l)  
  24. c = df2.pop('Close')  
  25. df2.insert(4,'Close',c)  
  26. v = df2.pop('Volume')  
  27. df2.insert(5,'Volume',v)  
  28. # 新格式數據存盤,不保存索引編號  
  29. df2.to_csv("15-1.csv", index=False)  
相關文章
相關標籤/搜索