0
我使用此代碼檢查訂單是否存在於我的代碼中的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();
}}
啊非常感謝! 所以我必須正常化所有雙打? – Sander
你可能正常化,但我認爲正常化只有在發送訂單時纔有必要。更好的辦法是確保兩個雙打相差小於半個勾號(或者甚至是十分之一的勾號) –