我直接在rqdata.py改了下面内容,假装rqdata就是jqdata,避免其他地方代码可能的代码修改。还没有全面考虑,上期的合约在回测中试过是OK的
def to_rq_symbol(self, symbol: str, exchange: Exchange):
"""
CZCE product of RQData has symbol like "TA1905" while
vt symbol is "TA905.CZCE" so need to add "1" in symbol.
"""
exchanges = {Exchange.CFFEX: 'CCFX',
Exchange.INE: 'XINE',
Exchange.SHFE: 'XSGE',
Exchange.CZCE: 'XZCE',
Exchange.DCE: 'XDCE',
Exchange.SZSE: 'XSHE',
Exchange.SSE: 'XSHG'}
if exchange is Exchange.CZCE:
for count, word in enumerate(symbol):
if word.isdigit():
break
# Check for index symbol
time_str = symbol[count:]
if time_str in ["88", "888", "99", '9999']:
return symbol
# noinspection PyUnboundLocalVariable
product = symbol[:count]
year = symbol[count]
month = symbol[count + 1:]
if year == "9":
year = "1" + year
else:
year = "2" + year
rq_symbol = f"{product}{year}{month}".upper()
else:
rq_symbol = symbol.upper()
return f"{rq_symbol}.{exchanges[exchange]}"
VNTrader wrote:
非常感谢分享精神,非常谢谢。
客气,VNPY这么多代码都分享了!
发现一些错误,再次更新链接: https://pan.baidu.com/s/1vbMBfxxHMZqkIyM80vZCNA 提取码: cdce
原来策略中的cta_engine在回测时就是backtesting_engine,望文生义怪不得总有些地方看不明白。不过现在也没有100%看明白,靠不停在代码中加打印验证自己的理解[捂脸] 但是回测流程应该是画(懵)对了哈哈
用Python的交易员 wrote:
哈哈哈,不容易啊,给你加个精华
一星期不看代码,脑袋里几乎又一瓶浆糊。错综复杂的关系,大神还在各种扩展、调整、优化,佩服!
囫囵吞枣大概梳理完了回测部分,接下来结合实例认真过一遍:
链接: https://pan.baidu.com/s/1p7876XHLscvKwlDVYFLCQA 提取码: fwdu
思维导图文件,有兴趣的下载后继续: https://pan.baidu.com/s/1Mj9LP8i4dTG0RfXTFAuKAg 提取码: hfxv
画了一个周末,头晕了,简直就是个迷宫,放一放先...
from vnpy.trader.app.ctaStrategy.ctaBacktesting import BacktestingEngine