持有多仓,MarketPosition =1,MarketPosition 识别不到,还要进入下面的买入开仓语句,逻辑不对呀

你好!老师!我这是一个非多即空策略,在PTA5分钟周期上做,遇到一个问题,MarketPosition <> 1的时候,BBI>BBI[1] 满足开仓条件,买入2手,不是开仓bar的时候没问题,当信号闪烁,期价跌下去了又上来了,现在又满足BBI>BBI[1]了。这个时候程序会又买入2手,总持仓变为4手。我写的判断语句按理来说持有多仓,MarketPosition= 1,就不应该进入开仓语句呀,怎么老是识别不了,持有多仓MarketPosition= 1 明明已经满足了,按理来说不会进入买多开仓语句,但是程序还是会进入开多语句。不知道哪出现问题了?我要是这样写if(MarketPosition <> 1 and BBI>BBI[1]) 他还是识别不了持有多仓MarketPosition =1,还会买入2手,这时候总持仓就会变为4手,下次BBI<BBI[1]的时候,程序买入平仓、卖出开仓,没有空头头寸,买入平仓自然是废单,卖出开仓是能成交,这样相当于又锁仓了2手,还是又2手多单。不知道我写的有问题吗?请老师指点指点,谢谢!

为什么买入多单开仓之后,MarketPosition 和 A_BuyPosition都显示为0,
MarketPosition() 获取到的状态不对
仓位设置为0的时候,为啥还要持有1手?
关于MarketPosition() 获取到的状态不对 后续DEMO提供
请教MarketPosition的问题
MarketPosition状态和实际开仓问题
marketposition问题
同一根K线上不能既持有多仓又持有空仓
清仓后 MarketPosition 依然是1
MarketPosition出了问题

marketposition是一个序列类型,序列类型不会保存bar内运行的记忆。

换句话说,同一根bar上反复运行的时候,前一次的运行结果等于直接抛弃了,每次都相当于重新运行。