写了个简单做市策略 为啥到平仓之后就再开仓了 ,麻烦看下代码哪里有问题

麻烦老师大神帮忙看下代码 哪里有问题 逻辑 : 是在买一价格减delta挂买入,在卖一价格加delta挂卖出单,如果买单成交则撤销卖单,// 如果卖单成交则撤销买单;仓位控制采用最小持仓原则,也就是如果有多仓头寸,则卖// 单为卖平仓,反之为卖开仓,如果是有空头头寸则买单为买平仓,反之为买开仓; 为啥执行到 平仓 以后 就不在继续 下新的委托单了 开平标志 Enum_Exit 和 Enum_ExitToday 这两个都试过 //初始化事件函数,策略运行期间,首先运行且只有一次 OnInit() { timeID3 = CreateTimer(millsec*10,0,1); } //Bar更新事件函数,参数indexs表示变化的数据源图层ID数组 OnBar(ArrayRef<Integer> indexs) { x = 1; } OnTimer(Integer id,Integer millsecs) { if(id == timeID3) { A_SendOrderEx(Symbol,Enum_Buy,enum_entry,1, Q_BidPrice - x *MinPointA ,dids); //以买价发送买单 fubuy_ord = dids[0]; //买单委托单号赋值给首单买单号 A_SendOrderEx(Symbol,Enum_Sell,enum_entry,1,Q_AskPrice + x *MinPointA ,sids); //以卖价发送卖单 fusell_ord = sids[0]; //卖单委托单号赋值给首单卖单号 } } OnOrder(OrderRef ord) { if( ord.side == Enum_Buy and ord.combOffset == enum_entry and ord.status == Enum_Filled) //买入开仓成交 撤空单 然后再挂单 { tem_delete = A_DeleteOrderEx(sids[0]); //空单撤单 if(tem_delete) // 撤单空单成功后 继续挂 卖出平仓 和买入开仓 { A_SendOrderEx(Symbol,Enum_Buy,enum_entry,1,Q_BidPrice - x *MinPointA ,dids); //以买1价 - x发送买开单 fubuy_ord = dids[0]; //买单委托单号赋值买单号 A_SendOrderEx(Symbol,Enum_Sell,Enum_ExitToday ,1, Q_AskPrice + x *MinPointA ,sids); //以卖1价 + x发送卖平单 fusell_ord = sids[0]; //卖单委托单号赋值卖单号 } } if( ord.side == Enum_Sell and ord.combOffset == enum_entry and ord.status == Enum_Filled) //卖出开仓成交 撤多单 然后再挂单 { tem_delete = A_DeleteOrderEx(dids[0]); //多单撤单 if(tem_delete)// 撤单多单成功后 继续挂 买入平仓 和卖出开仓 { A_SendOrderEx(Symbol,Enum_Buy,Enum_ExitToday ,1, Q_BidPrice - x *MinPointA ,dids); //以买1价 - x 发送买平单 fubuy_ord = dids[0]; //买单委托单号赋值给首单买单号 A_SendOrderEx(Symbol,Enum_Sell,enum_entry,1,Q_AskPrice + x *MinPointA ,sids); //以卖1价 + x发送卖开单 fusell_ord = sids[0]; //卖单委托单号赋值卖单号 } } if( ord.side == Enum_Buy and ord.combOffset == Enum_ExitToday and ord.status == Enum_Filled) //买入平仓成交 撤空单 然后再挂双向单 { tex_delete = A_DeleteOrderEx(sids[0]); //空单撤单 if(tex_delete) // 撤单空单成功后 继续挂 卖出平仓 和买入开仓 { A_SendOrderEx(Symbol,Enum_Buy,enum_entry,1,Q_BidPrice - x *MinPointA ,dids); //以买1价 - x发送买开单 fubuy_ord = dids[0]; //买单委托单号赋值买单号 A_SendOrderEx(Symbol,Enum_Sell,enum_entry,1, Q_AskPrice + x *MinPointA ,sids); //以卖1价 + x发送卖开单 fusell_ord = sids[0]; //卖单委托单号赋值卖单号 } } if(ord.side == Enum_Sell and ord.combOffset == Enum_ExitToday and ord.status == Enum_Filled) //卖出平仓成交 撤多单 然后再挂双向单 { tex_delete = A_DeleteOrderEx(dids[0]); //撤单上一轮多单 if(tex_delete)// 撤单多单成功后 继续挂 买入平仓 和卖出开仓 { A_SendOrderEx(Symbol,Enum_Buy,enum_entry,1, Q_BidPrice - x *MinPointA ,dids); //以买1价 - x 发送买开单 fubuy_ord = dids[0]; //买单委托单号赋值给首单买单号 A_SendOrderEx(Symbol,Enum_Sell,enum_entry,1,Q_AskPrice + x *MinPointA ,sids); //以卖1价 + x发送卖开单 fusell_ord = sids[0]; //卖单委托单号赋值卖单号 } } }

a函数看不了,写日志诊断开仓条件哪个不满足