При сравнении двух переменных типа double иногда получается неправильный результат. Вероятно, это происходит потому, что одна из переменных может быть незначительно больше или меньше другой (например, в 10 знаке). Использование функции NormalizeDouble в большинстве случаев не помогает. Некоторые советуют вычитать одну переменную из другой, но как в таком случае наиболее правильно построить выражение if(a>=b), вычитая одну переменную из другой? Или может быть, существует какой-то другой способ?
Вспомнил об одной проблеме, которую давным-давно наблюдал сам (может что-то изменилось с тех пор, не знаю):
а=5 и с=4.0
С точки зрения MQ совсем не обязательно что в этом конкретном случае a>c .
Это будет верно если а=5.0 и с=4.0, или а=5 и с=4 .
День добрый! Можно я повторюсь. В советнике использую МАКДАК как трендовый фильтр, возможно заставить советник начинать анализировать сигналы только с определнного бара на макдаке, а при смене тренда все поновой? Например МАКД>0 начала тренда, начинаем проводить анализ на сигналы только после 15 бара макдака который больше ноля?
День добрый! Можно я повторюсь. В советнике использую МАКДАК как трендовый фильтр, возможно заставить советник начинать анализировать сигналы только с определнного бара на макдаке, а при смене тренда все поновой? Например МАКД>0 начала тренда, начинаем проводить анализ на сигналы только после 15 бара макдака который больше ноля?
СПАСИБО!
А в чем проблема? Запоминать Бар (время), когда MACD пересекает 0, а для каждого нового Бара сравнивать на каком удалении он от него находится. Если Дельта>15 => вперед.
Написал советника,по условию стратегии должен выставлять один ордер в час при открытии бара относительно цены открытия бара (h1) цене. При тестировании по сформировавшимся барам все нормально, а при тесте по всем таймферам( впрочем как и при реальной торговле) все время при каждом изменении цены выставляет ордера один за другим!!!( Как это контролировать!? Советник написае МТ4 и терминал тоже Мт4 . Подскажите есть какие то функции для такой задачи,желательно с примером.Заранее спасибо!)
Написал советника,по условию стратегии должен выставлять один ордер в час при открытии бара относительно цены открытия бара (h1) цене. При тестировании по сформировавшимся барам все нормально, а при тесте по всем таймферам( впрочем как и при реальной торговле) все время при каждом изменении цены выставляет ордера один за другим!!!( Как это контролировать!? Советник написае МТ4 и терминал тоже Мт4 . Подскажите есть какие то функции для такой задачи,желательно с примером.Заранее спасибо!)
.. При тесте по методу "Всех Тиков"..
В самом начале задается Глобальная переменная (перед старт() ):
я всегда использую при сравнении цен некую +/-epsilon=Point*0.01.
умножение на 1 000 000 ничего не даст. поверьте.
Я не совсем понимаю почему должна возникнуть проблема <- баг?
В документации:
т.е. там максимум 8 знаков после запятой, а в вопросе упоминалось 10 - возможно в этом дело?
При сравнении двух переменных типа double иногда получается неправильный результат. Вероятно, это происходит потому, что одна из переменных может быть незначительно больше или меньше другой (например, в 10 знаке). Использование функции NormalizeDouble в большинстве случаев не помогает. Некоторые советуют вычитать одну переменную из другой, но как в таком случае наиболее правильно построить выражение if(a>=b), вычитая одну переменную из другой? Или может быть, существует какой-то другой способ?
Вспомнил об одной проблеме, которую давным-давно наблюдал сам (может что-то изменилось с тех пор, не знаю):
а=5 и с=4.0
С точки зрения MQ совсем не обязательно что в этом конкретном случае a>c .
Это будет верно если а=5.0 и с=4.0, или а=5 и с=4 .
Добрый день!
Допустим мы имеем два числа 1.4451 и 1.4429.
Как из этих чисел взять последнюю цифру 1.445[1] и 1.442[9] ?
Добрый день!
Допустим мы имеем два числа 1.4451 и 1.4429.
Как из этих чисел взять последнюю цифру 1.445[1] и 1.442[9] ?
x = (10000 * y) % 10
а можно это расписать с цифрами, чтобы для идиотов...
Заранее спасибо!!!
День добрый! Можно я повторюсь. В советнике использую МАКДАК как трендовый фильтр, возможно заставить советник начинать анализировать сигналы только с определнного бара на макдаке, а при смене тренда все поновой? Например МАКД>0 начала тренда, начинаем проводить анализ на сигналы только после 15 бара макдака который больше ноля?
СПАСИБО!
а можно это расписать с цифрами, чтобы для идиотов...
Заранее спасибо!!!
1.Справочик MQL4(MetaEditor)-->Основы языка-->Операции и выражения-->Арифметические операции
2.Учебник -->https://book.mql4.com/ru/basics/expressions
День добрый! Можно я повторюсь. В советнике использую МАКДАК как трендовый фильтр, возможно заставить советник начинать анализировать сигналы только с определнного бара на макдаке, а при смене тренда все поновой? Например МАКД>0 начала тренда, начинаем проводить анализ на сигналы только после 15 бара макдака который больше ноля?
СПАСИБО!
А в чем проблема? Запоминать Бар (время), когда MACD пересекает 0, а для каждого нового Бара сравнивать на каком удалении он от него находится. Если Дельта>15 => вперед.
Подскажите в чем ошибка!?
Подскажите в чем ошибка!?
.. При тесте по методу "Всех Тиков"..
В самом начале задается Глобальная переменная (перед старт() ):