MarketPosition在onbar里始终为0是怎么回事?

写了个实盘交易测试程序,开仓后在onorder里打印日志明明MarketPosition的值已经变为1了(开了多单),但在onbar里还是为0,平仓操作sell不成功,没有产生实际的委托单,问下这是怎么回事?哪里设置不对吗?

在onready里设置了数组变量的值,在onbar里读取的值是0
为何信号始终为FASLE
为什么买入多单开仓之后,MarketPosition 和 A_BuyPosition都显示为0,
A_SendOrderEX在OnBar里写能开单成功,在OnTimer里都失败
设置周期为Tick但是日志里一秒触发大于两个OnBar
在多层中开多单以后,MarketPosition为什么总是0
频繁开仓,MarketPosition一直是0
SetOrderPriceOffset(1);设置委托偏移的代码是放在OnInit里,还是放在OnBar里?
帮忙看下CloseD(1) 取值为0的情况
请问,输出转股价为0

有点像出现了信号闪烁。最新的bar还没有运行完,当前出现信号后驱动onorder域,此时MarketPosition等于1,过一会价格回调或者其它原因,导致信号没了,onbar域再运行的时候MarketPosition又等于0了。

对啊,为什么啊?我达到条件开仓了,那onorder里成交后=1了,没有提交平仓操作,它MarketPosition为什么自动变回0了?

因为markeposition计算的是信号持仓,不是实际持仓。在程序运行onorder域的时候图表上是有信号的,所以markeposition=1。当信号闪烁没了以后,markeposition就会=0,即时你实际上已经有仓位也是=0,因为他是根据信号计算的。

那实盘里要平仓得怎么操作啊?sell函数明确要求marketposition要<>0:

我觉得最好的方法就是避免信号闪烁,把信号固定住,这样marketposition与实际持仓就能对应起来了。

所以说其实信号闪烁是不允许的,否则实际上实盘就会不一致,而信号闪烁表现在变量上就是marketposition的值,对吧?