Весь процесс тестирования и оптимизации подробно записывается в журнал. Разберемся, что именно происходит в тестере стратегий после нажатия кнопки "Старт".
Тестирование/оптимизация начинаются не сразу, сначала тестер производит подготовку окружения. Проверяет наличие истории по символу, на котором производится тестирование, и синхронизирует всю имеющуюся на торговом сервере историю. Если в платформе нет истории по тестируемому инструменту, то синхронизация с торговым сервером может занять несколько минут.
Tester EURCAD: preliminary downloading of M1 history started |
началась предварительная загрузка истории M1 по символу EURCAD |
Tester EURCAD: 20% history downloaded |
загрузка завершена на 20% |
Tester EURCAD: 95% history downloaded |
загрузка завершена на 95% |
Tester EURCAD: preliminary downloading of M1 history completed in 0:14.640 |
загрузка завершена, затраченное время - 0:14.640 |
Tester EURCAD: history data begins from 2014.12.29 00:00 |
минутные данные по символу есть с 2014.12.29 00:00 |
Если тестирование производится на основе реальных тиков, то платформа синхронизирует имеющиеся тики в пределах дат тестирования. Скачивание тиков может занять значительное время.
Tester EURCAD: preliminary downloading of history ticks started, it may take quite a long time |
началась предварительная загрузка тиков по EURCAD, она может занять продолжительное время |
Tester EURCAD: "bases\MetaQuotes-Demo\ticks\EURCAD\201609.tkc" download |
тики за сентябрь 2016 загружены по указанному пути |
Tester EURCAD: "bases\MetaQuotes-Demo\ticks\EURCAD\201608.tkc" download (823.38 Kb/sec) |
тики за октябрь 2016 загружены по указанному пути |
Tester EURCAD: 21% ticks downloaded (796.02 Kb/sec) |
загрузка завершена на 21%, скорость загрузки - 796.02 Kb/sec |
Tester EURCAD: "bases\MetaQuotes-Demo\ticks\EURCAD\201604.tkc" download (764.22 Kb/sec) |
тики за апрель 2016 загружены по указанному пути |
Tester EURCAD: preliminary downloading of history ticks completed, 116.78 Mb in 2:32.063 (786.40 Kb/sec) |
загрузка тиков завершена, размер загруженных тиков - 116.78 МБ, затраченное время - 2:32.063 |
Tester EURCAD: ticks data begins from 2016.04.01 00:00 |
тиковые данные по символу EURCAD есть с 2016.04.01 00:00 |
Далее проверяется наличие кросс-курсов. Например, если тестирование производится на EURCAD, а валюта депозита USD, то для расчета прибыли и маржевых требований при проведении торговых операций понадобятся инструменты EURUSD и USDCAD. Поэтому производится полная синхронизация истории и этих инструментов. При необходимости тиковые данные также синхронизируются. Процесс подготовки ценовых данных подробно фиксируется в журнале тестера:
Tester EURUSD: preliminary downloading of history ticks started, it may take quite a long time |
началась предварительная загрузка тиков по EURUSD, она может занять продолжительное время |
Tester EURUSD: preliminary downloading of history ticks completed, 1021.82 Kb in 0:03.218 (317.53 Kb/sec) |
загрузка тиков завершена, размер загруженных тиков - 1021.82 КБ, затраченное время - 0:03.218 |
Tester EURUSD: ticks data begins from 2011.12.19 00:00 |
тиковые данные по символу EURUSD есть с 2011.12.19 00:00 |
Tester USDCAD: preliminary downloading of M1 history started |
началась предварительная загрузка истории M1 по символу USDCAD |
Tester USDCAD: preliminary downloading of M1 history completed in 0:00.203 |
загрузка завершена, затраченное время - 0:00.203 |
Tester USDCAD: preliminary downloading of history ticks started, it may take quite a long time |
началась предварительная загрузка тиков по USDCAD, она может занять продолжительное время |
Tester USDCAD: "bases\MetaQuotes-Demo\ticks\USDCAD\201609.tkc" download |
тики за сентябрь 2016 загружены по указанному пути |
Tester USDCAD: "bases\MetaQuotes-Demo\ticks\USDCAD\201608.tkc" download (683.69 Kb/sec) |
тики за август 2016 загружены по указанному пути, скорость загрузки - 683.69 Kb/sec |
Tester USDCAD: preliminary downloading of history ticks completed, 103.25 Mb in 2:30.109 (704.36 Kb/sec) |
загрузка тиков завершена, размер загруженных тиков - 103.25 МБ, затраченное время - 2:30.109 |
Tester USDCAD: ticks data begins from 2015.01.01 00:00 |
тиковые данные по символу USDCAD есть с 2015.01.01 00:00 |
Только после синхронизации всей необходимой истории (и тиков, если вы тестируете/оптимизируете стратегию на реальных тиках) запускается процесс тестирования/оптимизации.
При одиночном тестировании устанавливается связь с выбранным агентом тестирования. Это может быть локальный или сетевой агент.
Core 1 agent process started |
процесс агента запущен на первом ядре процессора |
Core 1 connecting to 127.0.0.1:3000 |
подключение к 127.0.0.1:3000 |
Core 1 connected |
подключение завершено |
Core 1 authorized (agent build 1395) |
авторизация пройдена, билд агента - 1395 |
Имя папки данных локального агента соответствует его адресу и порту.
После подключения к агенту производится синхронизация окружения в соответствии с настройками тестирования.
Tester EURCAD,H1 (MetaQuotes-Demo): testing of Experts\Moving Average.ex5 from 2016.04.01 00:00 to 2016.06.01 00:00 |
запускается тестирование эксперта Moving Average на символе EURCAD и периоде H1, сервер MetaQuotes-Demo, период тестирования - с 2016.04.01 00:00 по 2016.06.01 00:00 |
Core 1 common synchronization completed |
общая синхронизация завершена |
С этого момента агент начинает вести собственный журнал, данные из которого пересылаются в журнал тестера. Журнал локального агента можно открыть из контекстного меню журнала тестера. В этом журнале показаны подробности синхронизации окружения между терминалом и агентом.
Инициализация и синхронизация окружения:
Startup MetaTester 5 x64 build 1395 (19 Aug 2016) |
запуск агента тестирования, билд 1395 от 19 августа 2016 |
Server MetaTester 5 started on 127.0.0.1:3000 |
агент тестирования запущен на 127.0.0.1:3000 |
Startup initialization finished |
инициализация завершена |
127.0.0.1 login (build 1395) |
платформа подключилась к агенту |
Network 38520 bytes of account info loaded |
агент загрузил 38520 байт информации о параметрах торгового счета |
Network 1482 bytes of tester parameters loaded |
агент загрузил 1482 байт информации о параметрах тестирования |
Network 2236 bytes of input parameters loaded |
агент загрузил 2236 байт информации о входных параметрах советника |
Network 22730 bytes of symbols list loaded |
агент загрузил 22730 байт информации о финансовых инструментах |
Синхронизация настроек тестирования и данных инструмента, на котором производится тестирование:
Tester expert file added: Experts\Examples\Moving Average\Moving Average.ex5. 53048 bytes loaded |
агент зарузил файл эксперта, размер файла - 53048 байт |
Tester initial deposit 10000.00 USD, leverage 1:100 |
начальный депозит для тестирования - 10 000 USD, плечо - 1:100 |
Tester successfully initialized |
тестирование инициализировано |
Network 68 Kb of total initialization data received |
общий объем информации, полученной агентом во время инициализации, - 68 КБ |
Tester Intel Core i7-3770 @ 3.40GHz, 16351 MB |
описание конфигурации компьютера, на котором работает агент |
Symbols EURCAD: symbol to be synchronized |
синхронизация символа EURCAD |
Symbols EURCAD: symbol synchronized, 3384 bytes of symbol info received |
символ синхронизирован, получено 3384 байт информации |
History EURCAD: load 4.51 Mb of history data to synchronize in 0:00:00.594 |
загружено 4.51 МБ исторических данных за 594 миллисекунды |
History EURCAD: history synchronized from 2015.01.02 to 2016.06.01 |
история по EURCAD синхронизирована с 2015.01.02 по 2016.06.01 |
Ticks EURCAD: ticks synchronization started |
начинается синхронизация тиков по EURCAD |
Ticks EURCAD: load 48.66 Mb of tick data to synchronize in 0:00:00.969 |
при синхронизации загружено 48.66 МБ информации за 969 миллисекунд |
Ticks EURCAD: history ticks synchronized from 2016.04.01 to 2016.05.31 |
история тиков по EURCAD синхронизирована с 2016.04.01 по 2016.05.31 |
History EURCAD,H1: history cache allocated for 8862 bars and contains 7729 bars |
создан кэш истории на 8862 бара, кэш содержит 7729 баров с 2015.01.02 09:00 по 2016.03.31 23:00 |
History EURCAD,H1: history begins from 2015.01.02 09:00 |
история по EURCAD начинается с 2015.01.02 09:00 |
Tester EURCAD,H1 (MetaQuotes-Demo): generating based on real ticks |
тестирование будет запущено на реальных тиках |
Tester EURCAD,H1: testing of Experts\Examples\Moving Average\Moving Average.ex5 |
тестирование эксперта Moving Average на промежутке с 2016.04.01 00:00 по 2016.06.01 00:00 будет запущено со следующими входными параметрами: |
Tester MaximumRisk=0.02 |
MaximumRisk=0.02 |
Tester DecreaseFactor=3.00 |
DecreaseFactor=3.00 |
Tester MovingPeriod=12 |
MovingPeriod=12 |
Tester MovingShift=6 |
Tester MovingShift=6 |
Moving Average (EURCAD,H1) 2016.04.01 00:00:00 expert initialized |
эксперт Moving Average инициализирован |
Ticks EURCAD : real ticks begin from 2016.04.01 00:00:00 |
реальные тики по символу EURCAD есть с 2016.04.01 00:00:00 |
Синхронизация кросс-курсов:
Symbols EURUSD: symbol to be synchronized |
синхронизация символа EURUSD |
Symbols EURUSD: symbol synchronized, 3384 bytes of symbol info received |
символ синхронизирован, получено 3384 байт информации |
History EURUSD: load 27 bytes of history data to synchronize in 0:00:00.000 |
загружено 27 байт исторических данных за 000 миллисекунд |
History EURUSD: history synchronized from 2014.01.01 to 2016.09.02 |
история по EURUSD синхронизирована с 2014.01.01 по 2016.09.02 |
Ticks EURUSD: ticks synchronization started |
начинается синхронизация тиков по EURUSD |
Ticks EURUSD: load 34 bytes of tick data to synchronize in 0:00:00.000 |
при синхронизации загружено 48.66 МБ информации за 969 миллисекунд |
Ticks EURUSD: history ticks synchronized from 2016.01.04 to 2016.09.02 |
история тиков по EURUSD синхронизирована с 2016.04.01 по 2016.05.31 |
Symbols USDCAD: symbol to be synchronized |
синхронизация символа USDCAD |
Symbols USDCAD: symbol synchronized, 3384 bytes of symbol info received |
символ синхронизирован, получено 3384 байт информации |
History USDCAD: load 27 bytes of history data to synchronize in 0:00:00.094 |
загружено 27 байт исторических данных за 94 миллисекунды |
History USDCAD: history synchronized from 2013.01.01 to 2016.08.01 |
история по USDCAD синхронизирована с 2013.01.01 по 2016.08.01 |
Ticks USDCAD: ticks synchronization started |
начинается синхронизация тиков по USDCAD |
Ticks USDCAD: load 43.10 Mb of tick data to synchronize in 0:00:00.890 |
при синхронизации загружено 43.10 МБ информации за 890 миллисекунд |
Ticks USDCAD: history ticks synchronized from 2016.04.01 to 2016.05.31 |
история тиков по USDCAD синхронизирована с 2016.04.01 по 2016.05.31 |
Перед началом тестирования производится генерация тиковых последовательностей. Чем больше тиков используется, тем больше будет задержка перед началом непосредственно тестирования.
Если вы тестируете на реальных тиках, то производится проверка корректности закаченных тиковых данных по отношению к минутным барам. Если данные корректны, то в журнале будет всего одна запись (по каждому инструменту):
Ticks EURCAD : real ticks begin from 2016.04.01 00:00:00 |
реальные тиковые данные по EURCAD есть с 2016.04.01 00:00:00 |
В противном случае будет выведена подробная статистика, на основании которой пользователь сможет сделать вывод о качестве тиковой истории.
Ticks EURUSD : real ticks begin from 2015.01.01 00:00:00 |
реальные тиковые данные по EURUSD есть с 2015.01.01 00:00:00 |
Ticks EURUSD : 2015.01.01 00:00 - 2016.01.01 00:00 tick volumes not matched for 4 minute bars |
в промежутке 2015.01.01 00:00 - 2016.01.01 00:00 тиковый объем не совпал по 4-м минутными барам |
Ticks EURUSD : 2015.01.01 00:00 - 2016.01.01 00:00 last prices absent for 16217 minute bars, bid prices used |
в промежутке 2015.01.01 00:00 - 2016.01.01 00:00 отсутствуют цены последней сделки у 16217 минутных баров, вместо них будут использованы цен bid |
Ticks EURUSD : 2015.01.01 00:00 - 2016.01.01 00:00 last prices absent for 22 whole days, bars built by bid prices |
в промежутке 2015.01.01 00:00 - 2016.01.01 00:00 отсутствуют цены последней сделки у 22 полных дней, бары построены по ценам bid |
Ticks EURUSD : 2015.01.01 00:00 - 2016.01.01 00:00 last prices translation turned off for 881 minute bars, bid and last prices used |
в промежутке 2015.01.01 00:00 - 2016.01.01 00:00 передача цены последней сделки прерывалась у 881 минутного бара, будут использованы и цены last, и цены bid |
После окончания тестирования в журнал агента выводится подробная статистическая информация:
Tester final balance 7905.30 USD |
баланс по итогам тестирования составил 7905.30 USD |
Tester EURCAD,H1: 50056687 ticks, 6195 bars generated. Environment synchronized in 0:00:02.656. |
сгенерировано 50056687 тиков и 6195 баров синхронизация окружения проведена за 0:00:02.656 |
Test passed in 0:01:40.906 (including ticks preprocessing 0:00:27.047). |
тестирование проведено за 0:01:40.906 (включая подготовку тиков за 0:00:27.047) |
Tester EURCAD,H1: total time from login to stop testing 0:01:43.562 (including 0:00:07.329 for history data synchronization) |
затрачено времени от подключения к агенту до завершения тестирования - 0:01:43.562 (включая 0:00:07.329 на синхронизацию исторических данных) |
Tester 132757966 total ticks for all symbols |
всего сгенерировано 132757966 тиков по всем символам |
Tester EURCAD: generate 50056687 ticks in 0:00:08.703, passed to tester 50056687 ticks |
по EURCAD сгенерировано 50056687 тиков за 0:00:08.703, тестеру передано 50056687 тиков |
Tester EURUSD: generate 42615166 ticks in 0:00:09.235, passed to tester 42587228 ticks |
по EURUSD сгенерировано 42615166 тиков за 0:00:09.235, тестеру передано 42587228 тиков |
Tester USDCAD: generate 40134644 ticks in 0:00:09.109, passed to tester 40114051 ticks |
по USDCAD сгенерировано 40134644 тиков за 0:00:09.109, тестеру передано 40114051 тиков |
Tester 546 Mb memory used including 0.94 Mb of history data, 320 Mb of cached tick data (total memory for tick data 3135 Mb) |
использовано 546 МБ памяти, включая 0.94 МБ на исторические данные, 320 МБ на кеш тиков (всего для тиковых данных использовано 3135 МБ) |
Tester log file "E:\MetaTrader5\Tester\Agent-127.0.0.1-3000\logs\20160908.log" written |
файл журнала агента сохранен по указанному пути |
Если в тестировании участвует только один инструмент, то в журнале вместо отдельных строк со статистикой тиков по каждому инструменту будет только общая статистика:
Tester final balance 1199.73 USD |
баланс по итогам тестирования составил 1199.73 USD |
Tester EURUSD,H1: 42668248 ticks, 6195 bars generated. Test passed in 0:00:41.360 (including ticks preprocessing 0:00:06.672). |
сгенерировано 42668248 тиков и 6195 баров. Тестирование проведено за 0:00:41.360 (включая подготовку тиков за 0:00:06.672) |
Tester 489 Mb memory used including 0.94 Mb of history data, 320 Mb of cached tick data (total memory for tick data 1023 Mb) |
использовано 489 МБ памяти, включая 0.94 МБ на исторические данные, 320 МБ на кеш тиков (всего для тиковых данных использовано 1023 МБ) |
Tester log file "E:\MetaTrader5\Tester\Agent-127.0.0.1-3000\logs\20160908.log" written |
файл журнала агента сохранен по указанному пути |
При повторном тестировании на тех же исторических данных во время синхронизации производится минимальный обмен данными между платформой и агентом. Используется закешированная в памяти агента история. Если модель генерации тиков не поменялась, то также используются и закешированные тиковые данные. В этих условиях тестирование начинается моментально:
Tester account info found |
информация о торговом счете найдена |
Network 1482 bytes of tester parameters loaded |
загружено 1482 байта параметров тестирования |
Tester initial deposit 1000.00 USD, leverage 1:100 |
начальный депозит для тестирования - 1 000 USD, плечо - 1:100 |
Tester successfully initialized |
тестирование инициализировано |
Network 1614 bytes of total initialization data received |
общий объем информации, полученной агентом во время инициализации, - 1614 байт |
Tester Intel Core i7-3770 @ 3.40GHz, 16351 MB |
описание конфигурации компьютера, на котором работает агент |
History EURUSD,H1: history cached from 2014.01.01 23:00 |
история по EURUSD H1 закеширована, начиная с 2014.01.01 23:00 |
Tester EURUSD,H1 (MetaQuotes-Demo): every tick generating |
запущено тестирование по всем тикам (сервер MetaQuotes-Demo) |
Tester EURUSD,H1: testing of Experts\Tester\MultyPairCrossMA.ex5 from 2015.01.01 00:00 to 2016.01.01 00:00 started with inputs: |
тестирование эксперта Moving Average на промежутке с 2015.01.01 00:00 по 2016.01.01 00:00 будет запущено со следующими входными параметрами: |
Tester InpLots=0.10 Tester InpStopLoss=50 Tester InpTakeProfit=50 Tester InpTrailingStop=30 Tester InpFastMAPeriod=21 Tester InpSlowMAPeriod=34 |
InpLots=0.10 InpStopLoss=50 InpTakeProfit=50 InpTrailingStop=30 InpFastMAPeriod=21 InpSlowMAPeriod=34 |
History EURUSD,M5: history cached from 2014.01.01 23:00 |
история по EURUSD M5 закеширована, начиная с 2014.01.01 23:00 |
History EURJPY,M5: history cached from 2014.01.01 23:00 |
история по EURJPY M5 закеширована, начиная с 2014.01.01 23:00 |
History USDJPY,M5: history cached from 2014.01.01 23:00 |
история по USDJPY M5 закеширована, начиная с 2014.01.01 23:00 |
Stop out. При неудачной торговле тестирование может быть остановлено по состоянию Stop Out:
Tester final balance 44.81 USD |
баланс по итогам тестирования составил 44.81 USD |
Tester stop out occurred on 3% of testing interval |
стоп-аут наступил, когда от периода тестирования было пройдено 3% |
Самостоятельная остановка. Тестирование можно остановить досрочно из самого советника, вызвав функцию ExpertRemove при наступлении заданного условия. В журнал при этом будет выведено:
MACD Sample (EURUSD,H1) 2015.03.13 03:00:00 Testing stop. Balance is 299.29 |
тестирование остановлено, баланс составил 299.29 |
MACD Sample (EURUSD,H1) 2015.03.13 03:00:00 ExpertRemove() function called |
вызвана функция ExpertRemove |
Tester removed itself within OnTick |
эксперт завершил свою работу в обработчике тиков |
Tester final balance 299.29 USD |
баланс по итогам тестирования составил 299.29 USD |
Tester removed itself on 19% of testing interval |
эксперт завершил работу, когда от периода тестирования было пройдено 3% |
Ошибка памяти. Тестирование может быть завершено досрочно из-за критической ошибки. Например, постоянные перевыделения памяти функцией ArrayResize могут привести к излишней фрагментации памяти, что в свою очередь может привести к отсутствию блока памяти необходимого размера. В итоге вы получите критическую ошибку нехватки памяти.
MemoryException 8192 Mb not available |
недоступен блок памяти размером 8192 МБ |
MACD Sample (EURUSD,H1) 2015.01.02 09:00:15 cannot resize ExtDoubleArray4 from 536870912 to 1073741824 |
на дате 2015.01.02 09:00:15 эксперт не смог увеличить размер массива ExtDoubleArray4 с 536870912 до 1073741824 байт |
Tester memory error in OnTick |
ошибка работы с памятью в OnTick |
Tester stopped on 0% of testing interval |
работа завершена, когда от периода тестирования было пройдено 3% |
Tester not enough available memory, 37371 Mb used, 9178 Mb available, maximal available block is 4096 Mb |
недостаточно памяти, всего памяти 37371 МБ, доступно 9178 МБ, максимальный размер блока памяти 4096 МБ |
Выход за пределы массива. Критической ошибкой считается обращение за пределы массива, то есть значение индекса элемента массива, большее или равное количеству элементов массива (индексация начинается с нуля).
MACD Sample (EURUSD,H1) 2015.01.06 18:42:59 array out of range in 'MACD Sample.mq5' (473,28) |
ошибка выхода за пределы массива в файле 'MACD Sample.mq5' (строка 473, позиция 28) |
Tester OnTick critical error |
критическая ошибка в OnTick |
Деление на ноль. Критической ошибкой также считается деление на ноль.
MACD Sample (EURUSD,H1) 2015.01.06 18:42:59 zero divide in 'MACD Sample.mq5' (465,35) |
ошибка деления на ноль в файле 'MACD Sample.mq5' (строка 465, позиция 35) |
Tester OnTick critical error |
критическая ошибка в OnTick |
Ошибка при инициализации. Тестирование завершится, не начавшись, если функция OnInit в программе вернет код, отличный от INIT_SUCCEEDED. Например, таким образом может производиться контроль входных параметров.
MACD Sample (EURUSD,H1) 2015.01.01 00:00:00 Deinit reason is 8 |
на дате 2015.01.01 00:00:00 произошла деинициализация эксперта |
Tester tester stopped because OnInit failed |
тестирование остановлено из-за ошибки в OnInit |