1、问题
集合竞价数据算不算一个bar?是应该单独作为一个bar,还是将这个数据纳入到开盘第一根bar数据中?同花顺和通达信的处理方式竟然是不一样的,那到底选哪个好?
2、调研
集合竞价算不算一个bar的问题主要存在于1分钟周期,其他周期中均不存在集合竞价bar;
在同花顺的1分钟周期中,集合竞价是单独作为一根bar的,如下图:
而在通达信的1分钟周期中,集合竞价并没有作为一根bar,如下图:
而在掘金量化平台中,如果订阅1分钟数据,当天最早是在09:31才能收到数据推送,也就是说掘金的模式跟通达信的模式一样,集合竞价数据是包好在09:30~09:31的分钟bar里边的。
3、分析
差一根bar,对于指标的计算其实差别挺大的。那采取哪一种方式,就取决于你平常用哪个平台。
如果你平常是用的通达信看盘,那就不用特殊处理;如果平常用同花顺来看盘,且策略中有用到1分钟bar数据,那就需要进行调整了。
判断条件是获取的数据是1分钟bar数据,且获取的数据中存在‘09:31’这个时间段。
4、代码
# 1分钟频下,判断最近K线是否需要包含集合竞价数据
if bars[0]['frequency']=='60s' and time(9,31,0) in list(data['time'].iloc[-3:]):
data = pd.concat([data,pd.DataFrame({'eob':eob.date(),'symbol':symbol,'open':context.call_data[symbol]['open'],'amount':context.call_data[symbol]['amount'],
'volume':context.call_data[symbol]['volume'],'time':time(9,30,0)},index=[0])])
data.sort_values(by=['eob','time'],inplace=True)
看下输出结果:
OK,完美解决~
PS:策略代写/掘金研学会员优惠价,可以找我,有优惠~