这是onbar的事件处理函数:
highline=Highest(High[1],20);
lowline=Lowest(Low[1],20);
If(MarketPosition<>1 And High>=highline)
{
Buy(1,5750);
}
If(MarketPosition<>-1 And Low<=lowline)
{
SellShort(1,6170);
}
请注意买入价和卖出价都是写死的。
下面的是账户透视内容。
为什么委托价和我的指令对不上?
还有,顺便问一下,关于marketposition,如果我发出指令后,没有及时成交,marketposition的值会改吗?如果不改,上面的语句是不是会不停的发交易指令?
但可能和您的认知相反的是,MarketPosition值的变化只在当前tick运行公式时会短暂保持,下一个tick来后,marketposition的值又会变回之前的值。否则,下一个Tick运行公式时,这个 If(MarketPosition<>1 And High>=highline)就会因为marketposition==1而不满足条件,从而导致Buy指令不执行,引起信号闪烁。这一点是初接触TB的用户,必须好好体会的。
第二个问题,Marketposition这个函数的值只跟图表信号有关,信号产生了值就会改变,和实际账户是否成交无关。
您好!BuySell指令中的价格,在产生图表信号时,正常情况下系统是会做矫正的,即不会让价格超过当前K线的价格范围,如果您非要产生一个超过当前K线价格范围的信号,可以在BuySell指令后加一个枚举类型的参数。
比如: Buy(1, 5750, Enum_Signal_UnCorrectPrice)