Смотри, как бесплатно скачать роботов

Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят

Понравился скрипт?
Оцени его работу в терминале MetaTrader 5

Библиотеки

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

fxsaber

Просмотров:
1066
Рейтинг:
голосов: 12
Опубликован:
2019.07.31 02:57
Обновлен:
2020.02.10 07:16

MT5-тестер автоматически сохраняет оптимизационные кеши (данные оптимизации) в файлах Tester\cache\*.opt.

И умеет экспортировать/импортировать их.


Данная библиотека позволяет работать с этими данными.


Сценарии

  • Вывод более полных данных, чем это предоставляет MT5-тестер.
  • Создание критериев оптимизации в любое время после проведенной Оптимизации.
  • Быстрое создание сет-файлов.
  • Фильтрация - остаются только интересуемые проходы.
  • Контейнер вариантов входных параметров для запуска советника на торговом счете.
  • Помощь при создании автооптимизационных критериев робастости ТС.
  • Создание полноценных оптимизационных кешей для кастомных Тестеров и фильтров сделок.
  • Чтение входных параметров оптимизационных проходов после изменения советника.
  • Передача пользователям полных данных для проходов (сет-файлы содержат мало информации).
  • Автоматизация Тестера.


Пример

Будем оптимизировать этот советник

input double inLots = 1;
input int inTP = 100;
input int inSL = 100;

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

#define Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK)

void OnInit(){ OrderSend(_Symbol, OP_BUY, inLots, Ask, 0, Ask - inSL * _Point, Ask + inTP * _Point); }

Настройки Тестера.

Входные параметры для Оптимизации.


После Оптимизации во вкладке ее результатов сделаем экспорт кеш-файла оптимизации.

Эскпорт кеша-файла оптимизации.


Теперь запускаем TesterCache-Example-скрипт

Окно запуска TesterCache_Example.


На выходе имеем

version = 514
copyright = Copyright 2000-2019, MetaQuotes Software Corp.
header_size = 1696
record_size = 296
expert_name = TestCache
expert_path = Experts\TestCache.ex5
server = MetaQuotes-Beta
symbol = TESTER_EURGBP.rann_RannForex
period = PERIOD_M1
date_from = 2019.07.26 00:00:00
date_to = 2019.07.31 00:00:00
date_forward = 1970.01.01 00:00:00
opt_mode = 0
ticks_mode = 2
last_criterion = 0
msc_min = 1
msc_max = 486
msc_avg = 3
group = demo (netting)
trade_currency = USD
trade_deposit = 100000
trade_condition = 0
trade_leverage = 100
trade_hedging = 1
trade_currency_digits = 2
parameters_size = 16
parameters_total = 3
opt_params_size = 16
opt_params_total = 2
dwords_cnt = 0
snapshot_size = 9
passes_total = 287
passes_passed = 287

Pass = 9
initial_deposit = 100000.0
withdrawal = 0.0
profit = -95.0
grossprofit = 0.0
grossloss = 95.0
maxprofit = 0.0
minprofit = 95.0
conprofitmax = 0.0
maxconprofit = 0.0
conlossmax = 95.0
maxconloss = 95.0
balance_min = 99905.0
maxdrawdown = 95.0
drawdownpercent = 0.095
reldrawdown = 95.0
reldrawdownpercent = 0.095
equity_min = 99905.0
maxdrawdown_e = 95.0
drawdownpercent_e = 0.095
reldrawdown_e = 95.0
reldrawdownpercnt_e = 0.095
expected_payoff = -95.0
profit_factor = 0.0
recovery_factor = -1.0
sharpe_ratio = 0.0
margin_level = 1.797693134862316e+308
custom_fitness = 0.0
deals = 2
trades = 1
profittrades = 0
losstrades = 1
shorttrades = 0
longtrades = 1
winshorttrades = 0
winlongtrades = 0
conprofitmax_trades = 0
maxconprofit_trades = 0
conlossmax_trades = 1
maxconloss_trades = 1
avgconwinners = 0
avgconloosers = 1

      [type] [integer_value] [double_value] [string_value]
[0,0]     14               0        0.00000 "inLots"      
[0,1]     13               1        1.90000 "1.9"         
[0,2]     13               1        1.00000 "1.0"         
[0,3]     13               0        0.10000 "0.1"         
[0,4]     13               5        5.00000 "5.0"         
[1,0]     14               0        0.00000 "inSL"        
[1,1]      7              50       50.00000 "50"          
[1,2]      7              50       50.00000 "50"          
[1,3]      7              25       25.00000 "25"          
[1,4]      7             200      200.00000 "200"         

Выведены все данные соответствующего прохода/записи.


Программирование

Запущенный выше скрипт имеет следующие комментарии в своем исходнике.

// Пример работы с библиотекой TesterCache.

#property script_show_inputs

input string inFileName = "Tester.opt"; // opt-FileName
input int inNum = 0;                    // Какую запись показать

#include <fxsaber\TesterCache\TesterCache.mqh> // Чтение/Запись opt-файлов оптимизационных кешей MT5-тестера.

void OnStart()
{
//  TESTERCACHE<MATHEMATICS> Cache(inFileName);
  TESTERCACHE<ExpTradeSummary> Cache; 

  if (Cache.Load(inFileName)) // Прочитали оптимизационный кеш.
  {
    MqlParam Params[][5];  
    const int Size = Cache.GetInputs(inNum, Params); // Считали соответствующие оптимизируемые входные параметры.
    
    Print(Cache.Header.ToString()); // Вывели основные данные оптимизационного кеша.
    Print(Cache[inNum].ToString()); // Вывели стат. данные запрошенной записи
    ArrayPrint(Params);             // Вывели ее оптимизируемые входные параметры.
    
    Cache.SaveSet(inNum); // Создали set-файл соответствующей записи.
    Cache.Save(__FILE__); // Сохранили в opt-файл.
  }
}


Особенности

  • Использует библиотеку TypeToBytes.
  • Описание полей смотрите в соответствующих mqh-файлах.
  • Библиотека работает во всех режимах Оптимизации, включая математический.


Благодарности

Спасибо разработчикам за раскрытие opt-формата.

    MaDev EA MaDev EA

    Торговая стратегия на основе пользовательского индикатора MaDev

    HLine Profit HLine Profit

    Индикатор показывает прибыль на уровне горизонтальной линии

    Pivot Points iMA Pivot Points iMA

    Торговая стратегия использует Pivot Point и индикатор iMA (Moving Average, MA). Отображение уровней осуществляется графическими объектами OBJ_HLINE.

    New Day New Pending Order New Day New Pending Order

    Отложенные ордера выставляются каждый день в индивидуальное время