Ставь лайки и следи за новостями
Поставь на него ссылку - пусть другие тоже оценят
Оцени его работу в терминале MetaTrader 5
- Просмотров:
- 3729
- Рейтинг:
- Опубликован:
- 2019.07.31 02:57
- Обновлен:
- 2024.06.10 12:39
-
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу
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-скрипт
На выходе имеем
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](https://c.mql5.com/i/code/expert.png)
Торговая стратегия на основе пользовательского индикатора MaDev
![HLine Profit](https://c.mql5.com/i/code/indicator.png)
Индикатор показывает прибыль на уровне горизонтальной линии
![Pivot Points iMA](https://c.mql5.com/i/code/expert.png)
Торговая стратегия использует Pivot Point и индикатор iMA (Moving Average, MA). Отображение уровней осуществляется графическими объектами OBJ_HLINE.
![New Day New Pending Order](https://c.mql5.com/i/code/expert.png)
Отложенные ордера выставляются каждый день в индивидуальное время