EMA + tester

 
extern int EMA_DIFF = 1;
 
int start() {   
   EMA_5_Prev = iMA(NULL, period, 5, 0, MODE_EMA, PRICE_CLOSE, 1);
   EMA_9_Prev = iMA(NULL, period, 9, 0, MODE_EMA, PRICE_CLOSE, 1);
   EMA_5_Curr = iMA(NULL, period, 5, 0, MODE_EMA, PRICE_CLOSE, 0);
   EMA_9_Curr = iMA(NULL, period, 9, 0, MODE_EMA, PRICE_CLOSE, 0);                  
   
     
   if ( (EMA_5_Prev > EMA_9_Prev) && (EMA_5_Curr < (EMA_9_Curr-EMA_DIFF*Point) ) ) {
      ...
   } 
 
}

Не могу понять почему тестер не выполняет этого неравенства так как надо - написано, что если пятая средняя больше девятой средней на предыдущем баре и на текущем баре пятая уже ниже девятой, причем значения отличаются на 5 пунктов, то ....

Сделка открывается при простом пересечении - без этой разницы на 5 пипсах... не подскажете как быть?

тестер в режиме моделирования тиков

Спасибо.

 
А визуально Вы видели такое пересечение? У меня есть сильное подозрение, что для такого условия цена должна упасть как-то не реально.
 
Rosh:
А визуально Вы видели такое пересечение? У меня есть сильное подозрение, что для такого условия цена должна упасть как-то не реально.


Честно говоря да, может быть я Ваш вопрос не понял?

В режиме реального времени случается, что средние пересекаются, но этого недостаточно, так как они тоже динамически меняются - считается по полю Close, вот ч тобы они не входить там, где не надо я решил, что нужно, чтобы была разница хотя бы в 5 пунктов.

К тому же, здесь вопрос в том, что если бы этого не реализовывалось, то мтс вообще не оотркывала бы сделок, а она открывает просто при простом пересечении, пишет мне через Print(), что ЕМА5 меньше ЕМА9 на 1 пункт а не на 5 и все.

Вот рисунок - разница 16 пунктов между средними, в кружке - разница 1 пункт.

 
Вы так и не показали то место на графике,где Ваше условие выполняется, а именно: ЕМА5 выше чем ЕМА9, а на следующем баре ЕМА 5 падает на 5 пунктов ниже ЕМА9 . Дайте точные условия выполнения - инструмент, тайм-фрейм, дата.
 
Rosh:
Вы так и не показали то место на графике,где Ваше условие выполняется, а именно: ЕМА5 выше чем ЕМА9, а на следующем баре ЕМА 5 падает на 5 пунктов ниже ЕМА9 . Дайте точные условия выполнения - инструмент, тайм-фрейм, дата.


На счет пяти пунктов я наверно загнул. На этом рисунке на предыдущем баре ЕМА5 выше чем ЕМА9, а на следующем ЕМА 5 падает на 4 пункта ниже ЕМА9.

GBPUSD, H4.

 
В этом месте фактически разница в 5 пунктов, в Вашем условии требуется 6 и более пунктов. Расставьте стрелки на графике как в статье и посмотрите как часто они встречаются.

 
 
Rosh:

В этом месте фактически разница в 5 пунктов, в Вашем условии требуется 6 и более пунктов. Расставьте стрелки на графике как в статье и посмотрите как часто они встречаются.


Уважаемый Rosh, дело не в том сколько пунктов 5 или 6. Пусть будет 2. Это встречается не так редко. Вся беда в том, что тестер не воспринимает это условие, если бы он не открывал сделок вообще, начиная с первого января этого года, я бы это понял, потому как такие ситуации действительно редко встречаются, и тестер все сделал бы в соответствии с кодом, однако сделки открываются, при том, что ЕМА5 отличается от ЕМА9 только на один пункт, т.е. как только они коснулись - это уже считается пересечением. Такого быть не должно, поэтому я хочу сделать своего рода огрубление пересечения.
 
Хорошо, отправляю Вас читать статью Strategy Tester: режимы моделирования при тестировании торговых стратегий , и если она Вам не подскажет Вашу ошибку - возвращайтесь, я объясню.
 
Rosh:
Хорошо, отправляю Вас читать статью Strategy Tester: режимы моделирования при тестировании торговых стратегий , и если она Вам не подскажет Вашу ошибку - возвращайтесь, я объясню.

Я ее читал, прочитал еще раз на всякий случай. Я  понимаю ,что тики при моделировании отличаются от реальных, и что если в реальном времени могла быть ситуация, когда средние на 2 пункта отличаются друг от друга, то при моделировании этого не могло быть. Однако эксперт в режиме отладки получает смоделированые тики также, как он их получал бы, будь они реальные, и когда я вижу ситуацию, когда средние только только пересеклись и разница между ними не 2 пункта а 1 и советник открывает сделку, меня это удивляет, потому как в коде (первый пост) было написано, что открыватьс делку нужно только если разница составляет два пункта и более.
 

А что такое в вашем коде переменная period и почему там не стоит 0 ?

Эксперт берет данные не с текущего графика ?

 
trajor:
Rosh:
Хорошо, отправляю Вас читать статью Strategy Tester: режимы моделирования при тестировании торговых стратегий , и если она Вам не подскажет Вашу ошибку - возвращайтесь, я объясню.

Я ее читал, прочитал еще раз на всякий случай. Я понимаю ,что тики при моделировании отличаются от реальных, и что если в реальном времени могла быть ситуация, когда средние на 2 пункта отличаются друг от друга, то при моделировании этого не могло быть. Однако эксперт в режиме отладки получает смоделированые тики также, как он их получал бы, будь они реальные, и когда я вижу ситуацию, когда средние только только пересеклись и разница между ними не 2 пункта а 1 и советник открывает сделку, меня это удивляет, потому как в коде (первый пост) было написано, что открыватьс делку нужно только если разница составляет два пункта и более.
Я думаю, что Вы тестируете в модели Open Price. Если нет - будем разбираться дальше.
Причина обращения: