[АРХИВ] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 3. - страница 149

 
avatara:

я всегда использую при сравнении цен некую +/-epsilon=Point*0.01.

умножение на 1 000 000 ничего не даст. поверьте.

Я не совсем понимаю почему должна возникнуть проблема <- баг?

В документации:

digits   -   Precision format, number of digits after decimal point (0-8). 

т.е. там максимум 8 знаков после запятой, а в вопросе упоминалось 10 - возможно в этом дело?

 
Elenn:

При сравнении двух переменных типа 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] ?

 
TEXX:

Добрый день!

Допустим мы имеем два числа 1.4451 и 1.4429.

Как из этих чисел взять последнюю цифру 1.445[1] и 1.442[9] ?

x = (10000 * y) % 10
 
Zhunko:
x = (10000 * y) % 10


а можно это расписать с цифрами, чтобы для идиотов...

Заранее спасибо!!!

 

День добрый! Можно я повторюсь. В советнике использую МАКДАК как трендовый фильтр, возможно заставить советник начинать анализировать сигналы только с определнного бара на макдаке, а при смене тренда все поновой? Например МАКД>0 начала тренда, начинаем проводить анализ на сигналы только после 15 бара макдака который больше ноля?

СПАСИБО!

 
TEXX:


а можно это расписать с цифрами, чтобы для идиотов...

Заранее спасибо!!!


1.Справочик MQL4(MetaEditor)-->Основы языка-->Операции и выражения-->Арифметические операции
2.Учебник -->https://book.mql4.com/ru/basics/expressions
x = (10000 * 1.4451) % 10, где "% "-- арифм. операция "Остаток от деления" (в нашем случае на "10"), " * "-- арифм. операция "Умножение величин".
 
SeALALex:

День добрый! Можно я повторюсь. В советнике использую МАКДАК как трендовый фильтр, возможно заставить советник начинать анализировать сигналы только с определнного бара на макдаке, а при смене тренда все поновой? Например МАКД>0 начала тренда, начинаем проводить анализ на сигналы только после 15 бара макдака который больше ноля?

СПАСИБО!

А в чем проблема? Запоминать Бар (время), когда MACD пересекает 0, а для каждого нового Бара сравнивать на каком удалении он от него находится. Если Дельта>15 => вперед.

 

Подскажите в чем ошибка!?



avatar
1
smith 06.09.2011 13:08
Написал советника,по условию стратегии должен выставлять один ордер в час при открытии бара относительно цены открытия бара (h1) цене. При тестировании по сформировавшимся барам все нормально, а при тесте по всем таймферам( впрочем как и при реальной торговле) все время при каждом изменении цены выставляет ордера один за другим!!!( Как это контролировать!? Советник написае МТ4 и терминал тоже Мт4 . Подскажите есть какие то функции для такой задачи,желательно с примером.Заранее спасибо!)
 
sergeev:

Подскажите в чем ошибка!?



1
smith 06.09.2011 13:08
Написал советника,по условию стратегии должен выставлять один ордер в час при открытии бара относительно цены открытия бара (h1) цене. При тестировании по сформировавшимся барам все нормально, а при тесте по всем таймферам( впрочем как и при реальной торговле) все время при каждом изменении цены выставляет ордера один за другим!!!( Как это контролировать!? Советник написае МТ4 и терминал тоже Мт4 . Подскажите есть какие то функции для такой задачи,желательно с примером.Заранее спасибо!)

.. При тесте по методу "Всех Тиков"..

В самом начале задается Глобальная переменная (перед старт() ):

datetime TimeHandle = 0;

start() {
   i = 0;                        // Для Советников
   if(TimeHandle!=Time[i]) {
      TimeHandle = Time[i];

   . . . 

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