如何生成3分鐘,5分鐘,n分鐘K線資料
阿新 • • 發佈:2019-01-29
這裡討論的不是如何畫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為:
5分鐘的:
其他的時間週期,修改一下就好了。
以上參考了群裡的討論,以及http://stackoverflow.com/questio ... h-python-and-pandas
在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為:
-
Open High Low Close Volume
-
Date
-
1999-01-04 10:22:00 1.1801 1.1819 1.1801 1.1817 4
-
1999-01-04 10:23:00 1.1817 1.1818 1.1804 1.1814 18
-
1999-01-04 10:24:00 1.1817 1.1817 1.1802 1.1806 12
-
1999-01-04 10:25:00 1.1807 1.1815 1.1795 1.1808 26
- 1999-01-04 10:26:00 1.1803 1.1806 1.1790 1.1806 4
5分鐘的:
-
ohlc_dict = {
-
'Open':'first',
-
'High':'max',
-
'Low':'min',
-
'Close': 'last',
-
'Volume': 'sum'
-
}
- df.resample('5T', how=ohlc_dict, closed='left', label='left')
其他的時間週期,修改一下就好了。
以上參考了群裡的討論,以及http://stackoverflow.com/questio ... h-python-and-pandas