Тестер выдает неправильные величины EMA ! - страница 2

 
DiPach:

Меня - пока, вроде, не заметила повода для смущения.

Если кратко, то пыталась просто вам сказать, что бы вы убедились, что перед началом тестирования данные для расчётов готовы и подкачаны и есть в наличии все необходимые ценовыеданные другого тайм-фрейма, и эти данные являются корректными. Как-то так.


Я проверил. Всё подкачано. А насчет корректности данных то какая разница то ? Индикатор который я вижу на графике строится по тем же самым барам которые считывает тестер верно ?


Если у вас найдется время сделайте плиз эксперимент - получение в тестере EMA на том же периоде и с теми же параметрами как у меня. И сравните с показаниями индикатора на графике.

Очень интересно что у вас получится.

Заранее спасибо ).

З.Ы. Само собой и в MT4 и в MT5 надо для сравнения результатов.

З.З.Ы Скорее всего придется встраивать расчет EMA в советник. Я уже делал подобное с полгода назад но для Bands. Проблемы были аналогичные но только в отношении MT5 в режиме мультивалютки. Я нашел баг, написал об этом в сервисдеск. Меня попросили прислать доказательства. Прислал. Ну и после этого мне больше ничего не писали. Стали игнорировать.

В результате я встроил индюк в сову и всё сразу встало на свои места.

 
goodearth:

Я проверил. Всё подкачано. А насчет корректности данных то какая разница то ? Индикатор который я вижу на графике строится по тем же самым барам которые считывает тестер верно ?


Если у вас найдется время сделайте плиз эксперимент - получение втестере EMA на том же периоде и с теми же параметрами как у меня. Исравните с показаниями индикатора на графике.

Очень интересно что у вас получится.

Заранее спасибо ).

З.Ы. Само собой и в MT4 и в MT5 надо для сравнения результатов.

З.З.Ы Скорее всего придется встраивать расчет EMA в советник. Я уже делал подобное с полгода назад но для Bands. Проблемы были аналогичные но только в отношении MT5 в режиме мультивалютки. Я нашел баг, написал об этом в сервисдеск. Меня попросили прислать доказательства. Прислал. Ну и после этого мне больше ничего не писали. Стали игнорировать.

В результате я встроил индюк в сову и всё сразу встало на свои места.

В МТ4 при старте доступно только 1000 баров для анализа. МТ5 по другому работает
 
goodearth:

Если индикатор вызывается изнутри тестируемого эксперта, то при корректно сформированных данных для тестера проблем не должно наблюдаться.

Посмотрите всё-таки, пожалуйста, статьи по тестеру: https://www.mql5.com/ru/articles/mt4/strategy_tester

Вот ещё там хорошая, с моей точки зрения: Тестирование экспертов в клиентском терминале MetaTrader 4. Взгляд изнутри


Если после прочтения материалов по теме всё-таки останутся вопросы и вы будете точно уверены, что обнаружили проблему, то напишите в Сервисдеск, описав в заявке подробно свои действия и приложив свой код и логи.


А по поводу чисел double - просто для себя примите, что у них особенный порядок хранения в компьютере.


Поэтому при выводе на печать значения double, пусть и нормализованного ранее при числовых расчётах с помощью NormalizeDouble, всё-таки лучше добавлять, как и рекомендуют в справке по NormalizeDouble, и функцию, нормализующую вывод double в текст: DoubleToString.

P./S.: Помню, что где-то здесь на сайте была ещё очень хорошая инфа, с конкретными примерами, по особенностям double и нормализации (кроме статьи, что приводила про особенности чисел double). Но, навскидку, не увидела эту инфу по поиску.

 
goodearth:

Всем привет !

Какие то глюки странные. Вывожу обычный EMA на часовой график GBPUSD. Получаю 1,62409 на момент 2011.05.04 07:35.

Тоже самое пытаюсь получить в тестере через функцию iMA(Symbol(),PERIOD_H1,1500,0,MODE_EMA,0,1); Результат 1.633405877461445.

Как я это заметил ? Очень просто. В MT5 значения в тестере и на графике индикатора совпадают а в MT4 как оказалось нет.

Помогите пожалуйста разобраться.


Значение цены внутри бара в тестере МТ4 моделируется.

ЗЫ зачем квантовать сигнал, а после искать что-то внутри интервала квантования, если можно просто уменьшить этот интервал? 

 
tara:

Значение цены внутри бара в тестере МТ4 моделируется.

ЗЫ зачем квантовать сигнал, а после искать что-то внутри интервала квантования, если можно просто уменьшить этот интервал? 

Я считываю показания уже сформировавшегося (первого а не нулевого) бара. Причем тут моделирование внутри ???
 
DiPach:

Если индикатор вызывается изнутри тестируемого эксперта, то при корректно сформированных данных для тестера проблем не должно наблюдаться.

Посмотрите всё-таки, пожалуйста, статьи по тестеру: https://www.mql5.com/ru/articles/mt4/strategy_tester

Вот ещё там хорошая, с моей точки зрения: Тестирование экспертов в клиентском терминале MetaTrader 4. Взгляд изнутри

Устало. Читал я это всё. )

Если кому не лениво проведите плиз эксперимент про который я писал выше.

 
Vinin:
В МТ4 при старте доступно только 1000 баров для анализа. МТ5 по другому работает
Вот именно. Большое спасибо разработчикам :(
 

DiPach:

Если после прочтения материалов по теме всё-таки останутся вопросы и вы будете точно уверены, что обнаружили проблему, то напишите в Сервисдеск, описав в заявке подробно свои действия и приложив свой код и логи.

Я это уже проходил к сожалению. Писал, доказывал кодом и логами но без толку. В результате всё сделал сам. И всё отлично работает на реале кстати.
 

Вот так попробовал.

     MA1= iMA(Symbol(),PERIOD_H1,1000,0,MODE_EMA,0,1);

     Print("MA1=", MA1);

     MA1= iCustom(Symbol(),PERIOD_H1,"Custom Moving Averages",1000,0,MODE_EMA,0,1);
 
     Print("Custom","  MA1=", MA1);  

Выдаёт на GBPUSD не зависимо от того на M5 или на H1 я запускаю тестер

 2011.05.04 07:00  MyStochasticExp_M5 GBPUSD,M5: MA1=1.635899412506584

 2011.05.04 07:00  MyStochasticExp_M5 GBPUSD,H1: MA1=1.635899412506584

А на графике EMA за период 1000 показывает 1,63238.

Или это баг или у меня кукуха едет уже :-)

Повторю еще раз. В MT5 таких расхождений не наблюдается !

З.Ы. Выбрал 1000 потому что iCustom не работает с бОльшими значениями.

 
goodearth:

Вот так попробовал.

Выдаёт на GBPUSD не зависимо от того на M5 или на H1 я запускаю тестер

 2011.05.04 07:00  MyStochasticExp_M5 GBPUSD,M5: MA1=1.635899412506584

 2011.05.04 07:00  MyStochasticExp_M5 GBPUSD,H1: MA1=1.635899412506584

А на графике EMA за период 1000 показывает 1,63238.

Или это баг или у меня кукуха едет уже :-)

Повторю еще раз. В MT5 таких расхождений не наблюдается !

З.Ы. Выбрал 1000 потому что iCustom не работает с бОльшими значениями.

Передохнуть вам надо, похоже (ну и если спрашиваете совета, то слышать затем не только себя).

А уже со свежей головой и вооружившись самонапоминанием, что "... когда ничего не помогает, внимательно читайте инструкцию...",

и взглядом как бы "со стороны", вновь вернуться к саморассмотрению своей проблемы. Мозаика должна сложиться.

У вас в МА идёт расчёт среднего значения цен закрытия баров за n-е количество баров.
Если вручную сложить какие-либо цифры с десятичными знаками и разделить затем их на количество, то может получится число с n-м количеством десятичных знаков.
К примеру: (1.2052 + 1.2057 + 1.2073)/3 = 1.2060667... .

Соответственно, для вывода значения для расчётов с тем же количеством десятичных знаков, что и на чарте, требуется нормализация через функцию NormalizeDouble, округляющую числа с плавающей точкой до указанной точности.

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


При выводе на печать (при этом идёт преобразование числового значения в текстовое), так же не мешает добавить уже другую "нормализацию", с помощью функции DoubleToString.


Думаю, вы в курсе, что в МА среднее значение за 1000 баров по ценам закрытия за период H1- это среднее значение цен закрытия за 1000 предшествующих баров с периода H1.


Справочно, на всякий случай, если на пятиминутном чарте нет пропусков баров, то 1 000 часовых баров - это 12 000 пятиминутных (или 60 000 минутных, если нет их пропусков). Как-то так.


Отличия за один и тот же период с одними и теми же расчётными параметрами может быть, если по факту различается наличие расчётного количества баров
и/или различаются отметки на чарте и отметки, сформированные для тестирования. Как-то так.


Различие в данных, когда требуется наличие бОльшего количества баров для расчётов до того, как наберётся необходимое количество баров для расчётов и если в коде не стоит ограничение дождаться необходимого количества баров для расчётов, вполне понятны.

Про моделирование и его качество посмотрите, пожалуйста, в Руководстве пользователя в Справке к торговому терминалу (вызывается клавишей F1 в терминале или через верхнее меню терминала).

Там же, в Справке к торговому терминалу, есть и хорошие статьи по тестеру, в т.ч., с инфой про моделирование.


Их не много. Они не большие по объёму. Но они информативны. Советы почитать статьи - это не вежливый посыл, а хорошие советы.


Что не могу понять, так это зачем вам тестировать код, про который вы утверждаете в теме, что у вас там применяются данные старшего тайм-фрейма, через выбор моделирования "По ценам открытия".

Так-то, выбор варианта моделирования "Все тики..." оптимальнее по смыслу для точности расчётов.

P./S.: Вы просто при моделировании "Все тики..." посмотрите сначала отображение по iMA(...) с меньшим периодом усреднения, чем писали выше. Постепенно перейдя к бОльшему (к примеру, 3 --> 30 --> 300 -->). Обратите внимание на качество моделирования, в том числе, если выявите расхождения. При необходимости, можно сравнить файлы с данными для тестирования. Формируемые файлы имеют отдельные префиксы к наименованиям. Где файлы можно увидеть в компе, смотрите сами, пожалуйста, в статьях (в терминале - верхнее меню терминала: Файл -->Открыть автономно-->Открыть).

Как-то так.


P./S.: У вас в коде цены закрытия, а я, на автомате, про цены открытия написала сначала. Сейчас поправила.

Упрощения же по расчётам среднего (не по ЕМА) - это не ошибка у меня, это текстовое упрощение. 

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