Нестабильность тестера советников

 

Я недавно обнаружил немного неожиданное поведение тестера. Возьмем стандартный советник, например - Moving Average.mq4.

Выберем пару EURUSD, период 2009.01.01 – 2009.06.01, ТФ - 5М, Модель: все тики. Протестируем советник несколько раз нажав кнопку старт. Получаем следующие прибыли:

Чистая прибыль

-3417.01

-4342.85

-2751.73

-2751.73

-5489.72

Всего сделок

848

846

848

848

847

Вроде бы результат должен быть одним и тем же. Но нет! Прибыль и количество сделок отличаются. Прибыль может отличаться в 2 раза. Аналогичная ситуация и для моделирования по ценам открытия, и на других таймфреймах. При одиночном тестировании – это пол беды, но при оптимизации это может вызвать большие проблемы, т.к. прибыль оптимальных параметров может быть занижена, а плохих параметров – завышена. Следовательно, оптимизатор может оказаться неэффективным.

Почему это происходит? Такая проблема реально существует? Или я делал что-то не так? Как быть в этом случае?

 
 

 Доброго времени суток! Забыл предупредить, что в тестере от ДЦ 'Альпари' - как у меня явно необходимо приводить все Double к 5-знаку.

т.е. и встроенные функции тоже, а не только пользовательские. Например:

OrdProf=NormalizeDouble(OrderProfit(),Digits);

OrdSL=NormalizeDouble(OrderStopLoss(),Digits);

OrdTP=NormalizeDouble(OrderTakeProfit(),Digits);

и так далее со всеми функциями и переменными типа Double иначе начинается полная чертовщина. Не знаю почему, но похоже весь 'гемор' происходит от пятого знака в котировках. До его введения таких глюков не замечал. Я с Альпой уже года полтора из них на 4-знаке просидел половину времени и все было "ровно" - а пояявился 5-й и пошло-поехало все программы бересобибирать по новой. Да еще MarketInfo() у альпы иногда черте, что выдает.

P.S.Чтоб у вас все было и вам за это ничего не было.

 

С некоторого времени без нормализации даже в тестере. даже на четырех знаке ничего не работает потому пользую такую функцию :

double nd(double in,string sy=""){
  if(sy==""){sy=Symbol();}
  return(NormalizeDouble(in,MarketInfo(sy,MODE_DIGITS));
}
 

Пардон, а если речь об онлайн-торговле, а не о тестере, то получаемые с сервера

после RefreshRetes() цены Bid/Ask тоже нормализовывать рекомендуете?

 
goldtrader >>:

Пардон, а если речь об онлайн-торговле, а не о тестере, то получаемые с сервера

после RefreshRetes() цены Bid/Ask тоже нормализовывать рекомендуете?


с некоторых пор и на водку дуть следует.
 
goldtrader писал(а) >>

Пардон, а если речь об онлайн-торговле, а не о тестере, то получаемые с сервера

после RefreshRetes() цены Bid/Ask тоже нормализовывать рекомендуете?

Насколько я понимаю, Ask и Bid нормализовывать не надо.

Кроме того не надо нормализовывать значения полученные из OrderTakeProfit() и OrderStopLoss().

Я использую нормализацию только для значений, полученных расчетным путем.

 
ibform_n писал(а) >>

Получаем следующие прибыли:

Чистая прибыль

-3417.01

-4342.85

-2751.73

-2751.73

-5489.72

Всего сделок

848

846

848

848

847

Почему это происходит? Такая проблема реально существует? Или я делал что-то не так? Как быть в этом случае?

Похоже, тестируете на плавающем спреде.

 
PapaYozh писал(а) >>

Насколько я понимаю, Ask и Bid нормализовывать не надо.

Кроме того не надо нормализовывать значения полученные из OrderTakeProfit() и OrderStopLoss().

Я использую нормализацию только для значений, полученных расчетным путем.

Нифига - попробуйте на разных терминалах 25-30 % получите ошибки...

 
xrust писал(а) >>

Нифига - попробуйте на разных терминалах 25-30 % получите ошибки...

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

А то нашел только это косвенное подтверждение моих слов

 
xrust писал(а) >>

Нифига - попробуйте на разных терминалах 25-30 % получите ошибки...

Хорошо если дождёмся этих комментариев. :(

Услышать бы хотя бы практические рекомендации от корифеев. Пытаюсь резюмировать:

Нужно нормализовать ЛЮБЫЕ цены, подаваемые в функции OrderSend(), OrderClose(), OrderCloseBy() и OrderModify()

Так?

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