一个好策略为什么实盘效果无法达到预期

本文探讨了实盘交易中K线数据变动、数量不足等问题,及其对交易信号的影响,并提出了改进措施,如累积历史K线、确保实盘与回测数据一致性。

原因1:K线数据变动
K线在周期结束后,不是实时确定最终数值
在周期结束后的一小段时间内,通过接口取数的收盘价会有变化
实盘中策略信号计算所用的收盘价,与回测中的收盘价会有一定的出入
策略周期越短,实盘接口取数收盘价不同带来的滑点越严重
1分钟K线,大约要周期结束后2s,接口获取K线数值与网页K线数字相同
图中可见,17:56:00和17:56:02存在大约0.0128%的差异

解决方案:1、回测中加大滑点
2、实盘策略信号计算延迟若干时间(只能确保信号与回测相同,仍不可避免滑点)
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
1.1 K线数值变化造成假信号
第一次出现low时50.564
在这里插入图片描述
下一个周期出现时,low变成50.97
在这里插入图片描述
第三个周期出现时,又改回去
在这里插入图片描述
导致第二个周期时,实盘中计算出现平空信号(错误信号)
回测中一致持有空仓

原因二:
实盘读取k线数量不足,无法计算指标
n2 = 57*34 = 1938
比ok限制1440要多500个左右,15分钟周期,要等7500分钟(125小时,5.2天)

在这里插入图片描述
1、collect_candle_data_for_okex_futures_trade历史数据取到最后1440根,只做最新1440周期的数据替换,不更新整张表,确保部分策略超过1440周期k线需求
2、okex_futures_strategy_params增加策略所需k线数量

原因三、最小周期k线数量不足
大周期k线由小周期k线resample算出
最小周期一般是5m
计算4h至少需要48根k线
默认candle_num = 30
计算4h时候一定会出错,尤其是open

所以2h经常倒数第二根K线出错(需要48根)
1h经常倒数第三根k线出错(需要36根)

我自己默认更新最后3根k线,就是至少需要150根左右的5m

多账户择时框架K线数据不精确、数量不足解决方案
越深入学习j神动量自适应(子母)布林短线策略v3,越发现2个膝盖根本不够用。
实盘过程中,ETH15分钟最优参数N1=58,K=34,计算N2=1972,母布林自适应一通操作下来,计算出第一个信号竟然需要将近4000根k线参与。
邢大给的多账户择时框架,受限于okex的历史k线1440根取数上限,且每2个小时要重新获取一次历史数据全部覆盖,k线数据永远无法达到需求量。
问题推而广之:多账户择时框架原版的K线获取代码,无法满足部分需要大量K线数据参与计算的策略实盘需求

另,实盘过程中,发现部分K线在下一个周期取数时,与本K线周期结束时close会出现变化
原因是取数时K线的最后几笔交易统计,有部分在周期结束之后(1秒内)完成
按原版取数代码仅更新本周期K线,将有大量实盘与回测数据存在差异。

本文基于okex多账户择时框架,对okex_collect_data.py进行改写,旨在解决以下几点问题:
1、最近的几个周期K线数据更新,确保实盘回测数据一致
2、累积历史K线
3、根据策略需求保留大于1440根K线
闲言少叙,上代码:

后记:如果没有常态收集K线的数据库,要实现15分钟周期4000个K线的收集,大约需要26.67天时间(15*(4000-1440)/60/24)。也就是说,策略运行后,大约要一个月,才能产生第一个交易信号。。。
想想70倍的年化,似乎这一个月的时间也值得等待

原因三、信号错误
2021/7/7 5:00:00 回测信号由开多直接变开空
在这里插入图片描述

实盘中只完成平多操作

在这里插入图片描述

实盘信号中,多头仓位时只返回了平仓

原因四、实盘信号与回测信号效果不一致
动量自适应V3
回测信号:df.loc[condition_short, ‘signal_long’] = 0
condition_short条件满足,即母布林判断不开多,有多仓也直接平
实盘信号
母布林判断不开多时,没有返回平仓信号

原因5、K线数据变动

原因6、最小k线周期错误,造成部分k线没有取到

原因7、单账户框架中,部分周期计算信号的k线数量不足
在这里插入图片描述

son3需要5372根k线=370根
这里只有105根,master_median无法计算
原因:tea原版写法:
df = df.iloc[df.shape[0] - self.data_num:, :]
当df.shape[0] < self.data_num,保留行数结果为负数,只保留最后几行
df = df.iloc[- self.data_num:, :] 直接保留最后data_num行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

779醒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值