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

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

Просмотров:
7817
Рейтинг:
(40)
Опубликован:
2019.03.01 04:13
Обновлен:
2019.07.11 21:16
\MQL5\Include\fxsaber\Tester\ \MQL5\Experts\fxsaber\ \MQL5\
Tester_Full.zip (285.97 KB)
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

Эта библиотека позволяет любой MT4-style советник запустить в визуальном Тестере.

Для этого вначале нужно прописать только две строки

    #define TESTER_CUSTOM // Запуск советника в пользовательском Тестере
    #include <fxsaber\Tester\Tester.mqh> // https://www.mql5.com/ru/code/24848


    После компиляции запускаете советник на нужном Вам чарте и получаете окно визуального Тестера, где крутится Ваша ТС.


    В отличие от MT5-Тестера, данный визуальный Тестер работает не на Агенте, а в самом Терминале.


    Возможности

    • Запуск и снятие индикаторов.
    • Любое использование графических объектов.
    • Переключение таймфрейма на лету.
    • Реакция на все события чарта.
    • Полный доступ для любых MQL-программ Терминала.
    • Тест идет на истории до текущего времени и продолжается реал-тайм.
    • Получение HTML-отчетов в любой момент.
    • Возврат Тестера в состояния прошлого.
    • Формирование своих цен.
    • Ручное управление снятиями/пополнениями тестерного счета.

    Все это в чем-то повторяет возможности MT4-Тестера. Но есть и доп. возможности.


    Сценарии использования

    • Запуск советника и на боевом счету и в данном Тестере. Что даст возможность воочию наблюдать, как ТС работает на торговом счету и в Тестере в реальном времени. Такой сравнительный анализ дает прочувствовать нюансы боевой торговли и учесть их в будущем.
    • Перед запуском советника на боевом счете можно прогнать его по свежайшим данным и получить HTML-отчет. Что дает дополнительный контроль правильности задания входных параметров ТС.
    • Полноценный эмулятор ручной торговли на исторических данных. Модифицируйте свои торговые панели двумя строками.


    Клавиши управления

    • Pause - вкл/выкл паузу.
    • Стрелки вверх/вниз - увеличение/уменьшение скорости Тестера.
    • F5 - добавление нового тика (работает в режиме Паузы).
    • R - сохранение HTML-торгового отчета (работает в режиме Паузы).
    • ESC+UP/DOWN - пополнение/cнятие счета.
    • TAB+UP/DOWN - увеличение/уменьшение обеих цен тика.
    • CTRL+UP/DOWN - увеличение/уменьшение Bid-цены тика.
    • SHIFT+UP/DOWN - увеличение/уменьшение Ask-цены тика.
    • CTRL+LEFT - возврат в прошлое на начало любой предыдущей минуты.


    Особенности

    • Не требует DLL - может быть в Маркете.
    • Для работы используются библиотеки Expert, Symbol, Virtual, Report и MT4Orders. Нужно установить самостоятельно их свежие версии.
    • Есть вариант получить сразу работающее решение почти без телодвижений - скачать и распаковать ZIP-архив (обновляться не будет).
    • Запускает только MT4-style советники.
    • В советнике должны присутствовать OnInit, OnDeinit, OnTick, OnTimer и OnChartEvent. Если чего-то нет - прописать пустыми.
    • Тест идет по реальным тикам.
    • Самый простой способ наблюдать все подробности торговли - подключить TradePanel_C#. См. в примерах.


    Примеры

    Первый запуск Тестера.

    С библиотекой в качестве примера идет простейший советник для ручной торговли.

    // #define REPORT_BROWSER      // Создание отчета с запуском браузера - требует разрешения DLL.
    #define TESTER_CUSTOM // Запуск советника в пользовательском Тестере
    #include <fxsaber\Tester\Tester.mqh> // https://www.mql5.com/ru/code/24848
    
    // Простейший советник для ручной торговли.
    
    #include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006
    
    #define Bid SymbolInfoDouble(_Symbol, SYMBOL_BID)
    #define Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK)
    
    #define KEY_B 66
    #define KEY_S 83
    #define KEY_C 87
    
    // Клавиша b - покупка, s - продажа, c - закрытие.
    void OnChartEvent( const int id, const long &lparam, const double &dparam, const string &sparam )
    {
      if (id == CHARTEVENT_KEYDOWN)
      {
        switch ((int)lparam)
        {
        case KEY_B: // buy
          OrderSend(_Symbol, OP_BUY, 1, Ask, 100, 0, 0);
        
          break;
        case KEY_S: // sell
          OrderSend(_Symbol, OP_SELL, 1, Bid, 100, 0, 0);
        
          break;
        default:
        case KEY_C: // close
          for (int i = OrdersTotal() - 1; i >= 0; i--)
            if (OrderSelect(i, SELECT_BY_POS) && (OrderType() <= OP_SELL))
              OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 100);
        }
      }
    }
    
    // Неиспользуемые On-функции нужно прописать пустыми.
    void OnTick() {}
    void OnTimer() {}
    int OnInit() { return(INIT_SUCCEEDED); }
    void OnDeinit( const int ) {}

    Пример позволяет быстро познакомиться с принципами работы Тестера. Попробовать клавиши управления и т.д.


    Ручная торговля

    // Полноценная ручная торговля на исторических данных + реал-тайм
    
    #define REPORT_BROWSER      // Создание отчета с запуском браузера - требует разрешения DLL.
    #define TESTER_CUSTOM // Запуск советника в пользовательском Тестере
    #include <fxsaber\Tester\Tester.mqh> // https://www.mql5.com/ru/code/24848
    
    #include <IgorM\TradePanel_C#\TradePanel_C#.mqh> // https://www.mql5.com/ru/code/24829
    
    void OnChartEvent( const int id, const long &lparam, const double &dparam, const string &sparam ) {}
    void OnTick() {}
    void OnTimer() {}
    int OnInit() { return(INIT_SUCCEEDED); }
    void OnDeinit( const int ) {}

    Результат запуска этого советника показан на картинке к данному описанию.


    Автоматическая торговля

    #define TESTER_CUSTOM // Запуск советника в пользовательском Тестере
    #include <fxsaber\Tester\Tester.mqh> // https://www.mql5.com/ru/code/24848
    
    // Подключили MT4-style советник. Исходники менять не требуется.
    #include <..\Experts\fxsaber\TesterEA\TesterEA.mq4> // https://www.mql5.com/ru/code/22770
    
    void OnChartEvent( const int id, const long &lparam, const double &dparam, const string &sparam ) {}
    void OnTimer() {}
    int OnInit() { return(INIT_SUCCEEDED); }

    Щелкните по изображению, чтобы увидеть анимацию.

    Chaikin Oscillator EA Chaikin Oscillator EA

    Торговая стратегия на базе индикатора iChaikin (Chaikin Oscillator, CHO)

    Din_fibo_Nex_Chn Din_fibo_Nex_Chn

    Индикатор линии перемещения трейлинстопа

    ATR arrow level ATR arrow level

    Модификация стандартного индикатора iATR (Average True Range, ATR).

    Flat night Flat night

    Вечером выставляется небольшая сетка отложенных Limit ордеров. Утром всё закрываем.