Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1986
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Всё что я изменил это вот эти строки
и последовательность этих
Если построение имеет несколько буферов INDICATOR_DATA и цвет, то всё что относится к построению обязательно должно быть по порядку. Буферы данных —> буфер цвета. Все дополнительные буферы должны быть в конце.
должно работать по приоритету логических операций https://www.mql5.com/ru/docs/basis/operations/rules
для одинаковых операций == приоритет будет равнозначным и будет вычисляться результат логической операции слева на право - скобок же нет?
спасиб. Скобок нет.
Всё что я изменил это вот эти строки
и последовательность этих
Если построение имеет несколько буферов INDICATOR_DATA и цвет, то всё что относится к построению обязательно должно быть по порядку. Буферы данных —> буфер цвета. Все дополнительные буферы должны быть в конце.
спасиб
спасиб. Скобок нет.
Иногда, если знаешь логику системы, проще написать новый сов.
согласен. в этом сове всё через массивы завязано. я в них не разбираюсь пока совершенно
Можно подробнее, пожалста.
Здесь получается так (разберём поэлементно проверки):
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber_2 == 1)
можно явно заменить на
if (OrderSymbol() == Symbol() && OrderMagicNumber() == bool(MagicNumber_2 == 1)),
соответственно:
if (OrderSymbol() == Symbol() && OrderMagicNumber() == (если MagicNumber_2 равен 1, то тут true, иначе тут false))
А значит, далее уже два варианта:
if (OrderSymbol() == Symbol() && OrderMagicNumber() == true)
или
if (OrderSymbol() == Symbol() && OrderMagicNumber() == false)
Учитывая, что false - это только 0, а true - любое, отличное от нуля значение, то проверка выглядит так:
Если MagicNumber_2 равен 1, то проверка такова:
if (OrderSymbol() == Symbol() && OrderMagicNumber() == 1)
Если MagicNumber_2 не равен 1, то проверка такова:
if (OrderSymbol() == Symbol() && OrderMagicNumber() == 0)
По-моему, так.
можно явно заменить на
if (OrderSymbol() == Symbol() && OrderMagicNumber() == bool(MagicNumber_2 == 1)),
не можно, писал же порядок по приоритету, или слева на право
Вы скобками чего натворили ? ))))
вот можно поиграться скриптом, чтобы порядок вычисления увидеть:
2022.07.04 11:02:06.596 tst EURUSD,H1: 2.Not OK
2022.07.04 11:02:06.596 tst EURUSD,H1: f5
2022.07.04 11:02:06.596 tst EURUSD,H1: f4
2022.07.04 11:02:06.596 tst EURUSD,H1: f3
2022.07.04 11:02:06.596 tst EURUSD,H1: f2
2022.07.04 11:02:06.596 tst EURUSD,H1: f1
2022.07.04 11:02:06.596 tst EURUSD,H1: 1.OK
2022.07.04 11:02:06.596 tst EURUSD,H1: f5
2022.07.04 11:02:06.596 tst EURUSD,H1: f4
2022.07.04 11:02:06.596 tst EURUSD,H1: f3
2022.07.04 11:02:06.596 tst EURUSD,H1: f2
2022.07.04 11:02:06.596 tst EURUSD,H1: f1
2022.07.04 11:02:06.596 tst EURUSD,H1: initialized
не можно, писал же порядок по приоритету, или слева на право
Вы скобками чего натворили ? ))))
вот можно поиграться скриптом, чтобы порядок вычисления увидеть:
2022.07.04 11:02:06.596 tst EURUSD,H1: 2.Not OK
2022.07.04 11:02:06.596 tst EURUSD,H1: f5
2022.07.04 11:02:06.596 tst EURUSD,H1: f4
2022.07.04 11:02:06.596 tst EURUSD,H1: f3
2022.07.04 11:02:06.596 tst EURUSD,H1: f2
2022.07.04 11:02:06.596 tst EURUSD,H1: f1
2022.07.04 11:02:06.596 tst EURUSD,H1: 1.OK
2022.07.04 11:02:06.596 tst EURUSD,H1: f5
2022.07.04 11:02:06.596 tst EURUSD,H1: f4
2022.07.04 11:02:06.596 tst EURUSD,H1: f3
2022.07.04 11:02:06.596 tst EURUSD,H1: f2
2022.07.04 11:02:06.596 tst EURUSD,H1: f1
2022.07.04 11:02:06.596 tst EURUSD,H1: initialized
Разве это
if (f1() == f2() && f3() == f4() == f5())
эквивалентно этому
???
Там, в оригинале, в конце сравнение переменной с числом, а у вас вызов функции.
Вообще, конечно, не берусь утверждать, но мне кажется (не проверял, просто почему-то кажется), что OrderMagicNumber() будет сравниваться с результатом булевого сравнения переменной MagicNumber_2 со значением 1.
Проверять времени нет никакого. Но сначала выполнится булево сравнение переменной с числом, а затем уже будет сравниваться OrderMagicNumber() с результатом сравнения (со значением 1 или 0 в зависимости от результата сравнения). Наверное просто потому, что функция, возвращающая магик, должна своё значение с чем-то сравнить. А вот с чем - это как раз булево значение.
Разве это
эквивалентно этому
???
да эквивалентно при выполнении логических операций
Вообще, конечно, не берусь утверждать, но мне кажется (не проверял, просто почему-то кажется), что OrderMagicNumber() будет сравниваться с результатом булевого сравнения переменной MagicNumber_2 со значением 1.
Проверять времени нет никакого. Но сначала выполнится булево сравнение переменной с числом, а затем уже будет сравниваться OrderMagicNumber() с результатом сравнения (со значением 1 или 0 в зависимости от результата сравнения). Наверное просто потому, что функция, возвращающая магик, должна своё значение с чем-то сравнить. А вот с чем - это как раз булево значение.
ВЫ чет приведение типов и выполнение логических операций пытаетесь вместе смешать, да сравнение разных типов будет произведено после приведения типов, но логические операции всегда будут выполняться в одной и той же последовательности
по сабжу, что у нас есть с точки зрения выполнения логических операций?
есть: == , && , == и ==
по приоритету && ниже, значит выполняем первыми ==
1. OrderSymbol() == Symbol() - результат true
2. OrderMagicNumber() == MagicNumber_2 - результат true (пусть будут равны, для упрощения)
3. теперь последний == , от предыдущего == , т.е. п.2 :
true == 1 - результат true
4. и вот теперь будет выполнена "логическая И" для пп 1 и 3 : true && true = true
Возможно ли составить имя переменной с помощью канкатенации?