Подскажите что не правильно в коде закрытия ордера?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Hugeen20015
84
Hugeen20015  
Подскажите пожалуйста, на что ругается метатрейдер.
Вот код:
/////////////////////////////////////////////  Функция Закрытия SELL ордеров в рынке //////////////////////
void Sell_Orders_Close()
{
//if(MA_crossDwn == true)
for (int msl = OrdersTotal() - 1; msl >= 0; msl--) 
   {
      if(!OrderSelect(msl, SELECT_BY_POS, MODE_TRADES)) break;
      if (OrderSymbol() == Symbol()) 
      {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic_Sell_Limit) 
         {
         while (!IsTradeAllowed()) Sleep(1000);
            RefreshRates();
            if (OrderType() == OP_SELL) !OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Ask,Digits), Slippage, Red);
            Print("Ошибка закрытия ордера Magic_Sell_Limit" );           
         }
      }
   }
)
fxsaber
17476
fxsaber  
 if (OrderType() == OP_SELL) !OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Ask,Digits), Slippage, Red);
Alexey Viktorov
27876
Alexey Viktorov  

Мне кажется подразумевался такой вариант

if(OrderType() == OP_SELL && !OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Ask,Digits), Slippage, Red))
правда для себя я никогда так не написал-бы.
Hugeen20015
84
Hugeen20015  
Alexey Viktorov:

Мне кажется подразумевался такой вариант

правда для себя я никогда так не написал-бы.

Спасибо, но это я тоже пробовал....
Вот какой результат:

Hugeen20015
84
Hugeen20015  
fxsaber:

Нет, без этого пишет что надо проверить.

Ihor Herasko
21798
Ihor Herasko  
Hugeen20015:

Спасибо, но это я тоже пробовал....
Вот какой результат:


Так скобку ведь не переставили. Если уж добавлено логическое И, то скобка должна стоять за OrderClose:

 if (OrderType() == OP_SELL && !OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Ask,Digits), Slippage, Red))
            Print("Ошибка закрытия ордера Magic_Sell_Limit" );           
Hugeen20015
84
Hugeen20015  
Ihor Herasko:

Так скобку ведь не переставили. Если уж добавлено логическое И, то скобка должна стоять за OrderClose:


Спасибо.
Вот как решил проблему... Поменял местами... и Аллилуя...

Vitaly Muzichenko
14103
Vitaly Muzichenko  
Hugeen20015:

Спасибо.
Вот как решил проблему... Поменял местами... и Аллилуя...

Почитайте об очерёдности проверки if, думаю пригодится в будущем

Aleksey Lebedev
7471
Aleksey Lebedev  
Hugeen20015:
if(!OrderSelect(msl, SELECT_BY_POS, MODE_TRADES)) break;
break - прекращает выполнение цикла, наверно нужно continue
Alexey Viktorov
27876
Alexey Viktorov  
Hugeen20015:

Спасибо.
Вот как решил проблему... Поменял местами... и Аллилуя...

Потрясающе!!! Главное чтобы компилятор не выражался матом, а как будет выполнен код, это не важно.

Молодец! Так держать!

Hugeen20015
84
Hugeen20015  
Alexey Viktorov:

Потрясающе!!! Главное чтобы компилятор не выражался матом, а как будет выполнен код, это не важно.

Молодец! Так держать!


Спасибо за эмоциональный ответ, ну а что по существу можете сказать? Предложенное вами ранее решение не привело к результату, я нашел другой вариант. В чем ошибка? Я открыт к диалогу.

12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий