![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
прикрепите полный ини файл
Ну полный наверное не стоит, только тестерную часть:
[Tester]
; имя файла эксперта, который должен быть запущен на тестирование (оптимизацию). Если этот параметр отсутствует, тестирование не будет запущено.
Expert=MyExp.ex4
; имя файла с параметрами советника. Данный файл должен лежать в папке \tester в каталоге установки платформы.
ExpertParameters=MyExp_opt01.set
; название инструмента, который будет использоваться в качестве основного символа тестирования. В случае отсутствия данного параметра будет использован последний выбранный символ в тестере.
Symbol=GBPUSD
; период графика тестирования (любой период из 21 доступного в платформе). Если данный параметр отсутствует, используется период H1.
Period=3
; с помощью данного параметра советнику можно передать значение счета, на котором якобы происходит его тестирование. Необходимость данного параметра закладывается в исходном MQL5-коде советника (при помощи функции AccountInfoInteger).
;Login=
; режим генерации тиков (0 - "Все тики", 1 - "OHLC на M1", 2 - "Только цены открытия", 3 - "Математические вычисления"). Если данный параметр не указан, будет использован режим генерации всех тиков.
Model=3
; режим торговли, которая эмулируется тестером стратегий (0 - обычный режим, 1 - включена произвольная задержка выполнения торговых приказов).
ExecutionMode=0
; включение/отключение оптимизации и указание ее вида (0 - оптимизация отключена, 1 - "Медленная (Полный перебор параметров)", 2 - "Быстрая (Генетический алгоритм)", 3 - "Все символы, выбранные в окне 'Обзор рынка'").
Optimization=2
; критерий оптимизации для поиска оптимальных параметров: (0 - максимальное значение баланса, 1 - максимальное значение произведения баланса на прибыльность, 2 - произведение баланса на матожидание выигрыша, 3 - максимальное значение выражения (100% - Просадка)*Баланс, 4 - произведение баланса на фактор восстановления, 5 - произведение баланса на коэффициент Шарпа, 6 - пользовательский критерий оптимизации, получаемый из функции OnTester() в советнике).
OptimizationCriterion=0
; нет в описании:
DateEnable=1
; дата начала диапазона тестирования в формате ГГГГ.ММ.ДД. Если этот параметр не указан, будет использована дата, указанная в соответствующем поле тестера стратегий.
FromDate=2015.02.02
; дата конца диапазона тестирования в формате ГГГГ.ММ.ДД. Если этот параметр не указан, будет использована дата, указанная в соответствующем поле тестера стратегий.
ToDate=2016.02.02
; режим форвард-тестирования (0 - отключено, 1 - 1/2 от периода тестирования, 2 - 1/3 от периода, 3 - 1/4 периода тестирования, 4 - пользовательский период, указанный при помощи параметра ForwardDate).
ForwardMode=0
; начальная дата форвард-тестирования в формате ГГГГ.ММ.ДД. Параметр действует, только если ForwardMode=4.
; ForwardDate
; имя файла, в который будет сохранен отчет о результатах тестирования или оптимизации. Файл будет создан в директории торговой платформы. Относительно данной директории может быть указан путь сохранения файла, например \reports\tester.htm. Если в имени файла не указано его расширение, для отчета о тестировании автоматически будет использовано расширение ".htm", а для отчета об оптимизации - *.xml. В случае отсутствия данного параметра отчет тестирования не будет сохранен в виде файла. При включении форвард-тестирования его результаты будут сохранены отдельным файлом с суффиксом ".forward". Например, tester.forward.htm.
Report=CI_LZma_v3_20160202_opt01.htm
; разрешить/запретить перезапись файла отчета (0 - запретить, 1 - разрешить). Если перезапись запрещена и файл отчета с таким же именем уже существует, то к имени файла будет добавлен порядковый номер в квадратных скобках. Например, tester[1].htm. Если данный параметр отсутствует, используется значение "0" (перезапись запрещена).
ReplaceReport=1
; разрешить/запретить выключение торговой платформы по завершении тестирования (0 - запретить, 1 - разрешить). Если данный параметр отсутствует, используется значение "0" (выключение запрещено). Если процесс тестирования/оптимизации прерывается пользователем вручную, значение данного параметра автоматически сбрасывается на "0".
ShutdownTerminal=1
; сумма начального депозита для тестирования/оптимизации. Сумма указывается в валюте депозита счета. При отсутствии данного параметра используется сумма, указанная в соответствующем поле тестера стратегий.
Deposit=15000
; кредитное плечо, которое будет использовано при тестировании/оптимизации. Например, 1:100. При отсутствии данного параметра используется плечо, указанное в соответствующем поле тестера стратегий.
Leverage=1:500
; включение/отключения возможности использования локальных агентов для тестирования и оптимизации (0 - отключить, 1 - включить). При отсутствии данного параметра используются текущие настройки платформы.
UseLocal=0
; включение/отключения возможности использования удаленных агентов для тестирования и оптимизации (0 - отключить, 1 - включить). При отсутствии данного параметра используются текущие настройки платформы.
UseRemote=0
; включение/отключения возможности использования агентов сети облачных вычислений MQL5 Cloud Network (0 - отключить, 1 - включить). При отсутствии данного параметра используются текущие настройки платформы.
UseCloud=0
; включить (1) или выключить (0) тестирование в визуальном режиме. Если параметр не указан, используется текущая настройка.
Visual=0
; нет в описании:
Spread=31
Читал, может чего не понимаю, но:
попробовал, находясь в директории ( "C:\Program Files (x86)\Alpari Limited MT4\" ) и положив в C:\Users\MySelf\AppData\Roaming\MetaQuotes\Terminal\1FC724C8C211BFE8ECF8B599A855301E\config\ файл terminal1.ini:
Команда: terminal.exe /config:"C:\Users\MySelf\AppData\Roaming\MetaQuotes\Terminal\1FC724C8C211BFE8ECF8B599A855301E\config\terminal1.ini"
Результат тот же! То есть отрицательный. Не берет терминал оттуда параметры!
Попробовал и так :
terminal.exe /config:"C:\Users\MySelf\AppData\Roaming\MetaQuotes\Terminal\1FC724C8C211BFE8ECF8B599A855301E\config\terminal1.ini"
То же самое!!
Также пробовал и terminal.exe /config:terminal1.ini
Не работает!
Что читал? Как читал? Плохо читал
Из какой справки эта строка взялась?
а эта?
terminal.exe /config:terminal1.ini
Несколько раз уже Вам сказали, как надо
terminal.exe "C:\Users\MySelf\AppData\Roaming\MetaQuotes\Terminal\1FC724C8C211BFE8ECF8B599A855301E\config\terminal1.ini" terminal.exe terminal1.ini
Что читал? Как читал? Плохо читал
Из какой справки эта строка взялась?
а эта?
Несколько раз уже Вам сказали, как надо
Увы и ах! Я и так как вы пишете пробовал. ( terminal.exe terminal1.ini ) И сейчас вновь попробовал.
НЕ РАБОТАЕТ!
Спред в terminal.ini выставлен 18, он и отображается, не смотря на то, что команду я даю: terminal.exe terminal1.ini
В terminal1.ini спред выставлен 31.
Сейчас еще с полным путем попробую.
Попробовал: terminal.exe "C:\Users\MySelf\AppData\Roaming\MetaQuotes\Terminal\1FC724C8C211BFE8ECF8B599A855301E\config\terminal1.ini"
Всё так же!
Сама идея запуска ОПТИМИЗАЦИИ прямо из самого советника - и при этом использовать штатный тестер меня занимала чуть ли не с 2006
Когда решал задачу выбрал изначально идею нажимать кнопки тестера в том же самом терминале где и живет эксперт который хочет само - оптимизироваться.
Запускать второй терминал как это в основном все и решают - не стал - мне эта идея не понравилась, хотя она вполне жизнеспособна.
Приведу рабочий пример кучок кода из одного проекта - чуть позже как найду выложу код нажатий кнопок:
Как отследить работу ТЕСТЕРА ну не завис ли он и т п и если он подвис или не смог прогон оптимизации провести за примелемый срок - можно тормознуть его работу.
Простой код для изучениея
запускаем тестер по событию
Увы и ах! Я и так как вы пишете пробовал. ( terminal.exe terminal1.ini ) И сейчас вновь попробовал.
НЕ РАБОТАЕТ!
....Все таки попробуй отказаться от пуска ЕЩЕ одного экземпляра терминала!
Пробуй следующую идею
MT4
1-есть советник , он торгует , в советнике включаем OnTimer - и пишем следующие модули
1.1 модуль пуска по событию
1.1.1 Выбираем советник чарт - период - модель оптимизации - период - спред - нажимаем [x] оптимизация - выбираем период дату начала и дату конца [x] отключаем чекбокс визуализация и давим кнопку старт !
1.2 Далее - модуль контролирующий работу тестера - и в случае чего можно даже тормозить встроенный тестер
1.3 модуль который обработает полученные результаты - выбирающий лучшие параметры и подсовывающий эти параметры советнику
( т е мы получаем САМО ОПТИМИЗИРУЮЩУЮСЯ стратегию )
2-по событию OnTime отслеживаем - заданный нами момент начала тестирования
3-Наступает событие - советник запускает ТЕСТЕР причем просто наэжимая кнопку старт в этом же терминале! т е не запускает еще один экземпляр терминала - с передачей ему параметров а стартует СВОЙ же тестер ( ПРИ ЭТОМ САМ СОВЕТНИК продолжает работать и даже может отрывать и закрывать позиции )
--
дал примеры кодов 1.1 , 1.2
частично дал пример 1.1.1 пока без детального выбора параметров ,
модуль 1.3 можем написать уже совместно
И наверно стоит обсудить минусы и плюсы этой идеи ( имеется ввиду пуск не второго экземпляра терминала - а просто пуск тестера в текущем терминале )
один из плюсов который вижу - это более удобный контроль процесса
Yuriy Zaytsev, отличная идея и примеры!! Просто блеск!!
Обязательно буду пробовать! Время нужно.
А запуск второго терминала из первого я уже сделал.
Все таки попробуй отказаться от пуска ЕЩЕ одного экземпляра терминала!
Пробуй следующую идею
MT4
1-есть советник , он торгует , в советнике включаем OnTimer - и пишем следующие модули
1.1 модуль пуска по событию
1.1.1 Выбираем советник чарт - период - модель оптимизации - период - спред - нажимаем [x] оптимизация - выбираем период дату начала и дату конца [x] отключаем чекбокс визуализация и давим кнопку старт !
1.2 Далее - модуль контролирующий работу тестера - и в случае чего можно даже тормозить встроенный тестер
1.3 модуль который обработает полученные результаты - выбирающий лучшие параметры и подсовывающий эти параметры советнику
( т е мы получаем САМО ОПТИМИЗИРУЮЩУЮСЯ стратегию )
2-по событию OnTime отслеживаем - заданный нами момент начала тестирования
3-Наступает событие - советник запускает ТЕСТЕР причем просто наэжимая кнопку старт в этом же терминале! т е не запускает еще один экземпляр терминала - с передачей ему параметров а стартует СВОЙ же тестер ( ПРИ ЭТОМ САМ СОВЕТНИК продолжает работать и даже может отрывать и закрывать позиции )
--
дал примеры кодов 1.1 , 1.2
частично дал пример 1.1.1 пока без детального выбора параметров ,
модуль 1.3 можем написать уже совместно
И наверно стоит обсудить минусы и плюсы этой идеи ( имеется ввиду пуск не второго экземпляра терминала - а просто пуск тестера в текущем терминале )
один из плюсов который вижу - это более удобный контроль процесса
На мой взгляд самая востребована часть (1.3 модуль который обработает полученные результаты - выбирающий лучшие параметры и подсовывающий эти параметры советнику),...
Тут я делал достаточно просто !
обычная сортировка по максимальному совпадению
Например:
если выборка давала 10 -20 лучших одинаковых результатов! по прибыли
то параметры выбирались те которые чаще совпадали
отбрасывались пиковые а так же отбрасывалось те которые давали слишком неприемлемую просадку.
--
например:
профит 1200$ был лучшим и попадал скажем 10 раз
1) анализ выбирал те параметры которые чаще совпадали
обычный селект итак чаще встречается P4 = 20 - значит берем его
P1 = встечается чаще - как 1.0 значит берем его P1 = 1
с P2 веселей = но тут просто берем середину из тех которые ближе к друг другу по значению
и берем среднее 4.01 и так оно ближе к 4.0 - значит берем P1 = 4.0
а вот P3 как бы не имеет проблем - значит P4 = 3.4
1200$ | P1 = 1.0 | P2 = 4.0 | P3 = 3.4 | P4=20
1200$ | P1 = 1.0 | P2 = 4.12 | P3 = 3.4 | P4=20
1200$ | P1 = 1.1 | P2 = 3.8 | P3 = 3.4 | P4=20
1200$ | P1 = 1.1 | P2 = 3.2 | P3 = 3.4 | P4=20
1200$ | P1 = 1.2 | P2 = 4.1 | P3 = 3.4 | P4=20
1200$ | P1 = 1.3 | P2 = 4.2 | P3 = 3.4 | P4=20
1200$ | P1 = 1.0 | P2 = 4.21 | P3 = 3.4 | P4=21
1200$ | P1 = 1.0 | P2 = 4.22 | P3 = 3.4 | P4=19
1200$ | P1 = 1.0 | P2 = 4.13 | P3 = 3.4 | P4=17
1200$ | P1 = 1 | P2 = 4.121 | P3 = 3.4 | P4=21
-------------------------
900$ | P1 = 1 | P2 = 4 | P3 = 1.4 | P4=45
700$ | P1 = 1 | P2 = 4 | P3 = 2.4 | P4=44
700$ | P1 = 1 | P2 = 4 | P3 = 8.4 | P4=49
700$ | P1 = 1 | P2 = 4 | P3 = 2.4 | P4=61
500$ | P1 = 1 | P2 = 4 | P3 = 3.14 | P4=63
500$ | P1 = 1 | P2 = 4 | P3 = 3.23 | P4=71
---
Веселей будет играть с ситуацией
1231$ | P1 = 1.0 | P2 = 4.0 | P3 = 3.4 | P4=20
1221$ | P1 = 1.0 | P2 = 4.12 | P3 = 3.4 | P4=20
1200$ | P1 = 1.1 | P2 = 3.8 | P3 = 3.4 | P4=20
1200$ | P1 = 1.1 | P2 = 3.2 | P3 = 3.4 | P4=20
1200$ | P1 = 1.2 | P2 = 4.1 | P3 = 3.4 | P4=20
1200$ | P1 = 1.3 | P2 = 4.2 | P3 = 3.4 | P4=20
1200$ | P1 = 1.0 | P2 = 4.21 | P3 = 3.4 | P4=21
1200$ | P1 = 1.0 | P2 = 4.22 | P3 = 3.4 | P4=19
1190$ | P1 = 1.0 | P2 = 4.13 | P3 = 3.4 | P4=17
1180$ | P1 = 1 | P2 = 4.121 | P3 = 3.4 | P4=21
тогда предпочитаю тогда играть с выборкой из 6 значений и далее оперировать в ней
и так далее в том же духе
Тут я делал достаточно просто !
обычная сортировка по максимальному совпадению
Интересный подход.
В то же время, я обычно смотрю еще на число сделок. Оно может быть либо очень малым, либо большим.
Как правило в этих случаях forward тест неудачный.
Кстати, Юрий, форвард в автооптимизации используете?