mql4检查订单是否存在多次执行

我使用此代码检查订单是否存在于我的代码中的buy1和sell1价格。 某些订单会执行两次。 不应该发生,因为我正在检查是否有相同的公益订单。 任何人都能看到最新的错误?mql4检查订单是否存在多次执行

bool CheckBuyOrder1(double buy1_tp){ 

for(int i = 0 ; i < OrdersTotal() - 1 ; i++) {

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderTakeProfit() == buy1_tp && OrderComment() == "buy")

return(true);

}

return(false);

}

bool CheckSellOrder1(double sell1_tp){

for(int i = 0 ; i < OrdersTotal() - 1 ; i++) {

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderTakeProfit() == sell1_tp && OrderComment() == "sell")

return(true);

}

return(false);

}

int totalOrders = OrdersTotal();

void OnTick()

{

if(totalOrders != OrdersTotal()){

double vbid = MarketInfo("EURUSD",MODE_BID);

double bid = NormalizeDouble(vbid, 3);

double market_buy_tp = bid;

double buy1= bid + 0.002;

double buy1_tp= bid + 0.003;

if(CheckOpenOrders1(market_buy_tp)==false && CheckBuyOrder1(buy1_tp)==false){

int ticket9=OrderSend(Symbol(),OP_BUYSTOP,Lots,buy1,MaxSlippage,0,buy1_tp,"buy",16380,0,clrGreen);

}

double market_sell_tp = bid;

double sell1 = bid - 0.003;

double sell1_tp= bid - 0.004;

if(CheckOpenOrdersSell1(market_sell_tp)==false && CheckSellOrder1(sell1_tp)==false){

int ticket19=OrderSend(Symbol(),OP_SELLSTOP,Lots,sell1,MaxSlippage,0,sell1_tp,"sell",16380,0,clrGreen);

}

totalOrders = OrdersTotal();

}}

回答:

每当你尝试与其他一些double比较的OrderTakeProfit()值 - 牢记四舍五入和浮点表示。

E.g.如果您需要将0.10与另一个double进行比较,您认为它为0.10 - 您可能会惊讶于0.10为0.09(9)6或0.10(0)4

这就是为什么有时您可能找不到这样的订单。

double o = Point/2; // initialize in OnInit(), declare in global vars 

...

bool CheckOrderBuy(double tp){

for (int i = OrdersTotal() - 1; i >= 0; i--){

if (!OrderSelect(i, SELECT_BY_POS))continue;

if ( fabs(OrderTakeProfit() - tp) < o

&& OrderType() == OP_BUY

) return true;

}

return false;

}

以上是 mql4检查订单是否存在多次执行 的全部内容, 来源链接: utcz.com/qa/262157.html

回到顶部