有一个比较奇怪但确实想实现的需求,请教一下老师和各位大神:
1、已经实现的部分
策略是图表信号,开仓后如果不成交则一直挂单,如果到了平仓图表信号产生时还未成交,则自动对开仓单进行撤单(这一步在ONORDER里用A函数实现)。若开仓单发生撤单事件,则策略忽略接下去的3笔交易开仓信号(即从撤单事件开始对接下去的3笔开仓交易信号不进行交易,这3笔本来应该发生的交易信号被屏蔽了不会产生图表信号)。
2、未实现的部分
为了方便对比实盘帐户和回测记录,我需要保持实盘帐户报单和回测记录完全一致,但是撤单那笔交易还是会被记录在回测报告里,我想在回测报告里消除那笔撤单的交易记录不进行业绩统计(因为实盘时本来就是撤了单,相当于这笔交易没有发生)。
举例子说明:
1、原有的逻辑假如在没有发生撤单事件的情况下(比如回测的环境下),今天的开仓信号分别有6笔,分别是A,B,C,D,E,F。
2、实盘环境下,假如B这笔开仓一直到平仓时未成交则撤单,根据该撤单事件屏蔽了C,D,E这三笔交易(图表信号也抹除了),F这笔交易继续报单。
3、收市后,点击回测记录报告和帐户实盘进行对比,C,D,E这三笔交易由于图表信号被抹除了所以不会体现在回测报告里,这个OK,符合我的需求。但是B这笔交易因为有图表信号所以还是被会记录在回测报告里,我的意思是想把B这笔交易也不在回测报告里体现。
上面这个需求有点怪,我也理解既然有有历史图表信号那当然会被记录在回测报告里,但有没有什么巧秒的办法可以实现呢?比如是否可以根据撤单事件来把这个对应的这笔图表信号给抹掉呢?
感谢!!
保存你的下单成交记录,你这个策略一旦重置,那么你历史成交情况就不得而知
不得而知,自然不会是你图上要的内容
回测也是,先读你自己保存的成交,根据成交情况决定开不开之类的
我也有个问题挺好奇的
之前帖子问题解决了没?
解决了应该回一下。。。
至于你做个提问
也不是不能实现
没有百分百解决,会出现频繁撤单并废除订单的情况,一下子没找到原因。因为又碰到一些新的问题需要解决,那个问题我就稍微放一放,先急后缓,谢谢您的指导
能实现?麻烦大神指导一下,之前的贴子我还以为你是TB老师,线下老师帮我解决了,就没单独再跟贴回你了,抱歉哈
我给你的解决方案
不会反复报撤单
你反复报撤单
需要用个全局控制每个分钟bar只做一次
谢谢,我再仔细想想您的方案
我有个问题挺好奇的,对于历史信号,你是如何判断这个信号发的委托会不会导致撤单呢?
在回测模式下,平仓交易信号条件达成时用随机函数生成一个机率,假如在机率内,就用Enum_Signal_UnCorrectPrice强制性地用对应的开仓信号价去平仓,等同于抹平这笔交易的盈亏,我用这种方法近似模拟实盘时开仓单被撤单导致这笔交易没有做成。实盘环境下当然无法去判断会不会撤单
信号闪烁导致的一种错误情况是:某个TICK有图表信号下个TICK又消失了,一般的原因是前一刻信号满足后一刻信号又不满足了。虽然信号闪烁是一种错误,但是不是也说明可能真的有某些办法可以把符合条件的历史图表信号让它在某种情况下抹除掉呢?
我还是没看懂到底要怎么做。是想要实盘的时候会撤单,然后又希望撤单的策略,信号不出现,这样测试报告和实盘的绩效就一致。是这个需求吗?
那这个需求核心点就是,历史bar上能不能正确判断发单会被撤掉。
如果能确定发单肯定会被撤掉,历史bar不出信号就行了。
如果不能确定发单是否会被撤掉,那就做不到绩效一致。
至于上面说的随机函数生成一个概率,我就更听不懂了。
如果历史bar用随机事件来表示会不会撤单,我是怎么也想不明白这样做如何能让实盘结果和历史回测效果一致。
可能我的表达不清楚,我补充一下:
1、先说老师回复的前半部分内容:
我还是没看懂到底要怎么做。是想要实盘的时候会撤单,然后又希望撤单的策略,信号不出现,这样测试报告和实盘的绩效就一致。是这个需求吗?
那这个需求核心点就是,历史bar上能不能正确判断发单会被撤掉。
如果能确定发单肯定会被撤掉,历史bar不出信号就行了。
如果不能确定发单是否会被撤掉,那就做不到绩效一致。
-----------是,就是这个意思。我希望实盘的策略在收市后打开回测报告时,对那些实盘交易时已经撤了单的开仓报单所对应的图表开仓信号给取消掉,这样的话回测报告交易记录与实盘的报单记录就会完全一致。至于为什么要这么做,纯粹是为了方便,这个需求纯粹是方便快速地评估和跟进实盘业绩与回测信号之间的差距。
策略在实盘运作时当然不能提前判断会不会被撤掉,因为不可能预知未来。但有了结果去重新生成历史图表信号再生成报告从原理上来说并不违反常识,取决于机制允不允许这么做。比如有没有可能, 对实盘时产生撤单的开仓订单进行标记,同时对该订单所对应的图表信号也进行标记,收市后生成回测报告时进行类似于重置图表信号生成的操作,把进行了标记的图表信号给取消掉不进行业绩统计之类的。
2、老师后半部分回复的内容:
至于上面说的随机函数生成一个概率,我就更听不懂了。
如果历史bar用随机事件来表示会不会撤单,我是怎么也想不明白这样做如何能让实盘结果和历史回测效果一致。
我说的随机函数是另外一回事,和上面所说的需求没什么关系,可以不用理会。随机函数的事我说的是回测版本去初步模拟撤单事件,不是说这个回测版本要追求和实盘版本之间一致(既然是随机函数当然就每次生成的结果都是不一样的),只是研发时用来近似模拟撤单情况的。比如螺纹我跟踪实盘统计觉得撤单率在30%左右,那么我回测版本就用30%的机率去进行随机撤单,多次进行试验看看是否会严重偏离预期之类的。
你换个思路解决啊
撤单就写个文件
回溯时候
读文件
没有撤单就打信号
相当于用个未来
文件记录开仓bar的datetime或bar序列号
撤单记录并写入
开仓代码检验
就是个简单小算法
谢谢,大体明白你的意思,不过写文件再读文件的操作没搞过,一下子有点无从下手。我能不能贴个代码上来,帮我把上述思路给加进去,感谢!
这个倒也是可以。
但是这个需求我觉得,怎么说呢
明明已经有了投资分析功能了......
他这个想法
估计很多人都有过
而且我跟踪他的交易逻辑
他主要处理最后一天/当天的
所以是可行的
🤣
虽然有投资分析功能,但是标准化的评估方式无法满足一些很个人的一些需求,有时候可能是为了验证某些东西,有时候可能是方便观察某个小环节的影响,因为交易记录也不能导出,无法导出数据单独进行分析,所以有时候会对业绩评估带来一些困扰。只能自己想一些特殊的法子