比如说当前K线内,每个新的tick到来 marketposition都会先归零,然后在tick末尾判断一下吗?
那么假设前10秒满足下单条件,那么tick末尾marketpostion会变成1的话,
假设后50秒不满足下单条件,是不是marketpostion就会变成0呢?是不是每个bar结尾会记录最后一个marketpostion的状态。
另外marketpostion是属于序列变量吗。
MarketPosition在一个BAR的值在BAR走完之前是会一直变化的,但这个不叫闪烁,也跟信号闪烁没有啥关系。如果您刻意去规避MarketPosition的变化,那反而会导致信号闪烁。这段话,我估计您可能需要把TB机制搞清楚了才理解得了。
我举个例子,您仔细体会下。假如,我们在1分钟周期上做交易,我写个死的交易规则,今天晚上开盘21:00开盘第一根1分钟线开多1手。
If(Date==20220629 And Time==0.21 And MarketPosition==0) Buy(1,Open);
请问:
1、第一个Tick,刚运行时,MarketPosition 的值是多少?执行完Buy(1,Open)后,MarketPosition的值是多少?
2、第二个Tick,刚运行时,MarketPosition 的值是多少?执行完Buy(1,Open)后,MarketPosition的值是多少?如果MarketPosition维持上个Tick末的值不变,第二个Tick执行结果会是怎样?系统为什么会这么处理?
我先说答案:
1、第一个Tick,刚运行时,MarketPosition为0;执行完Buy指令后,MarketPosition为1。
2、第二个Tick,刚运行时,MarketPosition为0;执行完Buy指令后,MarketPosition为1;如果第二个Tick, MarketPosition维持上个Tick末的值不变,那第二个Tick执行时,因为MarketPositon<>0,从而Buy指令不满足做单条件,将不会产生信号,也就是信号消失了,这样反而会信号闪烁。而真实的交易条件变了吗?没变,还是今天21点的1分钟K线,条件没变啊,那信号为啥闪烁呢?这就是MarketPositon为什么下个Tick要回到最初始的状态的原因,因为只有这样信号才不会闪烁。
好好体味下上面这个例子吧,真正搞懂了,您问的问题也就有答案了。
那这个bar中到底执行的是哪个buy委托?