Что не так с тестером стратегий в МТ4 и МТ5

19

chto-ne-tak-s-testerom-strategiy-mt4-i-5

Здравствуйте, коллеги форекс трейдеры!

Сейчас мы продолжим обсуждение таковой широкой темы, как алготрейдинг и поболтаем о таком нужном инструменте, как тестер торговых роботов. Частично многие вопросы, затрагиваемые в данной статье, кроме этого уже затрагивались на страницах блога, но, на мой взор, они все же не хватает детально освещены. Итак, сейчас мы узнаем, что такое бэктестирование и подводные камни и какие сложности появляются при тестировании советников, и определим ограничения терминала MetaTrader при оптимизации и тестировании советников и отыщем методы максимально нивелировать эти ограничения.

Что такое бэктест

chto-takoe-becktest

О том, как тестировать советник в терминале MT4, а также в терминале МТ5, уже была написана статья в отечественном блоге. Исходя из этого я определение бэктестирования. Бэктест – это использование правил торговой системы к комплекту исторических рыночных данных, вот и все.

Другими словами, выяснили мы комплект правил для входа в рынок, для выхода, для расчёта и сопровождения позиции ее количества, а после этого применили эти правила к историческим данным, как если бы мы по этим правилам в тот момент торговали. Так, мы можем оценить результативность данной совокупности, которая имела возможность бы быть достигнута в прошлом.

Пожалуй, самая ответственная, функция тестера – моделирование. Создатель метода делает бэктесты, на основании которых он может делать выводы о том, стоит ли дальше совершенствовать форекс советника либо забранная им для изучения торговая система не следует трат времени.

Бэктест кроме этого оказывает помощь нам оценить, стоит ли применять данную стратегию для настоящей торговли, основываясь на ее эффективности в прошлом. По сути, бэктест оказывает помощь нам отсеять нехорошие советники перед тем, как мы рискнем настоящими деньгами.

Не считая первичного отбора стратегий для предстоящей с ними фильтрации и работы неподходящих стратегий, тестер кроме этого оказывает помощь проверить работоспособность создаваемых совокупностей, распознать допущенные неточности и улучшить работу метода.

Главные неточности при тестировании советников

oshibki-pri-testirovanii-sovetnikov

Совершить тестирование советника весьма легко, но результаты теста – это совсем не результаты настоящей торговли. Мы приобретаем результаты моделирования. Какой бы сложной модель ни была, она все равно будет содержать упрощения и определённые допущения, что, конечно же, ведет к неточности результатов. Как раз исходя из этого существует множество ловушек, которые связаны с применением тестирования.

Ниже я приведу главные неточности при применении тестирования.

Тестирование лишь на In-Sample выборке.

Это самая популярная ошибка новичков и самая наигрубейшая. По сути, это подгонка совокупности под кривую, которая происходит, в то время, когда вы используете одинаковые эти для тестирования и оптимизации стратегии. Такое тестирование неизменно очень сильно завышает результаты совокупности, что будет видно в настоящей торговле.

Это происходит вследствие того что совокупность не проверялась на другой информации, каковые, разумеется, будут заметно различаться от применяемых при тесте.

Смена рыночного цикла

Рынки нестационарны и всегда изменяются. Исходя из этого так непросто подобрать подходящие параметры для работы совокупности на долгом периоде времени. Наряду с этим, чем данный период продолжительнее, тем более универсальны параметры совокупности.

Но совершенных параметров советника, применяя каковые, робот превосходно торговал бы на любом рынке, к сожалению, не существует. Это одна из обстоятельств, из-за чего советники на настоящем рынке трудятся хуже, чем в тестах.

Транзакционные затраты

Многие форекс трейдеры, в особенности начинающие, не учитывают затраты, которые связаны с закрытием и открытием позиций. Довольно часто я вижу тесты, сделанные с невозможно заниженным спредом, к примеру вместо того, дабы применять для теста спред 2-3 пункта по EURUSD, люди берут спред 0,5-1 пункт. В следствии получается граальная картина, которая совсем не имеет ничего общего с действительностью, поскольку то, что ваш брокер в целях саморекламы где-то в том месте указал спред по данной паре 0,5 пункта, еще не означает, что так и имеется. Помимо этого, многие забывают о таковой вещи, как рабочая группа за сделку. Она имеется не на всех типах квитанций и не у всех брокеров, но, в большинстве случаев, в том месте, где низкий спред, она имеется, и немаленькая.

Кроме этого не следует забывать о таких вещах, как свопы – они также искажают результаты тестов и воздействуют на итоговый итог. Ну и, конечно же, проскальзывания – бич всех пипсовщиков. В случае если сложить все эти факторы совместно, получается, что торговля – достаточно недешевое занятие, и на настоящем рынке вы заплатите за открытие сделки 0,5 пунктов спреда + 0,7 пункта рабочей группы + на 0,3 пункта сделка проскользит при открытии и при закрытии  и в итоге настоящие затраты на сделку составят 1,8 пункта.

Подглядывание в будущее

Будущие эти смогут быть использованы в тестировании, причем значительно чаще из-за неточностей при написании метода, но время от времени и из злого умысла. Еще в прошедшем сезоне на сайте mql5.com в разделе «маркет» весьма модно было реализовывать советники, подглядывающие в будущее. Значительно эргономичнее торговать и показывать замечательные результаты торговли, если ты знаешь будущее.

Но к настоящей торговле такие результаты, к сожалению, не имеют никакого отношения.

Ликвидность инструмента

При тестировании на истории возможно нормально скальпировать тысячей лотов и иметь прекрасные результаты. Но в настоящей торговле такие количества неизбежно будут оказывать влияние на рынок, кроме того позиция в 100 лотов в вечернее либо ночное время способна двигать цену кроме того популярных торговых пар, установлено. В тестере это влияние никак не учитывается.

Исторические эти

Многие брокеры предлагают воспользоваться собственной базой исторических данных. В большинстве случаев, котировки в том месте не наилучшего качества. Возможно отыскать громадные отсутствующие куски исторических данных, в особенности на младших таймфреймах. Кроме этого возможно отыскать большое количество источников бесплатных котировок в Интернете, в большинстве случаев, не меньше вызывающего большие сомнения качества.

Уровень качества котировок сильно воздействует на результаты бэктеста, исходя из этого относиться к данной проблеме стоит максимально без шуток.

Низкая робастность

Кое-какие трейдеры, в особенности начинающие, допускают к торговле настоящими деньгами совокупности, владеющие низкой робастностью.  Робастность – это устойчивость совокупности к трансформации входных данных. К примеру, протестировав  вашу совокупность с 3 числа этого месяца по сегодняшний сутки, вы получите прекрасный результат, но в случае если запустите тест с 4 числа, совокупность уйдет в просадку. Это значит, что совокупность имеет низкую робастность. Еще один пример, в то время, когда вы поменяли период индикатора, воздействующего на вход в рынок, с 9 на 10 и совокупность начала сливать.

Громадной неточностью будет допускать такие совокупности к настоящей торговле.

Психология

Как я уже сказал в прошлой статье, психология в алготрейдинге играется значительно меньшую роль, чем при торговле руками. Разные продавцы торговых систем продвигают идею о том, что при торговле роботом про психологию по большому счету возможно забыть. Но полное игнорирование психологии – еще одна неточность начинающих трейдеров.

Однако, существует последовательность торговых систем, каковые смогут показаться в полной мере хорошими при тестировании и просто невыносимыми в настоящей торговле. Помимо этого, как многие ручные трейдеры-новички меняют правила собственной торговли на ходу, так и менее умелые алготрейдеры довольно часто тянут собственные ручки к уже трудящимся совокупностям, пробуя их на ходу «подкручивать». Все это, само собой разумеется, ведет к финансовым утратам.

Типы тестеров по принципу работы

tipyi-testerov-strategiy

Сейчас на рынке существует множество разных терминалов для торговли на денежных рынках. Многие терминалы позволяют написания специалистов для автоматической торговли и большая часть из таких терминалов, в большинстве случаев, имеют встроенные оптимизаторы и тестеры. Все они весьма различаются по возможностям и функционалу, но по принципу работы тестеры возможно поделить на два типа: «цикличные» и «событийно-ориентированные».

У каждого из этих типов имеется как свои достоинства, так и недостатки.

Цикличные бэктестеры

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

Наряду с этим тестером сохраняются кое-какие статистику работы советника – прибыль, количество сделок, просадка и без того потом, а по завершении выдает отчет о тестировании советника. Как вы осознаёте, такая конструкция весьма несложна – необходимо всего лишь загрузить исторические эти и выбирать цены строке за строчкой, создавая любой раз расчеты. Точно вам такая концепция покажется привычной. Все правильно, MetaTrader трудится как раз по таковой схеме. Ну, другими словами, это не совсем так, поскольку в языке Mql все же имеется кое-какие предопределенные события.

Так что эта платформа, как и многие другие – представитель скорее смешанного типа.

Как вы уже точно додумались, такие бэктестеры весьма несложны в реализации фактически на любом языке программирования. Наряду с этим они весьма скоро трудятся – возможно скоро протестировать и оптимизировать множество комбинаций параметров советника.

К сожалению, главный недочёт для того чтобы тестера – нереалистичность приобретаемых бэктестов. Частенько такие бэктестеры кроме того не учитывают спред, рабочую группу, а ордера исполняются неизменно по рыночным стоимостям без проскальзываний и мгновенно. Исходя из этого специалисты применяют такие тестеры лишь для первичной оценки эффективности метода, дабы решить, стоит ли трудиться над советником дальше.

Событийно-ориентированные тестеры

Дабы более наглядно осознать принцип работы для того чтобы тестера, я предлагаю вам представить компьютерную игру. Игрок всегда взаимодействует в игровым пространством, само это пространство не есть статичным – неизменно что-то происходит, на игрока нападают злобные твари, а дружественные персонажи сейчас крошат друг другу черепа топорами из-за бытовой ссоры. Дабы от обилия происходящего ваш компьютер от вас не сбежал, умные люди придумали все вычисления происходящего поместить в некоторый нескончаемый цикл while, именуемый событийной либо игровой петлей, в которого выстраивается очередь событий.

Эти появляющиеся события неизменно в петли попеременно обрабатываются со скоростью, соответствующей мощности вашего компьютера. Применительно к тестеру такими событиями смогут быть появления новых торговых сигналов, готовность отправки сообщения брокеру, приход нового тика, получение информации от брокера. В то время, когда появляется конкретное событие, оно обрабатывается соответствующим модулем тестера и, быть может, наряду с этим генерируются новые события, каковые опять попадают в очередь событий.

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

Из недочётов таковой конструкции возможно выделить сложность кода и громадное поле для неточностей. Для написания совокупностей потребуется знание объектно-ориентированного программирования и хороший опыт в разработке совокупностей. Еще один значительный минус, который связан с сотрудничеством разных модулей тестера – медленная скорость работы.

Тестирование, а тем более оптимизация, смогут занять достаточно продолжительное время.

Терминалы MetaTrader

terminal-metatrader

На страницах блога возможно отыскать обзор терминала MetaTrader4 а также MetaTrader5. Но в этих статьях, к сожалению, не написано о самом главном: возможно ли пользоваться этими терминалами для оптимизации и тестирования ваших советников и как возможно доверять итогам. Давайте разберемся в этом вопросе.

Как я уже сказал, опытные алготрейдеры не применяют терминал MetaTrader по большей части по трем обстоятельствам: недостаточная гибкость языка для написания советников, низкая неудовлетворительная скорость и точность тестирования тестирования. Компания MetaQuotes создала хороший терминал – несложной, эргономичный. Это хорошая стартовая площадка для знакомства с миром алготрейдинга. Довольно много сейчас в платформу было добавлено верных идей, в особенности в пятой версии терминала, но их реализация очень сильно подкачала. К примеру, как люди смогут по преимуществу оценить улучшенный тестер, в случае если нет возможности импортировать собственные котировки?

Либо из-за чего люди должны самостоятельно переписывать код собственных индикаторов и советников, в то время, когда возможно было разработать несложную программу, которая делала бы все это машинально? Но обо всем по порядку.

Итак, я придумал несложную торговую систему, метод которой записал в виде mql4 советника, mql5 советника и в виде тестера с оптимизатором со встроенной той же стратегией на языке R. Сделал я это чтобы прогнать тесты и оптимизацию и сравнить скорость.

Тестирование советника на часовом таймфрейме за последние пятнадцать лет в четвертой версии терминала заняла 20 мин., в пятой – около 5 мин., в тестере на языке R – 13 секунд. Оптимизация пятидесяти тысяч комбинаций параметров этого же советника при тех же условиях в четвертой версии заняла 10 дней, в пятой – всего три дня, на R – 16 мин.. Тот же тест на 15 парах в один момент в МТ4 я сделать не смог – это попросту не предусмотрено. Пятая версия справилась за 2 час 27 мин., R за 6 мин..

Язык R–далеко не самый стремительный, если бы я написал тестер на языке C#, к примеру, уверен, результаты были бы лучше раз в 10.

Разберем MetaTrader 4

metatrader-4

Чем приведена к медлительности тестера? Одно могу сообщить точно – терминал применяет для работы лишь одно ядро процессора. Другими словами, даже в том случае, если в вашей машине их четыре либо более, делу данный факт не окажет помощь.

Частично решить проблему возможно запустив еще один терминал и тестируя либо оптимизируя советник параллельно на втором инструменте. Это мало ускорит процесс, но не примет решение проблему всецело – раздельно забранный тест будет проходить все так же мучительно продолжительно.

Еще одна значительная неприятность четвертого терминала – невозможность применения тиковых данных. В то время, когда мы торгуем в настоящем времени, стоимости приходят в терминал в разные моменты времени по мере их трансформации. Приход цены не привязан к конкретному периоду, к примеру, раз в 60 секунд либо час. Исторические эти сохраняются в базе котировок терминала в виде OHLC стоимостей разных таймфреймов, к примеру, H1, D1, M15. При тестировании приход новых тиков моделируется на основании таймфрейма M1.

Все мы знаем, что количества, передаваемые брокером, в действительности совсем не те самые настоящие количества. Это легко количество настоящих тиков, которое случилось за определенный отрезок времени. Другими словами тестер знает закрытия свечи и цены открытия М1, большую и минимальную цену за период 1 количество и минута тиков, которое за эту 60 секунд было передано.

Какие конкретно стоимости были для этих тиков, в то время, когда конкретно пришла цена, соответствующая тику – все это неизвестно. Тестер на базе некоторых методов придумывает сам, как ходила цена в свечи. Другими словами вот она, та самая упрощенная модель, о которой мы говорили выше. И все же, и эту проблему трейдеры обошли. Имеется пара особых программ, разрешающих применять настоящие тиковые эти для оптимизации и тестирования.

Это бесплатная программа TickstoryLite либо платная программа Tick Data Suite.Об изюминках каждой из этих программ вы имеете возможность прочесть в статьях выше, но я советовал бы не жадничать и купить вторую. Tick Data Suite не только разрешает тестировать советники на тиковых данных, эта программа додаёт в терминал несколько превосходных функций, каковые легко нужны: плавающий спред (другими словами, по сути, два потока тиков, как в действительности – отдельные Ask и Bid) и хороший, незаменимый для скальпирующих советников стресс тест — эмуляция проскальзывания.

Сейчас я обязан сообщить несколько слов про уровень качества моделирования, которое в стандартном терминале не поднимается выше 90%, а при помощи названных выше программ делается 99%. Многие из вас всегда сталкиваются в сети с утверждением, что 90% тесты полный хлам и следует сделать лишь 99% тесты – вот они совсем правильные. Ну, само собой разумеется, это не совсем так (по большому счету, в случае если сказать честно, любой тест, выполненный на платформе МТ4 либо МТ5 пускай и не хлам, но достаточно далек от действительности).

Итак, что же такое уровень качества моделирования? А это легко цифра, вычисляющаяся по несложной формуле, придуманной компанией MetaQuotes:

Уровень качества моделирования = ((0,25х(StartGen-StartBar)+0,5х(StartGenM1- StartGen)+0,9х(HistoryTotal- StartGenM1))/( HistoryTotal- StartBar))х100%, где:

HistoryTotal — количество баров в истории;

StartBar – номер бара, с которого началось моделирование;

StartGen – номер бара, с которого началось тестирование на базе исторических данных ближайшего таймфрейма;

StartGenM1 – номер бара, с которого началось моделирование на базе минуток.

Как видите, уровень качества моделирования нам, какие конкретно таймфреймы употреблялись при тесте. В случае если при тестировании советника на периоде М15 употреблялись лишь эти М1, то уровень качества моделирования будет 90%. В случае если употреблялся лишь сам период М15, уровень качества, если судить по формуле, будет равняется нулю, либо, как пишет МТ4, n/a. А при тестировании на тиках писать 99%, дабы было ясно, что все трудится нормально и тестирование вправду идет по тикам.

Значит ли это, что тестирование с качеством n/a дает совсем неточные эти, а с качеством 99% — весьма правильные? Никак нет, это легко значит, что в первом случае употреблялась модель по стоимостям закрытия, а во втором употреблялись тики. Наряду с этим первый тест в полной мере возможно намного правильнее второго и это нужно осознавать: качество и качество моделирования самих котировок – это полностью различные вещи.

Что еще необходимо понимать, так это то, что уровень качества результатов тестирования будет кроме этого зависеть от самой применяемой стратегии. К примеру, в случае если стратегия трудится на D1 по стоимостям закрытия без стопов, тейк-профитов и тралов и входит лишь по рынку, без помощи отложенных ордеров, то вы имеете возможность взять в полной мере правильный бэктест, применяя модель «контрольные точки».  Для тестов стратегий, применяющих стопы и тейки уже как минимум необходимо уровень качества 90%, для получения результата, хотя бы мало приближенный к действительности. Наряду с этим, чем ниже период, на котором трудится советник, тем большее влияние на результаты оказывает спред. При фиксированном значении спреда тесты таких советников будут очень далеки от действительности, впредь до того, что прибыльный при тестировании советник будет сливать депозит на настоящем счете. Как вы видите, настоящее уровень качества теста зависит от многих факторов, таких как уровень качества котировок, характеристики самой совокупности, и возможности совокупности обойти либо нивелировать ограничения тестера МТ4.

Данный факт еще раз обосновывает мою идея о том, что дабы прибыльно торговать при помощи советника, вы должны прекрасно знать и глубоко осознавать, как конкретно он трудится, каков его метод, дабы свести все ограничения терминала к нулю.

Еще одна значительная неприятность, касающаяся применения тиковых данных – это брокерозависимость. Результаты тестов с применением тиковых данных от одного брокера будут различаться от результатов с применением данных другого, поскольку различия между данными кроме того стоимостей закрытия разных брокеров могут быть около 10-15% от размеров свечи. В долговременном периоде такая отличие может привести к весьма различным графикам доходности одного и того же советника, трудящегося на квитанциях различных брокеров.

Сейчас поболтаем об еще одном ограничении терминала, в этом случае уже решенном. Изначально в терминале МТ4 не было возможности поменять спред для тестирования. В следствии тесты получались любой раз различные.

Причем, в случае если, сделав тест в будний сутки, трейдер приобретал прекрасный результат по работе собственного советника, то сделав тест опять в выходной либо ночью, в полной мере возможно было понять, что советник сливает. Было большое количество непоняток, как же так имело возможность случиться – так как трудился же! А также зная о таком положении дел, эргономичного было мало – дабы сделать тест ночного скальпера, трейдеру, соответственно, приходилось караулить у окна луну. В общем, то еще веселье было.

К счастью, это непотребство потом исправили, предоставит шанс трейдерам самим выставлять необходимый для тестирования спред.

Новый терминал MetaTrader 5

new-metatrader5

Итак, язык mql5 владеет большими возможностями. Это, без сомнений, большой плюс. Минус в том, что специалисты, написанные на языке mql4 в терминале МТ5 трудиться не будут. Соответственно, желающие пересесть на новый терминал трейдеры, не привычные с программированием, но жаждущие торговать при помощи советников, удачно торговавших на прошлой версии терминала, вынуждены заказывать перевод за деньги. Додумайтесь, где скорее люди будут искать таких программистов? Верно, в разделе «Фриланс» на сайте все той же компании MetaQuotes, которая приобретает рабочую группу с каждого заказа, каждого реализованного индикатора и советника и еще большое количество за что.

Это бизнес, ничего личного.

Большой плюс терминала если сравнивать с прошлой версией – применение нескольких ядер. Делается это при помощи менеджера агентов тестирования. Наряду с этим вы имеете возможность задействовать любое количество ядер. Кроме этого вы имеете возможность создать целую сеть из ваших компьютеров для применения их совокупной мощности в оптимизации экспертов и целях тестирования на «главной» машине либо кроме того воспользоваться облачной сетью, в которой за умеренную плату собственные мощности предоставляют другие трейдеры.

Захватывающая мысль, на деле прирост производительности при применении данной сети был приблизительно трехкратным. Наряду с этим весьма здорово все зависит от скорости интернет прочих факторов и соединения. Создать собственную сеть я также пробовал, но компьютеры неизменно дисконнектились и это скорее злило, чем помогало.

Итак, внимание! Пятый терминал взял оптимизации и возможность тестирования на настоящих тиковых данных. Казалось бы, вот оно! Все неприятности прошлой версии решены и возможно стремительнее бежать переводить вручную (как мы не забываем, авторы решили сделать мало денег на не могущих программировать пользователях) всех собственных ботов на новую платформу.

Но не тут то было. Возможности импортировать собственную проверенную базу котировок (как это было в МТ4) тут нет. И, по заверениям разработчиков, не будет. Котировки с сервера машинально, причем тиковые, причем с сервера самого брокера. Помой-му то, что нужно – тики как раз того брокера, на котором планируешь торговать.

Да вот неприятность – у многих брокеров по большому счету нет тиковой истории дальше одного месяца. У некоторых имеется история за год-два, как в Альпари, к примеру. А все, что дальше – заливается с сервера компании MetaQuotes, причем, как я осознал, у них тиков также нет, лишь М1.

А дальше по этим М1 данным происходит все та же генерация тиков, как и в четвертом терминале. Но, повторюсь, вероятно я ошибаюсь, и MetaQuotes поставляет вправду тиковые эти, но проверить это запрещено никак.

В общем, по окончании переписки советника я выполнил его тестирование по настоящим тикам. У меня имеется такая привычка – писать в х к ордерам разную нужную данные, а также значение спреда. Проглядывая историю сделок свежего теста с 2000 года по валютной паре eurusd, я увидел такую занимательную вещь – до 2009 года спред был все время 5 пунктов, с 2009 по 2014 – неизменно 2 пункта, и лишь с 2014 года он вправду изменялся. Я попытался повторить опыт в других режимах моделирования и результат был схожим. Открыл счет у другого брокера – и опять та же картина. Тогда я начал искать поле ввода фиксированного спреда, как в ветхой хорошей четвертой версии и… не отыскал!

Ну и, конечно, следующим логичным моим действием было запуск Uninstall. Вот такое недолгое, но весьма познавательное знакомство с МТ5 произошло у меня.

И еще одно наблюдение, касаемо МТ5. Тесты на пятой платформе весьма похожи на тесты с четвертой, но постоянно получаются прилично лучше, чем на МТ4. Вероятнее, дело тут в мало отличающихся котировках.

Неспециализированные неприятности

obshhie-problemyi-testerov-foreks

Ветхий mql4 был весьма несложным языком, на освоение которого возможно было израсходовать от силы семь дней. В последний год в mql4 было добавлено большое количество трансформаций, каковые максимально приблизили его к пятой версии, в частности помощь многих элементов объектно-ориентированного программирования, как классы, инкапсуляция, наследование, полиморфизм, перегрузка, абстрактные классы. И все же и mql4, и mql5 уступает по возможностям независимому языку программирования.

Что творится в самом тестере на протяжении тестирования и оптимизации, что так очень сильно замедляет целый процесс? Я не знаю. Не знает никто, не считая программистов, каковые писали терминал, поскольку код закрыт и посмотреть, как в действительности в том месте все рассчитывается, не представляется вероятным.

Одновременно с этим при с самописным тестером я совершенно верно знаю, что происходит, что откуда берется и как рассчитывается. И самое основное – как надежен мой бэктест.

Еще один недочёт, вытекающий из прошлого – закрытый метод оптимизации. Имеется множество разных способов оптимизировать параметры советника. Имеется большое количество разных параметров, по которым хочется проводить оптимизацию. Сделать пользовательский параметр, что будет выводиться в таблице «результаты оптимизации», возможно методом добавления нескольких строчек кода в сам специалист.

Но совершить оптимизацию по нему уже не окажется.

Самый печальный недочёт терминалов MT4 и MT5 в том, что нельзя проводить тесты на нескольких инструментах для получения сводного отчет по торговле портфелем советников. Исходя из этого приходится пользоваться сторонним софтом, таким, как Report Manager либо SQ EA Analyzer. Не обращая внимания на то, что первая программа бесплатна, я советую купить второй вариант из-за значительно более широких и очень нужных возможностей.

Оба терминала применяют лишь один поток котировок – по Bid. Наряду с этим котировки Ask вычисляются, исходя из заданного спреда (Bid + Spread). И получается, что график стоимостей Ask всецело сходится с графиком стоимостей Bid, что в действительности, конечно же, далеко не так.

Спред всегда изменяется, и если вы взглянуть на тиковый график в терминале, то заметите, что графики Bid и Ask далеко не всегда выглядят один в один. Это – еще одно упрощение. К чему же оно приводит?

Ну, к примеру, для советников, торгующих на периоде от Н1 и выше пара пунктов погрешности лет этак за 15 даст неточность итоговой прибыли в районе плюс минус 3-10% — терпимо. Но для скальперов такая неточность может вылиться в погрешность до 50%. Так же страшна такая обстановка и для советников, трудящихся с отложками.

Фиксированный спред ведет к тому, что результаты тестов таких советников весьма далеки от действительности, поскольку на тесте, к примеру, убыточная сделка возможно пропущена, а в реале она будет находиться, поскольку спред как раз в тот момент в действительности составлял 3 пункта, а не 2, как было задано для теста. Либо напротив, многих прибыльных в тестере сделок имело возможность не произойти в действительности.

Еще один, не через чур большой недочёт, но все же воздействующий на точность теста – расчет цены пункта для кроссов, которая вычисляется по следующей формуле: Цена пункта = количество позиции * размер пункта * текущая котировка базисной валюты по отношению к USD / текущий курс валютной пары (кросс-курс). Котировки базисной валюты и курс пары берутся тестером на сегодня и эта стоимость употребляется в течении всего теста. Но так как 20 либо кроме того 5 лет назад обе стоимости были вторыми и цена пункта была также второй.

Это не таковой ужасный недочёт – в случае если бот сливает, он сольет с любой ценой пункта. В этом случае обращение лишь о том, что итоговые результаты теста неточны.

Приблизительно то же самое происходит, в случае если ваш счет открыт не в USD, а, к примеру, в EUR. Предположим, вы тестируете советника на паре usdchf и тестер для расчета цены пункта заберёт текущий курс eurusd и eurchf. Конечно, таковой тест также будет иметь погрешность, поскольку эти котировки кроме этого изменяются во времени.

Чуть выше я упоминал программу EA Analyzer. В ней предусмотрен последовательность разных стресс тестов, призванных оказать помощь лучше оценить последствия применения ваших советников на настоящем счете. К примеру, симуляция Монте-Карло разрешит вам с определенной долей возможности оценить нехороший сценарий работы советника и, если он вас устраивает, приступить к работе.

В опытных терминалах данный стресс тест встроен, кроме этого, как и многие другие, к примеру, тесты на робастность настроек советника, брокерозависимость либо спредозависимость. В прошедшей статье я сказал, что роботы не предвещают будущее, мы можем лишь на основании тестов взять определенную возможность того, что советник принесет нам профит. Стресс тесты — очень важные инструменты для работы, поскольку чем тщательнее будет происходить проверка робота, тем больше возможности, что он будет трудиться кроме этого, как трудился на исторических данных.

Еще один фактор, воздействующий на точность теста – величина свопа. В тестере МТ4 и МТ5 берется текущая величина свопа для всего теста, не смотря на то, что сам своп в действительности, без сомнений, изменяется. Причем чуть ли по паре раз в году. Забавно, но у различных брокеров величины свопов на одинаковый инструмент смогут кардинально различаться. К примеру, у брокера RoboForex сейчас своп по паре usdchf для шортов образовывает -2,5 пункта, а для приобретений -1,4 пункта. Одновременно с этим у Forex4u эти цифры составляют -5,5 и +2,4 пункта.

В случае, если вы тестируете ночного скальпера, своп может сыграть решающую роль как в прибыльности бэктеста, так и конкретно самой торговли. Наряду с этим вы не сможете реально оценить действие величины свопа на торговлю – ни задать, ни тем более изменять в ходе тестирования эту величину запрещено – она берется из данных брокера, счет которого сейчас активен в терминале.

Как видите, огромное количество мелочей, решаемых практически парой строчек кода (ну пускай не парой, но все же), так и остается нереализованным. И дружно эти мелочи существенно затрудняют работу с терминалом, а при с МТ5 – делают ее неосуществимой. Дело в том, что конечные пользователи терминала, другими словами мы с вами, не являются клиентами MetaQuotes.

Их клиенты — в первую очередь брокеры, которым в принципе параллельны потребности рядовых трейдеров.

Ну и напоследок давайте обсудим применение времени в платформе МТ4. В языке mql имеется множество функций, каковые применяют время в привязке к стоимостям конкретной свечи, к примеру, Open[1] либо High[7]. Как правило при написании торговых методов мы так или иначе используем эти сведенья.

Наряду с этим эти сведенья никак не привязаны к конкретному времени брокера, они привязаны к новым тикам. Допустим, мы используем период Н1. При приходе нового часа, , если тиков сейчас не пришло, новая свеча появляется в виде черточки, пока не начнут приходить новые тики. Наряду с этим час уже сменился, но пока новых тиков нет, тот же Close[1] практически делается Close[2]. Другими словами в действительности получается, что в случае если советник применяет время в виде Hour() и приобретает цены свечей посредством Close[1], Open[1], High[1] и Low[1], он возьмёт сигнал в необходимый час, но OHLC цены сейчас еще не будут обновлены, поскольку новых тиков пока не пришло, другими словами цены бара №1 будут практически стоимостями второго бара. Исходя из этого в этом случае необходимо, дабы метод ждал появления первых тиков новой свечи.

Увидьте, что это относится лишь советников, каковые применяют конкретное ценовые вычисления и время входа. В случае если для входа свечи не употребляются, таковой неточности не появится.

Так что выбрать – зависимую либо свободную платформу?

platforma

Для тех трейдеров, каковые заинтересованы в разработке скальпирующих торговых систем, трудящихся на периодах до М5, MetaTrader конкретно не подойдет. Кроме того при применении 99% качества моделирования результаты все еще будут очень сильно различаться от настоящих (не смотря на то, что и возможно добиться более менее некоего подобия). В действительности в терминале МТ4 достаточно легко сделать грааль, но в действительности он, вероятнее, трудиться не будет.

Любой рыночный нюанс, игнорируемый при тесте, может привести к кардинально противоположным тесту итогам.

Я не желаю заявить, что прибыльного в долговременной возможности скальпера создать в МТ4 невозможно. Легко это сделать куда сложнее, чем, скажем, прибыльного долгосрочника. Исходя из этого, если вы до тех пор пока слабо привычны с алготрейдингом, я советую начать создавать советников для работы на периодах не ниже Н1, а уже после этого постараться создать портфель прибыльных скальперов.

Необходимо понимать, что такие коммерческие платформы, как MetaTrader, MetaStock, TradeStation, NinjaTrader и другие – это ни за что не опытные платформы. Любая из таких платформ содержит собственные ограничения, а закрытый исходный код ведет к тому, что не все из этих ограничений легко и по большому счету вероятно найти. По большому счету первая мысль, которая приходит в голову трейдеру, желающему использовать советники для торговли, — применять коммерческую платформу, одну из перечисленных выше, к примеру.

В ней уже все предусмотрено – и тестирование, и оптимизация, и сама торговля. Все комфортно и просто, в одной упаковке. Но такое ответ делает трейдера зависимым от выбранной ее разработчиков и платформы, от того, какой функционал авторы захотят добавить, а какой нет, и от идеальных ими при разработке неточностей и ошибок, со многими из которых ничего сделать запрещено. Наряду с этим коммерческие платформы дают трейдеру некоторый базисный функционал.

Но если вы желаете заняться высокочастотной торговлей, к примеру, такие платформы вам уже не подойдут.

Свободное ответ – это то, которое создано лично вами. Целый функционал, что вам нужен, точность тестирования, количество вариантов оптимизации, разных стресс тестов, прочие плюшки и скорость исполнения зависят лично от вас. Вы имеете возможность выбирать сами, API какого именно поставщика ликвидности выбрать, наряду с этим быть свободным от его манипуляций и брокера с ценовым потоком. Такое ответ владеет неограниченными возможностями и ограничено только вашей знаниями и фантазией.

Как раз свободное ответ и выбирают опытные алготрейдеры.

Так как при подключении напрямую к поставщику ликвидности вы сходу избавляетесь от привязки к медленной, неэффективной и несовершенной платформе, от брокеров, манипулирующих исполнением и ценами ваших ордеров, от ограничения разных типов стратегий, каковые легко нереально осуществить при помощи коммерческих терминалов. Но, таковой подход подойдет далеко не всем, поскольку, дабы написать хорошую платформу для работы, необходимо иметь огромное множество знаний, вагон и серьёзный опыт программирования времени. В большинстве случаев, для разработки платформ для того чтобы типа нанимается целая команда программистов, каковые и выполняют задуманное в достаточно маленькие сроки.

Все это требует или громадного количества времени и знаний, или громадного количества денег.

Заключение

daily_picdump_2127_640_94

Ну а до тех пор пока у вас на счету нет хотя бы одного десятка миллионов долларов (как раз начиная с этого порога не встретить ни одного трейдера, применяющего для торговли коммерческий продукт), нет ничего нехорошего в том, дабы применять уже готовую платформу, наподобие MetaTrader 4. Легко наряду с этим принципиально важно постоянно помнить об ее ограничениях, учитывать их в собственной работе и быть внимательным, критично относиться к приобретаемым в тестере итогам. Торгуйте так, как вам разрешает ваш терминал и старайтесь создавать советников, имеющих «иммунитет» к его недочётам, применяйте сторонние программы для минимизации недочётов терминала, такие, как TickDataSuite и SQ EA Analyzer, и тогда, кроме того применяя таковой несовершенный продукт, как МТ4, вы все равно станете приобретать собственную прибыль с рынка.

С уважением, Дмитрий аkа Silentspec