Простая идея мультивалютного тестера с примером реализации

 
Простота идеи заключается в том, что надо только реализовать работу с виртуальными ордерами. Т.е. написать аналоги штатным Orders-функциям: OrderSend, OrderClose, OrderProfit, OrderSelect, ....

Для примера взял обсуждаемый сейчас на форуме советник Spreader.

Переделка минимальна:

ׂ 
Сравнение исходной (слева) версии и переделанной (справа)

Мультивалютный тестер - это индикатор Balance и Equity работы советника на истории.

ׂ 
Пример входных параметров мультивалютного тестера

ׂ 
Результат работы мультивалютного тестера

Все файлы поместите в папку indicators. V_Trading.mqh (реализация виртуальных ордеров) написан минимально для данного примера и демонстрирует саму идею.

Так выглядит код запуска мультивалютного тестера (V_Equity.mq4):

void start()
{  
  bool Flag = FALSE;
  
  while (CurBar > EndBar)   
  {
    if (Flag) // из-за особенности реализации советника Spreader (openbarspriceonly) вызываем дважды на одном баре
    {
      CurBar--;
      V_SetTime(Time[CurBar]); 
    }
    
    Flag = !Flag;
    
    V_Spreader("EURUSD", "GBPUSD", 1, 100);
    V_Spreader("USDJPY", "CADJPY", 1, 100);
    V_Spreader("CHFJPY", "GBPJPY", 1, 100);
    V_Spreader("NZDJPY", "AUDJPY", 1, 100);
           
    VEquity[CurBar] = V_AccountEquity();
    VBalance[CurBar] = V_AccountBalance();
   }
  
  return;
}

Мультивалютный анализ с таким тестером удобно проводить вместе с синхронизирующим графики скриптом.


P.S. Через виртуальные ордера решаются многие задачи. Например, автоматическая конвертация стандартных стратегий (с возможностью лока) в неттинговые с идентичным результатом торговли.

Файлы:
v_equity.rar  3 kb
 

Если позволите .

Хочу предложить ещё один метод тестирования на нескольких парах одновременно. Есть такая функция она позволяет синхронизироать два,можно и более MT4 в режиме тестирования .

Достаточно в испытываемый эксперт вставить эту функцию и запустить каждую пару на отдельном терминале. Терминалы синхронизируются по времени и будут параллельно торговать каждый свою пару. Результаты можно будет сложить. При необходимости можно наладить и связь между терминалами для передачи информации. Тестировать правда придётся в визуальном режиме.

 

а можно по подробнее...

Нужно запустить в режиме тестирования Spreder и подвесить к нему индикатор V_Equty?

Или как?

 
zhuki >>:

Если позволите .

Хочу предложить ещё один метод тестирования на нескольких парах одновременно. Есть такая функция она позволяет синхронизироать два,можно и более MT4 в режиме тестирования .

Достаточно в испытываемый эксперт вставить эту функцию и запустить каждую пару на отдельном терминале. Терминалы синхронизируются по времени и будут параллельно торговать каждый свою пару. Результаты можно будет сложить. При необходимости можно наладить и связь между терминалами для передачи информации. Тестировать правда придётся в визуальном режиме.

При правильной организации не обязательно будет в визуальном режиме.

Просто каждый должен будет проверять на отставание другой терминал...

Это вобщем, но может конечно предлагаемая Вами функция имеет такие ограничения..?

 
Vitya >>:

а можно по подробнее...

Нужно запустить в режиме тестирования Spreder и подвесить к нему индикатор V_Equty?

Или как?

Нужно только запустить один раз на любом графике индикатор V_Equity. Параметрами Spreader-a можете управлять в функции start индикатора, а также включать и выключать дополнительные копии советника.

 

Вообще я предлагаю идею, функцию я не предлагал.

Вся проблема в том что, нельзя притормозить или ускорить тестирование.Единственный вариант это запустить ожидание, да ещё и вне тестера.

Если есть предложения рад буду услышать.

Прошу прощения getch,что вмешиваюсь в Вашу тему. Я подумал будем идеи кидать. 

 

Спасибо очень нужная штука.

Теперь можно значительно увеличить интенсивность перебора параметров

 
getch >>:
Простота идеи заключается в том, что надо только реализовать работу с виртуальными ордерами. Т.е. написать аналоги штатным Orders-функциям: OrderSend, OrderClose, OrderProfit, OrderSelect, ....

Великолепное решение... Респект...

 
getch >>:

Нужно только запустить один раз на любом графике индикатор V_Equity. Параметрами Spreader-a можете управлять в функции start индикатора, а также включать и выключать дополнительные копии советника.

допусти я кое чего добавил в исходный код, нужно внесли соответствующие изменения только в V_Spreder? больше ничего менять не нужно? в V_Trading к примеру.

И ещё, если попробовать переделать код Spredera под фючерсы а не под валяты, в функции подсчёта профита нужно что то менять?

 
Vitya >>:

допусти я кое чего добавил в исходный код, нужно внесли соответствующие изменения только в V_Spreder? больше ничего менять не нужно? в V_Trading к примеру.

И ещё, если попробовать переделать код Spredera под фючерсы а не под валяты, в функции подсчёта профита нужно что то менять?

Идея тем и хороша, что V_Trading и V_Equity менять не надо. Только V_Spreader. Для фьючерсов тоже работать, вроде, должно. Еще замечание, поскольку мультивалютный тестер "по всем тикам" был бы неоднозначен в результатах работы, то данный тестер работает "по ценам открытия" (в будущее не заглядывает).

Мэджики, частичное закрытие, отложенные ордера в V_Trading не делал. Задача была только показать идею.

 
getch >>:

Идея тем и хороша, что V_Trading и V_Equity менять не надо. Только V_Spreader. Для фьючерсов тоже работать, вроде, должно. Еще замечание, поскольку мультивалютный тестер "по всем тикам" был бы неоднозначен в результатах работы, то данный тестер работает "по ценам открытия" (в будущее не заглядывает).

Мэджики, частичное закрытие, отложенные ордера в V_Trading не делал. Задача была только показать идею.

Ещё раз спасибо!

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