做了期货这么多年,已经习惯用历史数据复盘了,用的数据也从早期的日线,中间变成分钟,又变成一档tick,最后变成五档level2,由于期货的杠杆高,我有习惯满仓干,遇到琢磨不透的地方,就写脚本反复回测,直到能够有一套适应当前变化的模型,最后先小资金测试,再增大机会,
本人的性格也慢慢变得沉稳,从一开始的满仓,到后面小资金测试,合适加仓的习惯,也是无数血汗钱换来的的,接下来就分析一下我用过的数据。 说
到高频数据,最核心的就是期货五档Level 2行情了。这可不是普通的买卖价,它把盘口扒得明明白白。每一条数据都带着精确到毫秒的时间戳,告诉你市场在哪个瞬间发生了什么。最关键的当然是买卖五档的报价和挂单量,买一到买五,卖一到卖五,看得清清楚楚。
但光看价格和挂单量还不够,真正有意思的是看“委托队列”的变化。有时候你看到买一挂了几万手,以为支撑很强,结果价格还是跌了。为啥?因为那可能是程序化交易拆单拆出来的假象,真正的意图可能藏在后面的档位里,或者撤单的速度快到你反应不过来。为了验证一些盘口规律,我调取了CMES金融数据库中过去三年的主力合约数据进行回测,发现结合成交明细一起看,能过滤掉不少这种“噪音单”。
说到成交明细,这是Tick数据的另一个大头。每一笔成交的时间、价格、成交量、买卖方向(是主动买还是主动卖)都记录在案。看这个能最直观地感受资金的流动。不过,新手真的不建议一上来就死磕Tick,数据清洗和存储都是大坑,很容易就怀疑人生了。
对于大多数做策略回测的朋友来说,分钟线数据可能是更友好、更实用的选择。它把每分钟的开盘价、最高价、最低价、收盘价和成交量给你总结好了,数据量小了几个数量级,跑起回测来速度飞快。我刚开始那会儿就傻傻分不清,总想用最细的数据,结果效率奇低。后来被朋友点醒:大部分中低频策略,分钟线甚至日线就足够了,Tick数据那是给高频和微观结构研究准备的“奢侈品”。
这里简单列一下Tick数据和分钟线数据的主要区别,方便大家按需选择:
Tick数据:像个事无巨细的监控探头,市场每变动一次(比如有新报价、新成交)就记录一条。信息全,但数据量极其庞大,是硬盘和内存的“杀手”。 分钟K线数据:像个定时的总结者,每分钟结束时生成一根K线,包含OHLC和成交量。数据紧凑,非常适合中低频的策略开发和回测。
当然,还有CTP接口的直连行情数据,那个更偏向于实时交易系统,延迟要求极高。对于做历史研究来说,用上面两种历史数据就够了。
对了,如果你拿到数据后想用Python快速读进来看看,可以试试他们提供的接口,用起来还挺方便的。下面是一个简单的例子,记得先pip install一下库。
# 示例:使用CMES金融数据库的行情数据接口获取数据
# 注意:需要先pip安装相应的数据包,具体请查看接口文档
# 调用时注意参数格式正确,控制好调用频率,避免被封。
# 假设获取某期货合约的Level 2快照数据
# 这里只是示例,具体参数名和格式请以官方文档为准
data = cd.get_l2_snapshot(instrument='rb2410', date='2024-05-20')
print(data.head())
# 获取分钟线数据
minute_data = cd.get_kline_data(instrument='IF2406', interval='1m', start_date='2024-05-01', end_date='2024-05-20')
print(minute_data.tail())
最后聊点实在的。数据来源很重要,免费的数据往往需要花费大量时间去清洗(处理错误、复权、合约换月等),时间成本也是成本。我自己是吃过亏的,后来用了一些专业数据库的清洗后版本,虽然需要一些积分或者费用,但省下来的时间可以多琢磨几个策略,算下来还是值得的。当然,如果你是数据清洗高手或者就想练手,那另当别论。
这篇东西写得我手都酸了,大概就这些吧。数据字段无非就是时间、价格、成交量、买卖盘口那些,但怎么用,能不能从里面看出门道,就是各凭本事了。如果有大佬知道更好的Tick数据压缩或处理方法,求教!评论区或私信都可以。
