Как сделать проверку на magic? - страница 2

 
Evgeniy Zhdan:

Дело в том, что я пробовал. И не заработало. Почему, я не знаю. Теоретически должно было работать. Заработал только мой вариант.

Просто надо понять причину ошибки, а не просто "поменяю, может заработает". Поменял, повторно ошибку не допустил, всё заработало, придумал сам себе причину и вводите людей в заблуждение.

 
Alexey Viktorov:

Просто надо понять причину ошибки, а не просто "поменяю, может заработает". Поменял, повторно ошибку не допустил, всё заработало, придумал сам себе причину и вводите людей в заблуждение.

Избавьте меня от себя, пожалуйста

 
Сделал два условия, чтобы не запутаться. Всем спасибо!
 
Evgeniy Zhdan:

В данном условии вы выбираете 1 ордер, но если открыто несколько сделок, то работать не будет. Нужно запускать цикл для проверки всех ордеров:

   for (int i = OrdersTotal() - 1; i >= 0; i-- )         
      if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
      if (OrderMagicNumber() == Magic) 
        {
        
        }

Данная конструкция работает безукоризненно в десятках советников на протяжении многих лет ;)

 
Ivan Ovchinnikov:

а в одну строку нельзя это затолкать?

Нельзя.

1. Результат выполнения OrderSelect() надо проверять и, в зависимости от результата, делать что-то более осмысленное, чем просто пропустить что-то идущее следом.

2. Все это можно и нужно оформить в виде функции. Функции будет где-то там... а где будет писаться код, будет вызываться одна строка.

3. Да и вообще, с длинными строками кода, потом разбираться в этом коде, в случает, если потребуется сделать доработку - голова отвалится, если вертеть ее туда сюда на всю ширину экрана.

 
Ivan Ovchinnikov:

Всем привет! Помогите пожалуйста, мне нужно сделать проверку на меджик у такого условия. Переменная из настороек обозначена так:


Кстати, не обратил внимания на это:

OrderSelect(
OrdersTotal()-1,SELECT_BY_POS,MODE_TRADES)

сомневаюсь, что это правильно. Надо в цикле перебирать. Или если Тикет известен, то по тикету.

 
Evgeniy Zhdan:

Избавьте меня от себя, пожалуйста

Не расстраивайся. Не всем же быть умными.

 
Ivan Ovchinnikov:

а в одну строку нельзя это затолкать?

можно

раньше не работало, теперь норм

потому и спорят

Причина обращения: