Несовпадение значений MA в тестере и в реале. Проверьте, pls.

 
Дошли руки наконец склепать простенький стенд для проверки соответствия значений индикаторов в режиме тестирования и в реале (имеется ввиду время, а не реальный счет :)

Выглядит это дело так:

1. Эксперт пишет потиковые значения котировок в файл, параллельно пишутся значения MA (можно и любой другой индикатор) в другой файл.
2. Из файла котировок делаем fxt файл, который подсовываем тестеру.
3. Запускаем тот же эксперт в тестере.
4. Экперт в тестере опять же пишет котировки и значения MA в раздельные файлики.
5. Сравниваем файлы значений тиков и MA в папках experts\files и tester\files

Долго тестировать необходимости нет - достаточно поставить эксперт на M1 больше, чем на 100 минут - ибо тестер работает только при наличии > 100 баров.

У меня по результатам тестирования значения файла с тиками совпадают один в один, а вот с MA - расходятся.
Пример:
Тики:
Тестер:
otm;ctm;open;low;high;close;volume;flag
17.7.2006 13:4:00;17.7.2006 13:4:18;1.2538;1.2538;1.2538;1.2538;1;1
17.7.2006 13:4:00;17.7.2006 13:4:25;1.2537;1.2537;1.2538;1.2537;1;1
17.7.2006 13:4:00;17.7.2006 13:4:42;1.2537;1.2536;1.2538;1.2536;1;1
17.7.2006 13:4:00;17.7.2006 13:4:58;1.2537;1.2536;1.2538;1.2537;1;1
Реал:
otm;ctm;open;low;high;close;volume;flag
17.7.2006 13:4:00;17.7.2006 13:4:18;1.2538;1.2538;1.2538;1.2538;1;1
17.7.2006 13:4:00;17.7.2006 13:4:25;1.2537;1.2537;1.2538;1.2537;1;1
17.7.2006 13:4:00;17.7.2006 13:4:42;1.2537;1.2536;1.2538;1.2536;1;1
17.7.2006 13:4:00;17.7.2006 13:4:58;1.2537;1.2536;1.2538;1.2537;1;1

Значения MA:

Тестер:
otm, ctm, ma0_10; ma1_10; ma0_100; ma1_10
17.7.2006 13:4:00;17.7.2006 13:4:18;1.25387;1.2539;1.254011;1.25403
17.7.2006 13:4:00;17.7.2006 13:4:25;1.25386;1.2539;1.25401;1.25403
17.7.2006 13:4:00;17.7.2006 13:4:42;1.25386;1.2539;1.25401;1.25403
17.7.2006 13:4:00;17.7.2006 13:4:58;1.25386;1.2539;1.25401;1.25403
Реал:
otm, ctm, ma0_10; ma1_10; ma0_100; ma1_10
17.7.2006 13:4:00;17.7.2006 13:4:18;1.25378;1.25376;1.253832;1.253851
17.7.2006 13:4:00;17.7.2006 13:4:25;1.25377;1.25376;1.253811;1.25383
17.7.2006 13:4:00;17.7.2006 13:4:42;1.25377;1.25376;1.253811;1.25383
17.7.2006 13:4:00;17.7.2006 13:4:58;1.25377;1.25376;1.253811;1.25383

Разница налицо...

Текст эксперта для желающих:

//+------------------------------------------------------------------+
//|                                                           tt.mq4 |
//|                                                              Max |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Max"
#property link      ""
 
//---- input parameters
extern int       tt=0;
 
int v = 0;
string tfn, mfn;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
   int fh;
   tfn = Symbol()+"_tick_log.csv";
   mfn = Symbol()+"_ma_log.csv";
   fh = FileOpen(tfn,FILE_READ|FILE_WRITE|FILE_CSV,";");
   FileSeek(fh,0,SEEK_END);
   if (FileSize(fh)==0) FileWrite(fh,"otm;ctm;open;low;high;close;volume;flag");
   FileClose(fh);
 
   fh = FileOpen(mfn,FILE_READ|FILE_WRITE|FILE_CSV,";");
   FileSeek(fh,0,SEEK_END);
   if (FileSize(fh)==0) FileWrite(fh,"otm, ctm, ma0_10; ma1_10; ma0_100; ma1_10");
   FileClose(fh);
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
string ctm(){
  int ct = CurTime();
  return (TimeDay(ct)+"."+TimeMonth(ct)+"."+TimeYear(ct)+" "+
          TimeHour(ct)+":"+TimeMinute(ct)+":"+TimeSeconds(ct));
}
string otm(){
  int ct = CurTime();
  return (TimeDay(ct)+"."+TimeMonth(ct)+"."+TimeYear(ct)+" "+
          TimeHour(ct)+":"+TimeMinute(ct)+":00");
}
 
int start(){
   int fh;
   double ma0_10, ma1_10, ma0_100, ma1_100;
   string od,cd;
   od = otm();
   cd = ctm();
   ma0_10  = iMA(NULL,0,10 ,0, MODE_SMA,PRICE_OPEN, 0);
   ma1_10  = iMA(NULL,0,10 ,0, MODE_SMA,PRICE_OPEN, 1);
   ma0_100 = iMA(NULL,0,100,0, MODE_SMA,PRICE_OPEN, 0);
   ma1_100 = iMA(NULL,0,100,0, MODE_SMA,PRICE_OPEN, 1);
 
   fh = FileOpen(tfn,FILE_READ|FILE_WRITE|FILE_CSV,";");
   FileSeek(fh,0,SEEK_END);
   FileWrite(fh,od,cd,Open[0],Low[0], High[0], Close[0],1,1);
   FileClose(fh);
 
   fh = FileOpen(mfn,FILE_READ|FILE_WRITE|FILE_CSV,";");
   FileSeek(fh,0,SEEK_END);
   FileWrite(fh,od,cd,ma0_10, ma1_10, ma0_100, ma1_100);
   FileClose(fh);
   return(0);
  }
//+-------------------------------------------------------------+

Ссылку на утиль для преобразования в fxt дам по необходимости..
Буду рад, если кто-то воспроизведет тот же сценарий - тем же или другим способами, что и я.. Особенно буду рад, если результаты тестирования не совпадут с моими.
 
А зачем проверять? Я например, как джентельмен наслово верю.
 
Ну и где ответ разработчиков? проблема между прочим актуальная, такая ботва практически со всеми встроенными результатами отсюда и разница работы эксперта на реале и в тестере.
 
liveexpert:
Ну и где ответ разработчиков? проблема между прочим актуальная, такая ботва практически со всеми встроенными результатами отсюда и разница работы эксперта на реале и в тестере.


Это расхождение связано с алгоритмом моделирования. В тестере не удаётся полностью воспроизвести реал, т.к. МТ не сохраняет тиковую историю. Многое зависит от модели моделирования, используемой трейдером при тестировании. Посмотрите несколько статей разработчиков, посвящённых этому вопросу.

 
SK. писал (а):
liveexpert:
Ну и где ответ разработчиков? проблема между прочим актуальная, такая ботва практически со всеми встроенными результатами отсюда и разница работы эксперта на реале и в тестере.


Это расхождение связано с алгоритмом моделирования. В тестере не удаётся полностью воспроизвести реал, т.к. МТ не сохраняет тиковую историю. Многое зависит от модели моделирования, используемой трейдером при тестировании. Посмотрите несколько статей разработчиков, посвящённых этому вопросу.

А где доказательства? Человек просто задал вопрос без доказательной базы.

Первый вопрос в теме, описание условий и сам пример совершенно не подходят для доказательств. Соответственно, нет и реакции разработчиков.
 
Renat писал (а) : А где доказательства? Человек просто задал вопрос без доказательной
базы.

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

 Ага! То что приводят результаты работы тестера (т.e  фактический результат) - это все не доказательства.
 У меня, например, ЗигЗаг четко видит следующий перелом на другом ТФ!(а не только Close следующего бара) - но это тоже не доказательства.
В принципе - зачем разработчикам парится. Тем более что интересы разработчиков и ДС совпадают (одним меньше работы - другим больше бабок).
У меня все больше создается впечатление, что это все сделано специально(я про глюки) - только единицы смогут одновременно побороть терминал и рынок :)

Это не обсужение и не притензия - так, крик души :)


max_cpr  дай ссылку на конвертер.
 
vaa20003:
Ага! То что приводят результаты работы тестера (т.e фактический результат) - это все не доказательства.
В таком виде - нет. Пока есть только бездоказательные обвинения.
Я обычно против таких резких высказываний (со стороны разработчиков), а сейчас понимаю что без них не дойдет...
 
vaa20003:
Ага! То что приводят результаты работы тестера (т.e фактический результат) - это все не доказательства.
У меня, например, ЗигЗаг четко видит следующий перелом на другом ТФ!(а не только Close следующего бара) - но это тоже не доказательства.
В принципе - зачем разработчикам парится. Тем более что интересы разработчиков и ДС совпадают (одним меньше работы - другим больше бабок).
У меня все больше создается впечатление, что это все сделано специально(я про глюки) - только единицы смогут одновременно побороть терминал и рынок :)

Вот это не по-детски. Но на самом деле щупальца заговора тянутся гораздо дальше! Настоящая параноя не должна останавливаться на пол-пути!

Все знают, что многие хорошие прибыльные советники через какое-то время перестают быть прибыльными и начинают бодро сливать. Почему? Расхожий ответ - "мол рынок изменился". Нифига! Это заговор метаквотов и ДЦ-ов. Сервера дилеров регулярно отсылают информацию на сервер метаквотов о прибыльных экспертах, и метаквоты одновляют свою программу таким образом, чтобы данный конкретный подход к трейдингу перестал работать, и рассылают автоматическое обновление для всех ДЦ. Т.е. ещё вчера прибыльный советник перестаёт приносить прибыль и уже никогда ни в одном ДЦ не будет прибыльным.

Оставайтесь с нами и я расскажу страшную-престрашную историю про чёрный-пречёрный чемоданчик, что стоит в чёрной-пречёрной комнате...
 
timbo:
Но я же не говорил что это так.  Я описал свои ощущения. И привел мотивы :)
 
vaa20003:
Но я же не говорил что это так. Я описал свои ощущения. И привел мотивы :)
Это просто праздник какой-то... Что не сообщение, то перл достойный Доски Почёта.

Например так.
vaa20003 это чудак на букву М.
Я не утверждаю, что это так, а просто описываю свои ощущения. И даже могу привести мотивы.
А теперь мы посмотрим, как vaa20003 будет отмываться и доказывать, что он не то самое...
 

Если допустим использовался вот этот сборщик тиков

'Построитель равнообъёмных баров'


То могло произойти следующее

1. не совпадают массивы, т.е в тестере для расчета 1-го значения МА есть история, а для подсунутого массива истории нет (или она другая)

2. Как то не так произведен сбор.


Но если все правильно, то это аналогично утверждению, что функция


iMA(NULL,0,10 ,0, MODE_SMA,PRICE_OPEN, 0);

При подстановке ей значений допустим 1 2 3 4 5, выдает ответ 3.8. А второй раз все тоже самое 1 2 3 4 5 но ответ другой допустим 3.81. И меня терзают смутные сомнения :-), что ошибка в 1 и 2 пунктах, а не iMA (). Иначе тут бы форум уже давно раскалился 70% индикаторов используют эту функцию.

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