数据源采用聚宽连续合约,标的铁矿石,参数设置如下:
# 样本外检验
# 配置合约信息
# 缺TA8888 CF8888 SM8888 SC8888 ZC8888
# 合约大小写按交易所格式
vt_symbols = [
"i8888.DCE"
]
rates = {s: 0.001 for s in vt_symbols}
slippages = {s: 0 for s in vt_symbols}
sizes = {s: contract_sizes[s] for s in vt_symbols}
priceticks = {s: 0.01 for s in vt_symbols}
# 创建回测引擎
engine = BacktestingEngine()
engine.set_parameters(
vt_symbols=vt_symbols,
interval=Interval.MINUTE,
start=datetime(2019, 1, 1),
end=datetime(2022, 4, 30),
rates=rates,
slippages=slippages,
sizes=sizes,
priceticks=priceticks,
capital=10_000_000,
)
setting = {
"entry_window": 20,
"exit_window": 10,
"n_window": 20,
"unit_limit": 2
}
engine.add_strategy(TurtleStrategy, setting)
engine.load_data()
engine.run_backtesting()
df = engine.calculate_result()
engine.calculate_statistics()
engine.show_chart()
回测发现问题,如图,在2020年2月3日位置,发现净值跳跃
查看文华财经,铁矿石加权价格数据,2月3日为春节后,第一天,价格跳空,如图
通过函数engine.daily_results,engine.trades 导出合成的日线close和 成交明细数据,发现三个问题,需要请教:
第1个问题
在2020年2月3日,跳空前的几天,随机抽取两天1月20日,1月22日,发现 合成的收盘价,是23:00。跳空后的几天,随机抽取两天,合成的收盘价 是在15:00,为什么2月3日的前几天,合成的收盘价会取23:00?
1月20日
1月22日
2月6日
第2个问题
2020年2月3日跳空当天,分钟数据,价格基本都是在600附近,合成的2月3日收盘价 693.5 是如何得出来的?
第3个问题
向下跳空后,按道理,应该是向下突破做空吧?成交明细中,是买多,为什么会开多仓?