1. 程式人生 > >如何生成3分鐘,5分鐘,n分鐘K線資料

如何生成3分鐘,5分鐘,n分鐘K線資料

這裡討論的不是如何畫k線,而是如何生成特定週期k線的最高價,最低價,開盤價,收盤價。
在vnpy的vn.trader的ctaDemo中,群主大人給出了生成1分鐘K線的資料的方法:只要tick.datetime.minute不同就是一條新的K線。
但怎麼生成3分鐘,5分鐘,10分鐘,15分鐘的k線呢?
從群裡的討論,目前有兩種方式:

1、利用tick.datetime.minute, 如果 tick.datetime.minute 能被3,5,10,15整除(也就是餘數為0),那麼就可以是一條新k線。
tickMinute % 3 == 0
tickMinute % 5 == 0
tickMinute % 10 == 0

tickMinute % 15 == 0
對於期貨來說,這種方法到15分鐘就為止了,因為期貨有中間休盤時間,上午的10:15-10:30。所以15分鐘以上的時間週期,要看你的策略需要的是什麼樣的K線。

2、利用pandas.resample
既然已經知道1分鐘的k線了,那可不可以在1分鐘的基礎上來計算出其他時間k線呢?當然可以,請使用較新版本的pandas:
假設df為:
  1.                        Open    High     Low   Close  Volume
  2. Date                                                       
  3. 1999-01-04 10:22:00  1.1801  1.1819  1.1801  1.1817       4
  4. 1999-01-04 10:23:00  1.1817  1.1818  1.1804  1.1814      18
  5. 1999-01-04 10:24:00  1.1817  1.1817  1.1802  1.1806      12
  6. 1999-01-04 10:25:00  1.1807  1.1815  1.1795  1.1808      26
  7. 1999-01-04 10:26:00  1.1803  1.1806  1.1790  1.1806       4
複製程式碼
5分鐘的:
  1. ohlc_dict = {                                                                                                             
  2. 'Open':'first',                                                                                                    
  3. 'High':'max',                                                                                                       
  4. 'Low':'min',                                                                                                        
  5. 'Close': 'last',                                                                                                    
  6. 'Volume': 'sum'
  7. }
  8. df.resample('5T', how=ohlc_dict, closed='left', label='left')
複製程式碼

其他的時間週期,修改一下就好了。
以上參考了群裡的討論,以及http://stackoverflow.com/questio ... h-python-and-pandas