这个信号闪烁问题如何避免?

图表指令,卖出平仓时有可能对应的开仓指令没有买够手数,会导致卖出平仓失败,因此卖出平仓之前我加了一段代码,先检查本策略单元未成交的开仓单,如果有未成交开仓委托单则先撤消未成交开仓委托单,然后检查本策略单元现有多头持仓手数,以该手数进行卖出平仓。这样做经常会有信号闪烁问题,例如消息中心的提示:图表信号是卖出平仓4手,但因为前面4次开仓委托中,其中有1次开仓委托直至卖出平仓时还没有成交,在平仓卖出时会撤掉这笔未成交委托单,帐户实际持仓3手,帐户实际以3手进行卖出。疑问:1、这样做为什么会有信号闪烁问题?代码里检查不出哪个环节会产生信号闪烁。2、如果有,怎么样规避?谢谢代码如下: Integer y=0; Array<Integer> orderIDs; self_source=A_GetOrderCreateSource; Bool ret8=A_GetUnFillOrderIDs(RelativeSymbol,orderIDs,self_source); For y = 0 To GetArraySize(orderIDs) - 1 { Order value; Bool ret9=A_getorder(orderids[y],value); if(value.combOffset==Enum_Entry and value.side==Enum_buy) { bool ret10 =A_DeleteOrderEx(orderids[y]); numeric sleep = SystemDateTime; while(true) { A_getOrder(orderids[j], value); if(value.status == Enum_Canceled) break; if(value.status == Enum_Filled) break; if(DateTimeDiffV2(Sleep, SystemDateTime) >= 1000) break; } } } Position order_pos; Bool ret2 = A_GetPosition(RelativeSymbol, order_pos, self_source); order_buyposition= order_pos.longCurrentvolume; sell(order_buyposition, data1_buyprice + duo_mantiao *MinMove * PriceScale- tiao2 * MinMove * PriceScale,Enum_Signal_UnCorrectPrice);

sell?用账户数据作为信号条件?从哪里学来的?应该没有教程教过这样用吧?图表信号就有图表行情数据和图表虚拟账户数据判断,是肯定不可以用真实账户数据作为判断条件的,这个在零基础课程里讲两种机制的时候应该都是说过的吧,都是基础常识了。

回复:因为我既要又要。既想要图表函数方便核对信号,又确实有以真实帐户数据作为判断条件。用A函数的话确实没有信号闪烁的问题,但如果有问题的话极难排查。

回复:解决方案是onsignalonbar里还是正常判断信号逻辑在onsignal里自行编写发单逻辑接管系统的发单操作。你的问题就是如果平仓的时候手数不足,会导致平不掉,对吧?那就直接用onsignal域接管系统的报单操作,报单前写持仓数量判断逻辑,如果账户持仓不满信号手数就按实际手数平仓。主要难点在这部分报单逻辑需要你自己写了

回复:谢谢老师