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

BestInterval - библиотека для MetaTrader 5

Просмотров:
4767
Рейтинг:
(45)
Опубликован:
2018.10.12 01:30
Обновлен:
2019.12.11 12:42
\MQL5\Include\fxsaber\BestInterval\ \MQL5\Experts\fxsaber\
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

Рыночные закономерности зависят от интервалов внутри суток или недели. По этой причине разумно ограничивать торговлю ТС по времени.

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


Соответственно, встает задача, как найти наилучшее время для торговли своей ТС? Как правило, нахождение такого интервала выбирается либо на интуиции алготрейдера или же накладывается на плечи штатного Тестера. Интуицию упустим, как не технический случай. Что же касается использования штатного Тестера для решения такой задачи, то это автоматически влечет увеличение числа проходов на порядки, а значит времени на Оптимизацию и денег (Облако). И все равно там будут моменты, могущие быть улучшены.


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


Реализация.

Данная кроссплатформенная библиотека позволяет очень быстро и максимально эффективно находить оптимальный интервал работы ТС.

Пример использования с комментариями:

#include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006

#include <fxsaber\BestInterval\BestInterval.mqh> // Вычисление лучшего интервала торговли

void OnDeinit( const int )
{
  BESTINTERVAL BestInterval; // Создали объект для вычисления лучшего интервала торговли
  
  BestInterval.Set(); // Поместили историю торгов
  
  const int AmountIntervals = 3; // Сколько наихудших интервалов торговли выбросить
  
  for (int i = 0; i < AmountIntervals; i++)
    if (BestInterval.DeleteWorseInterval()) // Если что-то выбросили
      Print(BestInterval.ToString());       // Распечатаем полученные данные торговли
    else
      break;                                // Иначе - выйдем
}


Вместо расписывания этого сухого примера использования библиотеки, покажем реальное использование на скальперском советнике.


Скальпер.

Запускаем круглосуточный скальпер в MT5-Тестере, получая такую картину

смотрим в лог одиночного прогона

Amount of Delete Intervals = 0
00:00:00 - 23:59:59 : Profit = 20121.00, Total = 1138, PF = 1.68, Mean = 17.68
SUMMARY: 00:00:00 - 23:59:59 : Profit = 20121.00, Total = 1138, PF = 1.68, Mean = 17.68

здесь данные сырого прохода - не выброшено никаких интервалов.


Теперь приведем последовательно далее записи в журнале, где постепенно будет показан эффект от выбрасывания слабых интервалов.


Выбросили один интервал:

Amount of Delete Intervals = 1
00:00:00 - 10:08:04 : Profit = 6830.00, Total = 203, PF = 3.10, Mean = 33.65
11:05:24 - 23:59:59 : Profit = 17086.00, Total = 819, PF = 1.93, Mean = 20.86
SUMMARY: 00:00:00 - 23:59:59 : Profit = 23916.00, Total = 1022, PF = 2.10, Mean = 23.40

Выделенные строки - это интервалы торговли. Видно, что с 10-11 часов торговли нет - выброшена.


Без двух интервалов:

Amount of Delete Intervals = 2
00:00:00 - 10:08:04 : Profit = 6830.00, Total = 203, PF = 3.10, Mean = 33.65
11:05:24 - 12:21:06 : Profit = 2767.00, Total = 112, PF = 2.46, Mean = 24.71
13:02:59 - 23:59:59 : Profit = 15915.00, Total = 664, PF = 2.17, Mean = 23.97
SUMMARY: 00:00:00 - 23:59:59 : Profit = 25512.00, Total = 979, PF = 2.36, Mean = 26.06


Наконец, без трех интервалов

Amount of Delete Intervals = 3
00:00:00 - 10:08:04 : Profit = 6830.00, Total = 203, PF = 3.10, Mean = 33.65
11:05:24 - 12:21:06 : Profit = 2767.00, Total = 112, PF = 2.46, Mean = 24.71
13:02:59 - 17:26:06 : Profit = 7476.00, Total = 348, PF = 1.98, Mean = 21.48
17:47:36 - 23:59:59 : Profit = 9640.00, Total = 288, PF = 3.31, Mean = 33.47
SUMMARY: 00:00:00 - 23:59:59 : Profit = 26713.00, Total = 951, PF = 2.57, Mean = 28.09


Обратите внимание, как с каждым выкинутым интервалом позитивно растут показатели ТС.


Применяем к ТС вычисленный фильтр

Можно визуально сравнить два графика ДО и ПОСЛЕ. Возможно, кто-то сделает соответствующую GIF-анимацию для наглядности...

По итогу показатели ТС значительно улучшились почти бесплатно: минимум телодвижений и времени.


OnTester.

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

#define BESTINTERVAL_ONTESTER // Критерий оптимизации - прибыль лучшего интервала.
#include <fxsaber\BestInterval\BestInterval.mqh> // Вычисление лучшего интервала торговли


Выделенная строка как раз позволяет ничего больше не писать в советнике. При этом еще задается кастомный критерий оптимизации, позволяющий не искать оптимизатором хорошие интервалы, как это делалось по-старинке. Критерий будет возвращать сразу результат ТС на хорошем вычисленном интервале и, соответственно, показывать потенциал ТС гораздо больше, чем при классической Оптимизации.


Чтобы применить найденный интервал после его расчета, нужно во входных параметрах указать BestInteval Action = true.



Итог.

Все ТС нужно проверять широко, включая вычисление лучшего интервала торговли. Поэтому данный инструментарий относится к разряду must-have.

Разумно брать все текущие, прошлые и будущие ТС и подключать к ним (двумя строками выше) нахождение оптимального времени торговли. Создание профитной ТС или улучшение робастости уже имеющейся ТС с данной реализацией становится значительно легче


Особенности.

  • Целесообразно выключать/включать торговлю на найденных интервалах с использованием виртуального торгового окружения.
  • Алгоритм библиотеки очень быстрый. Может легко быть выдран для тех же целей в сторонние анализаторы торговли.
  • Идея авторская. Возможно, есть аналоги.
  • До реализации интервалов внутри недели руки не дошли. Возможно, в будущем...
  • Библиотека кроссплатформенная. Все актуально для MT4 и MT5.
  • Расчет лучшего интервала и его применение в Тестере производится без изменения оригинального исходника советника.


ЗЫ

Просьба в комментариях делиться результатами применения (как выше) библиотеки ДО и ПОСЛЕ в виде картинок и соответствующих кусков логов одиночного прохода MT4/5.

Extreme EA Extreme EA

Используются индикаторы iCCI (Commodity Channel Index, CCI) и два iMA (Moving Average, MA).

Peceptron_Mult Peceptron_Mult

Мультисимвольный советник. Рабочий аглоритм - персептрон (простая нейронная сеть). Использует индикатор iAC (Acceleration/Deceleration, Accelerator/Decelerator Oscillator, AC).

HLCrossSigForWPR_HTF HLCrossSigForWPR_HTF

Индикатор HLCrossSigForWPR с возможностью изменения таймфрейма индикатора во входных параметрах

RJTX_Matches_Smoothed_Alert RJTX_Matches_Smoothed_Alert

Индикатор RJTX_Matches_Smoothed с подачей алертов, с отправкой почтовых сообщений и push-сообщений на смартфон