信号闪烁造成重复开仓的问题反馈

信号闪烁是代码逻辑问题这无可厚非,理当从源头解决,但tbQ3的处理方式太不友好了。 出现开仓信号就已经发出了开仓指令,但当提示“信号闪烁”后,MarketPosition又直接变成了0,这样符合了开仓条件造成不断开仓,直至满仓(极端情况下)。

用tbQ3不只是做回测,还请考虑一下实盘用户的需求,能改进一下——出现信号闪烁能不能只提示,而不将MarketPosition清0。

信号闪烁导致重复开仓
openint > openint [1] 这样设置开仓会不会造成信号闪烁?
跨周期数据造成信号闪烁的问题
关于Na1Sort2函数造成的信号闪烁问题
求高手帮助解决程序化策略的信号闪烁以及重复开仓问题
重复开仓 信号闪烁
信号闪烁问题
关于信号闪烁的问题
信号闪烁问题
老师,请问信号闪烁时相同信号不重复发单,相同信号是如何定义的?

可是你回测时候就会警告信号闪烁啊!这个时候不就是应该把信号闪烁解决了再实盘吗??

https://video.tbquant.net/video?id=20250310103731783228

看看这节视频吧,信号闪烁不是一定要跑运行自动交易才会警告的,历史信号也可以警告的

这都凌晨了 还在加班....

公司不扣你加班的电费?

😅

谢谢!

您好,您对TB的机制可能还不算完全了解,即使没有信号消失,TBQ3盘中实时运行时,每个Tick运行公式时,MarketPosition都会传递上一个bar的状态,这样才能保证公式编写正确时,不会误把信号消失掉。


我可以举个例子,帮助您理解。例如我写下面的这一句:

if(MarketPosition<>1 And High>=High[1]) Buy(1,Max(Open,High[1])));

这句命令,绝对是编写正确的,没有任何毛病。假如在一根bar中,最高价突破了上一bar的最高价,产生了交易信号,并且发出了委托,请问下一个Tick运行公式,运行到这一语句时,您觉得marketPositon等于1吗?


我估计您的回答应该是,MarketPosition=1,但实际是MarketPosition<>1。因为,如果MarketPosition等于1,那上面这一句就不满足条件了,反而会导致买入的这个信号消失了,那这样,编写正确的公式反而运行不正常了。所以,TB公式运行机制,会在每个tick运行公式时,回到最初始的状态,也就是从上一个bar传递过来时的状态。


理解了这一点,我再回答您说的重复发单的问题,在同一根bar中,同一句命令,因为信号一会有,一会又消失,这个是不会重复发单,只会发一次单,只有换了一根bar,才有可能再次发单,但一根bar同一个信号只会发单一次。

谢谢您的解答,补充一下,我用tick数据开平仓(引用的15秒周期的信号),确实是在不同的tick bar重复开仓了。开仓条件是 MarketPosition==0,因为信号闪烁,成功开仓发出指令后,MarketPosition仍然是0,所以当下一个bar条件满足时,又继续开仓了。

要么开平仓放在tick上

如果在bar上 自己用序列变量或全局变量控制