如何生成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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值