Смотри, как бесплатно скачать роботов
Ищи нас в Twitter!
Ставь лайки и следи за новостями
Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят
Понравился скрипт?
Оцени его работу в терминале MetaTrader 5
Советники

Использование функции ExpertRemove() для уменьшения времени тестирования - эксперт для MetaTrader 4

Просмотров:
2090
Рейтинг:
(10)
Опубликован:
2023.05.18 14:39
Обновлен:
2023.05.18 15:34
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

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

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

В блоке объявления переменных задаем переменную ограничивающую потери эксперта, в данном случае - нижний предел свободных средств на счете (то что называется "Свободная маржа" в окне терминала):

extern int FreeMargin = 90;  //Свободные средства (в валюте счета)

Затем, в блоке события OnTick() мы наблюдаем за этими самыми свободными средствами и если их стало меньше нашего предела - вызываем функцию ExpertRemove() и прекращаем тестирование данной итерации (конечно же мы также проверяем что мы находимся в тестере (результат функции IsTesting()), а не в реальном боевом режиме):

void OnTick()   
  {
  . . .   
  if(IsTesting()&&AccountInfoDouble(ACCOUNT_MARGIN_FREE)<=FreeMargin) ExpertRemove();
  . . . 

Тестер собирает статистику данной итерации и запускает тестирование следующего набора данных не доходя до конца диапазона дат для данного набора.

Ну в самом деле, зачем продолжать тестирование если данный набор параметров уже провалился - депозит счета не увеличился, а уменьшился :)

Скриншоты.

 

Начальный депозит 

  

Условие неудачи


 Скриншот предполагаемого(расчетного) времени тестирования без этой полезной функции

Скриншот предполагаемого(расчетного) времени тестирования без этой полезной функции


Скриншот предполагаемого(расчетного) времени тестирования со включенной функцией

Скриншот предполагаемого(расчетного) времени тестирования со включенной функцией


На деле разница даже больше чем здесь получается из картинок. Тестирование 1 неудачной итерации без функции занимает примерно 20 секунд, с функцией за 1 секунду тестируются 2-5 (и даже больше) итераций, в зависимости от степени неудачности :)

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

Также не обязательно делать отслеживаемый параметр внешним (extern), просто так его удобнее контроллировать без перекомпиляции каждый раз. Можно сделать это extern на этапе тестирования и отладки, а затем в финальной версии просто убрать совсем или как вы захотите :)

AbsorptionSignal AbsorptionSignal

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

AllAverages v4.9 AllAverages v4.9

Одна из последний версий этого индикатора на текущий момент. Огромная база разных модификаций средних скользящих, с функцией мультитаймфрейма, отправкой сигналов на почту и push уведомлений.

ScalePrice - ценовая шкала для слабовидящих. ScalePrice - ценовая шкала для слабовидящих.

Замучил мелкий шрифт в терминале? Этот индикатор делает цифры цены видимыми!

Reaper_v2.8.mq4 Reaper_v2.8.mq4

Интересный советник на сигналах индикатора Alligator,ATR и индикатора Moving Averages.