Справка по MetaTrader 5Алгоритмический трейдинг, торговые роботыЖурнал тестирования

Журнал тестирования

Весь процесс тестирования и оптимизации подробно записывается в журнал. Разберемся, что именно происходит в тестере стратегий после нажатия кнопки "Старт".

Подготовка ценовой истории

Тестирование/оптимизация начинаются не сразу, сначала тестер производит подготовку окружения. Проверяет наличие истории по символу, на котором производится тестирование, и синхронизирует всю имеющуюся на торговом сервере историю. Если в платформе нет истории по тестируемому инструменту, то синхронизация с торговым сервером может занять несколько минут.

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
       from 2015.01.02 09:00 to 2016.03.31 23:00

создан кэш истории на 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
       from 2016.04.01 00:00 to 2016.06.01 00:00 started with inputs:

тестирование эксперта 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