Читать книгу Техники автоматизированной торговли - Роман Александрович Клименко - Страница 1
ОглавлениеВведение
Не секрет, что есть люди, которые стабильно зарабатывают на торговле акциями, валютами, сырьем и другими активами. Но таких людей всего 5% от общего количества трейдеров. А остальные 95% трейдеров теряют свои деньги. И это при самом оптимистичном взгляде на рынок.
Что отличает 5% успешных трейдеров от 95% тех, кто теряет свои депозиты?
Как показывают результаты общения с успешными трейдерами, все они имеют свою торговую стратегию, которой следуют строго и безоговорочно. Фактически, они давно уже стали операторами своей торговой стратегии. Если так можно выразиться, роботами, которые выполняют заложенные в них правила.
Шаг влево или вправо от правил торговой стратегии равносилен потере денег. Они это понимают и у них хватает веры в свою торговую стратегию, чтобы следовать ей даже в том случае, если она начинает приносить убыток.
Зачем нужны торговые роботы
Самый большой грех трейдера заключается в отступлении от правил его торговли. Представьте, вы сели торговать, а точек входа по вашей торговой стратегии нет. Вы час сидите, второй, третий. Сидите, смотрите график, и не зарабатываете. И вам становится скучно. Вы начинаете искать точки входа там, где их нет. Входите в сделку, и плохо, если вам повезло и вы получили прибыль. Ведь тогда вы начинаете верить в то, чего нет: в удачу, в то что нашли новую торговую систему, в то что ваша торговая система вообще работает. И подобная вера в дальнейшем приведет вас к неверной статистике по торговой системе и, как следствие, к потере депозита.
Можно ли бороться с собой? Можно. Пройдут годы и не один слитый депозит, и вы не просто найдете торговую стратегию, а еще и научитесь безоговорочно следовать ей. И тогда войдете в те 5% трейдеров, которые способны стабильно зарабатывать на рынке.
А можно поступить проще, и возложить торговлю на робота, который вообще не имеет проблем с психологией. Ему все равно, сколько часов он сидит на рынке, сколько сделок открыл сегодня, и сколько сделок до этого уже были убыточны. Если есть точка входа по торговой стратегии, заложенной в нем, значит он открывает сделку. Если нет, то он не будет искать точку входа там, где ее нет.
Это самое главное преимущество торговых роботов. Но не единственное. Еще одно преимущество торгового робота – это его самостоятельность в плане торговли. Вам больше не нужно сидеть у компьютера целыми днями. Вы можете поехать в отпуск, пойти на рыбалку, заняться женой и детьми, да просто найти себе хобби. А в это время робот будет самостоятельно торговать и приносить вам так называемый «пассивный» доход.
И, конечно, торговые роботы незаменимы, если вы хотите проверить, насколько работоспособна та или иная торговая система или идея.
Если вы нашли торговую систему, автор которой уверяет, что её использование 100% приводит к увеличению вашего депозита, то вы можете сразу начать торговать на реальном счете по данной торговой системе. И, скорее всего, через некоторое время обнаружите, что ваш депозит тает на глазах.
Таким образом вы протестировали торговую систему на собственных деньгах. Это самый быстрый, но и самый затратный способ тестирования.
Более правильным было бы открыть демо-счет и начать торговлю по торговой системе на нем. И только через 100-200 сделок можно более-менее точно сказать, работает ли торговая система и подходит ли она вам. Потому что даже самая хорошая торговая система, которая приносит прибыль всем, кто с ней работает, может не подойти конкретно для вас. И вы будете получать убытки по ней.
Что такое 100-200 сделок? В зависимости от того, как часто бывают точки входа по торговой системе, это может быть и месяц, и полгода, и год вашей жизни. И это время нужно потратить только для того, чтобы понять, работает ли торговая стратегия. Но и тогда ответ на данный вопрос будет не максимально точным. Ведь вы могли поддаться психологии и открывать сделки не там, где нужно. Или же просто, извиняюсь, пойти в уборную, а вернувшись увидеть, что вы пропустили точку входа. А значит вся собранная вами статистика вообще бессмысленна.
И тут вас спасают торговые роботы. Если вы умеете разрабатывать советники на языке MQL, то несколько недель или даже дней у вас уйдет на разработку такого робота. Потом день можно потратить на его тестирование и оптимизацию. И если все хорошо, торговая система действительно работает, то можно начинать зарабатывать деньги. И делать это будете не вы, а ваш робот. Ну а вы в это время можете заняться другой торговой системой, диверсифицируя свои риски. Ну или вспомнить, что у вас было хобби или даже дети.
О чем данная книга
В первую очередь данная книга посвящена правилам построения прибыльных торговых роботов. Абстрагируясь от какого-либо языка программирования, мы рассмотрим и протестируем на прибыльность самые разные способы торговли. И попробуем выбрать те из них, которые действительно работают.
Что же касается конкретного языка программирования, то в данной книге для разработки торговых роботов мы будем использовать язык MQL. На данный момент существует две версии этого языка: MQL4 и MQL5. Первая версия применяется в торговом терминале MetaTrader 4, а вторая – в MetaTrader 5.
В данной книге мы будем использовать обе этих версии. Так как, вне всякого сомнения, есть брокеры, которые поддерживают обе версии торгового терминала – и MetaTrader 4 и MetaTrader 5. Но большинство брокеров на данный момент поддерживают только торговый терминал MetaTrader 4. Ну и небольшая часть брокеров поддерживает только торговый терминал MetaTrader 5.
По мере своей возможности, мы будем создавать кроссплатформенных торговых роботов. То есть, тех, которые могут работать как в торговом терминале MetaTrader 4, так и в более новой версии MetaTrader 5.
Если же вы уже умеете разрабатывать торговых роботов на Python или на других языках, то из данной книги вы почерпнете те правила, которые позволят вам создать действительно прибыльного торгового робота. Ведь язык, на котором создается торговый робот – это наименее важная его часть. Самое главное – это алгоритм, по которому он работает. То есть, правила, по которым он входит в сделку, и правила, по которым он выходит из сделки с прибылью или с убытком.
Дополнительные материалы
На протяжении всей книги мы создадим не одного торгового робота. Сами торговые роботы и их исходники будут приложены к книге. Поэтому вам даже не нужно будет разрабатывать своего робота. Просто выберите того, который нравится вам больше всего. И начинайте торговать.
Ну а если вы все же хотите разработать торгового робота, который основан на торговой системе, не описанной в этой книге, то далее мы рассмотрим, что для этого нужно, и как вообще создать свою торговую систему. А исходники разработанных нами роботов вам все равно могут пригодиться. Чтобы на их основе сделать своего робота.
Для кого эта книга
В первую очередь данная книга предназначена для тех, кто уже умеет разрабатывать торговых роботов на каком-либо языке программирования.
Если же данные умения в ваш багаж знаний не входят, то из отдельной части данной книги вы сможете почерпнуть основные сведения о разработке на языке MQL. Данные сведения помогут вам в дальнейшем самостоятельном изучении языка MQL. Ведь для этого даже не нужно покупать каких-либо дополнительных книг.
«Книга» о языке MQL на русском языке уже доступна в торговом терминале MetaTrader. И пусть называется она “справкой”, но это полноценная книга, которая описывает все возможности данного языка с большим количеством примеров реального кода. Не забыты в данной справке и основы программирования: описание того, что такое переменные, константы, массивы, функции, циклы и .т. д.
Введение в алготрейдинг
Довольно сложно рассказывать о чем-либо, если ваш собеседник понимает те или иные термины и выражения не так же, как и вы. Поэтому давайте начнем данную книгу с небольшого ликбеза.
Основные понятия
В этой книге часто можно будет встретить следующие слова и фразы.
Торговый робот, советник, эксперт. Прежде всего, давайте поговорим о таком понятии, как «торговый робот». Данная фраза уже множество раз встречалась в книге, а ведь мы еще толком и не начали изучение алгоритмической торговли.
Торговый робот – он же эксперт, советник, робот. Это некая программа, которая способна торговать на каком-либо инструменте фондового рынка.
Инструмент, которым торгует советник, может быть жестко встроен в код программы. Но чаще всего торговый робот выполняет торговлю на том инструменте, на котором вы его запустили.
То есть, торговый робот не может быть запущен сам по себе. Любой торговый робот запускается в окне графика конкретного инструмента. В терминале MetaTrader в одном окне графика инструмента может быть запущен только один торговый робот. Или же ни одного, если вы собираетесь торговать по данному инструменту вручную.
При этом советник может торговать не только на одном инструменте, а сразу на нескольких. Если советник, который запущен в одном окне графика, совершает сделки сразу на нескольких инструментах, то он называется «мультивалютным» или «мультисимвольным».
Работа мультивалютных советников поддерживается как в терминале MetaTrader 4, так и в MetaTrader 5. Однако тестировать и оптимизировать мультивалютные советники можно только в терминале MetaTrader 5.
Инструмент, символ, тикер, актив. В описании выше нам встретилось загадочное слово «инструмент». Под данным словом мы будем понимать актив, который можно купить или продать. То есть, это может быть:
– акция какой-либо компании, например, Microsoft;
– валютная пара, например, EURUSD;
– нефть, кукуруза, платина и другие виды сырья;
– индексы, например S&P500;
– ETF и другие странные слова.
В рамках данной книги инструмент и символ – это синонимичные понятия. Но вообще, символ – это аббревиатура, которая определяет какой-либо инструмент у вашего брокера. Например, график акций компании Microsoft у разных брокеров может называться по-разному. У кого-то акции данной компании имеют обозначение MSFT, у кого-то MSFT.m, у кого-то MSFT.us, а у кого-то просто Microsoft.
Тикер, символ и инструмент, в рамках данной книги, это также синонимичные понятия. Но вообще, тикер – это общепринятое сокращенное обозначение акций компании. Например, для компании Microsoft – это MSFT.
В книге всегда под инструментом, символом или тикером будет пониматься актив, на котором советник выполняет торговлю.
Рынок, биржа. Все инструменты объединены в рамках какого-либо рынка.
Акции компаний входят в группу, которая называется фондовый рынок.
Валютные пары относятся к рынку Forex.
Также бывает товарный рынок.
И совсем недавно появился рынок криптовалют.
Это наиболее популярные рынки, на которых можно торговать.
Все инструменты в рамках одного рынка объединяют некоторые общие особенности. И я говорю сейчас не об фундаментальных особенностях, таких как тип ценной бумаги или что-то подобное. В данном случае имеются ввиду особенности торговли инструментов, входящих в состав рынка.
Например, считается, что инструменты фондового рынка имеют глобальный бычий тренд. То есть, на длительном периоде времени цена данных инструментов растет.
Рынок Forex считается рейнджевым рынком. То есть, цена активов на нем ходит то вверх, то вниз.
Активы сырьевого рынка не могут стоить меньше, чем стоимость их создания или добычи.
И т.д.
Брокер. Чтобы иметь возможность покупать и продавать какие-либо активы, вам необходимо иметь собственный счет у какого-либо брокера. На этот счет необходимо перевести денежные средства, которые будут использоваться для торговли.
Нельзя просто так взять и купить активы непосредственно на каком-либо рынке. Все операции совершаются через вашего брокера.
Брокер предоставляет вам возможность купить определенный набор активов. У каждого брокера свой список активов, которые он имеет право предоставить вам для торговли. Поэтому если у вас есть торговая стратегия, которая работает на определенном инструменте, то при выборе брокера необходимо обязательно уточнить, позволяет ли данный брокер работать с таким инструментом.
Также брокеры отличаются друг от друга по набору условий торговли: размеру спреда, наличию и размеру комиссии за операцию, размеру и типу свопа.
Таким образом, выбор брокера, у которого вы будете торговать – это довольно нетривиальная задача. С одной стороны, условия торговли, которые он предоставляет, должны вас устраивать. С другой стороны, вы должны доверять этому брокеру, ведь вы переводите на его счет свои деньги. И кроме того еще и список инструментов, которые поддерживает брокер, должен быть интересен для вас.
Торговая стратегия, торговая система. Набор правил, по которым определяется точка входа в позицию и ее направление, а также набор правил, при наступлении которых открытая позиция закрывается, называются торговой системой.
Такое понятие, как торговая система, в большей степени актуально для ручной торговли. Так как в ручной торговле можно торговать как по правилам своей торговой системы, так и просто так, по наитию. Точнее, в ручной торговле никто не мешает вам торговать без какой-либо торговой системы. Однако на долгом периоде времени отсутствие торговой системы – это верный путь к слитию депозита.
В алгоритмической торговле без торговой системы торговать в принципе нельзя. Так как любой советник торгует по каким-либо правилам, позволяющим ему определить, когда входить в сделку, а когда выходить из нее. А это и есть торговая система.
Позиция, сделка и трейд. Позиция – это актив, который вы приобрели (как в Long, так и в Short). То есть, если у вас есть позиция по Microsoft – это значит, что у вас в портфеле сейчас есть акции с тикером MSFT.
Когда вы входите в позицию, то есть, покупаете какой-либо актив, вы совершаете сделку по открытию позиции.
Если вы хотите продать свою позицию, и получить вместо актива деньги на свой баланс, вам нужно совершить еще одну сделку. На этот раз по закрытию позиции.
Если вы совершили сделку по открытию позиции и потом совершили сделку по закрытию этой позиции – вы совершили один трейд.
Таким образом, если вы уже продали какой-либо ранее купленный актив, то вы совершили трейд. Если же вы до сих пор имеете в своей корзине данный актив, то сейчас вы находитесь в позиции по данному активу.
Объем актива. И позиция и сделка и трейд имеют такую размерную величину, как объем. То есть, размер актива, с которым вы оперируете в рамках данной позиции/сделки/трейда.
Например, для акций объем актива – это количество акций, которые вы покупаете или продаете.
В торговле объем актива измеряется в лотах. Минимальный размер лота, который вы можете приобрести, зависит как от инструмента, так и от вашего брокера. И может быть равен 0.01 лот, или 0.1 лот, или 1 лот.
Лот не всегда равен 1 акции. Иногда в лот входит больше одной акции, например сразу 1 000. Но для нас это не имеет особой важности. В торговле мы оперируем лотами, а сколько акций или что именно входит в эти лоты, для нас не важно.
Корзина, портфель. Список позиций, которые у вас есть в данный момент, называется вашим портфелем или корзиной.
Когда вы открываете новую позицию, вы добавляете соответствующий актив в свой портфель.
При инвестировании рекомендуется иметь позиции сразу по нескольким инструментам. Таким образом вы можете диверсифицировать свой портфель, снизив риски, которые лягут на ваши плечи, если какой-либо из инструментов пойдет против вас.
Как говорится в поговорке: «не стоит класть все яйца в одну корзину».
Диверсификация. Наличие нескольких активов в вашем портфеле называется диверсификацией портфеля. Диверсификация может применяться с различными целями.
Основная цель диверсификации – это снижение рисков. Например, представьте две ситуации.
В первой ситуации вы покупаете 1 актив на 1 000 долларов. И этот актив начинает падать в цене.
Во второй ситуации вы покупаете 5 разных активов, каждый из них на 200 долларов. И один из этих активов начинает падать в цене.
В первом случае при падении стоимости актива вы потеряете в 5 раз больше денег, чем во втором случае. Ведь вы купили в 5 раз больше актива, который упал в цене.
А ведь во втором случае какой-то из купленных активов может в цене прибавить. И это прибавление может уменьшить ту сумму, которую вы теряете на падающем активе.
Таким образом, даже если какие-то активы из вашей диверсифицированной корзины падают, вся корзина в целом может падать гораздо слабее, чем отдельный актив, или вообще быть в прибыли, если другие активы корзины выросли сильнее.
Из этого вытекает еще одна цель диверсификации – создание более гладкой кривой доходности. Например, посмотрите на 2 графика доходности:
Какой из графиков доходности более привлекателен для инвесторов? Предполагаю, что ответ очевиден для всех. График б более гладкий, а значит, более привлекателен.
И, наконец, еще одна из возможных целей диверсификации – повышение количества сделок, и, соответственно, размера прибыли за определенный период.
Если ваша торговая система на одном инструменте совершает в среднем 20 трейдов в год. И этого количества для вас по какой-то причине недостаточно. То с помощью диверсификации, то есть, торгуя сразу на нескольких инструментах, можно увеличить общий объем торговли до нужного вам количества трейдов.
Инвестирование. Одним из способов заработка на фондовом рынке является инвестирование. Основной смысл инвестирования заключается в покупке определенного актива на длительный промежуток времени. При этом плечи чаще всего не используются.
Кредитное плечо. Одной из услуг, которые предоставляет брокер, является возможность использования в торговле плеча. Кредитное плечо – это возможность взять в долг у брокера определенную сумму денежных средств для покупки актива в большем объеме.
Плечо выражается в виде целого числа. Данное число указывает, во сколько раз будет увеличена первоначальная предоставленная вами на покупку актива сумма. То есть, при использовании плеча 10 за одну и ту же сумму собственных денежных средств вы сможете купить в 10 раз больший объем актива.
При плече 100 объем доступного для вас актива увеличивается в 100 раз. Некоторые брокеры позволяют использовать плечи вплоть до 2 000. То есть, вы можете самостоятельно выбрать, какое плечо использовать в своей торговле.
Естественно, что чуда не бывает. И брокер дает вам деньги в долг не бесплатно. Если вы держите более 1 дня позицию, при покупке которой использовалось плечо, то за каждый день удержания такой позиции вы будете платить определенную комиссию. Данная комиссия называется свопом.
Впрочем, если вы закрыли позицию, при открытии которой использовалось плечо, в течение того же дня, то за использование одолженных средств вы ничего платить не будете. В этом случае интерес брокера заключается в том, что вы купили больший объем актива, чем могли бы на свои собственные средства. А значит заплатили больше за спред или в качестве комиссии за открытие сделки.
Спред и комиссия. Спред и комиссия за совершение сделки – это то, на чем зарабатывает «правильный» брокер (не считая свопа).
Комиссия – это определенная сумма, которую вы платите при открытии позиции по какому-либо инструменту. Данная сумма фиксированная, и рассчитывается исходя из размера открываемой позиции.
Вообще, комиссия платится за любую сделку. То есть, и при открытии позиции, и при закрытии ранее открытой позиции. Таким образом, в рамках одного трейда вы платите комиссию два раза.
Однако брокер может указывать как комиссию за каждую сделку, так и общую комиссию по одному трейду. Тут нужно уточнять, что именно имеется ввиду у конкретного брокера.
Что касается спреда, то это разница между ценой покупки актива и ценой продажи актива. То есть, разница между ценой, по которой в данный момент существует покупатель, и той ценой, по которой согласен продать данный актив продавец.
В течение дня размер спреда постоянно меняется. Впрочем, это также может зависеть от вашего брокера. У некоторых брокеров есть разновидности счетов, на которых спред по инструменту всегда фиксированный.
Теоретически спред не может быть нулевым хотя бы потому, что если цена покупки и цена продажи равна, то будет автоматически совершена сделка. И покупатель купит свой актив, а продавец продаст его.
Однако брокеры могут понижать спред в некоторых случаях, например, в определенные часы дня, для привлечения клиентов. В этом случае разницу в спреде брокер платит из своего кармана.
Спред на одном и том же инструменте у разных брокеров может отличаться. Что может показаться странным, ведь котировки (то есть цены покупки и продажи) по инструменту у разных брокеров должны быть одинаковыми. Но на самом деле секрет разной величины спреда прост. В состав базового спреда, то есть того, который был получен от поставщика ликвидности, брокер может добавлять свою «комиссию». Ведь должен же брокер на чем-то зарабатывать.
Таким образом, брокер может зарабатывать и на комиссии за открытие сделки, и на спреде, или же на одной из этих «комиссий».
Своп. Если вы используете возможности плеча, которые предоставил вам брокер, то каждый раз, когда открытая вами позиция переходит через ночь, с вас снимается «комиссия» за использование кредитных средств брокера. Такая комиссия называется своп.
Размер свопа зависит как от инструмента, так и от направления вашей позиции: в Long позиция или в Short.
Если за своп вы должны платить «комиссию» брокеру, то такой своп является отрицательным. Однако на рынке Forex помимо отрицательного свопа бывает и положительный. В этом случае сам брокер платит вам «комиссию» за то, что вы держите позицию открытой в течение каждого дня.
Казалось бы – парадокс. Вы берете деньги в долг, и за это вам еще платят каждый день некоторое количество денежных средств. Разгадка в данном случае проста. И заключается она в разнице между базовыми ставками в тех валютах, которые входят в валютную пару, по которой у вас открыта позиция.
Если вы собираетесь использовать кредитное плечо, то также следует учитывать, что 1 раз в неделю наступает день тройного свопа. То есть, если вы перенесете открытую позицию через ночь в этот день, то заплатите сразу 3 свопа.
На фондовом рынке день тройного свопа – это пятница. И тут все понятно. Ведь в выходные фондовый рынок закрыт. И поэтому в пятницу своп начисляется и за использование кредитных средств на выходных.
А вот на рынке Forex все не так очевидно. Несмотря на то, что рынок Forex также закрыт в субботу и воскресенье, день тройного свопа на нем наступает в среду.
Быки, Long, длинная позиция. В трейдерской терминологии быки – это трейдеры, которые считают, что некий актив через некоторое время вырастет в цене. В этом случае трейдер открывает позицию по данному активу с целью ее дальнейшей перепродажи по более высокой цене. Такое направление открытия позиции называется Long, или длинная позиция.
Если позиция в Long действительно вырастет в цене, то после закрытия данной позиции трейдер получит прибыль. Если же трейдер не угадал, и цена актива снизилась, то после закрытия позиции трейдер получит убыток.
«Быком» может быть не только трейдер. Также данное понятие может относиться и к рынку. Если на рынке большинство активов стабильно растет, такой рынок называют «бычьим».
Медведи, Short, короткая позиция. Если раньше трейдеры могли только покупать активы с целью их дальнейшей перепродажи по более высокой цене, то сейчас помимо игры на повышение цены актива также возможна и игра на понижение.
По аналогии, если трейдер считает, что некий актив через некоторое время упадет в цене, то такой трейдер относится к стану медведей.
Если цена большинства активов на рынке долгое время снижается, тогда такой рынок называют медвежьим.
Если вы считаете, что некий актив упадет в цене, то вы можете взять у брокера данный актив взаймы, после чего, когда актив упадет, купить его по более низкой цене и вернуть брокеру. Разница между ценой, по которой вы получили актив от брокера, и ценой на момент его покупки с целью возврата брокеру, и будет вашей прибылью. Или убытком, если цена актива за то время, пока позиция была открытой, поднялась.
Такой вид позиции называется Sell, или короткая позиция.
Маржа. Когда вы открываете позицию по какому-либо активу, часть ваших денежных средств замораживается брокером. Это называется маржой и необходимо, чтобы гарантировать, что вы сможете покрыть убытки, если цена купленного актива пойдет против вас и вы получите стоп-лосс.
То есть, когда вы покупаете какой-либо актив, деньги за него не списываются с вашего счета. Они по-прежнему отображаются на вашем балансе. Однако некоторой частью от той суммы, которую стоит ваш актив, вы больше не сможете пользоваться, пока не закроете позицию по активу.
Замораживается не вся стоимость приобретенного актива, а только определенный процент от стоимости. Размер данного процента зависит от самого актива, вашего брокера, а также вашего кредитного плеча.
Чем больше кредитное плечо, тем меньше получается маржа при покупке одного и того же объема актива.
В этом и заключается основной принцип правильного использования кредитного плеча. Кредитное плечо необходимо не для того, чтобы увеличить лот, который вы можете приобрести. А для того, чтобы снизить маржу по открытой позиции, и тем самым расширить область для маневров, если цена актива пойдет против вас.
Уровень маржи. Отношение собственных средств трейдера к суммарной стоимости открытых позиций, в процентах. При снижении уровня маржи до 15-20% брокер может принудительно закрыть часть открытых позиций трейдера.
Стоп-лосс. Если цена открытой позиции идет против вас, то вы можете пересиживать это падение, в надежде, что цена вернётся. Или же можете закрыть позицию с убытком.
Во-втором случае нет необходимости круглосуточно находиться перед терминалом, чтобы вовремя закрыть убыточную позицию. Вы можете отослать брокеру специальный приказ на закрытие позиции, если цена по данному активу будет равна указанной вами или хуже. Когда цена доходит до уровня, на котором установлен такой приказ, позиция автоматически закрывается с убытком. Процесс закрытия позиции с убытком и называется стоп-лоссом.
Тренд, трендовый рынок. Долгосрочное движение цены актива в одну сторону называется трендом. При этом цена не обязательно должна каждый день быть все выше и выше, если тренд бычий. Или же все ниже и ниже, если тренд медвежий. Цена может двигаться то вверх, то вниз. Но тем не менее на длительном периоде времени при тренде цена актива стабильно растет/падает.
С технической точки зрения бычьим трендом называется движение цены, при котором каждый новый максимум и минимум выше предыдущего. Соответственно, медвежий тренд – когда каждый новый максимум и минимум ниже предыдущего.
В качестве примера можно посмотреть на график акций компании Microsoft:
Считается, что фондовый рынок относится к трендовым рынкам. Так как цена большинства акций на нем на длительном периоде времени стабильно растет. Ну или стабильно падает.
Рейндж, боковик, рейнджевый рынок. В противоположность трендовому рынку, на рейнджевом рынке цена активов то падает, то растет, на длительном промежутке времени находясь возле какой-то своей оптимальной цены или оптимального диапазона цен.
Примером такого рынка может быть рынок Forex. Например, посмотрите на график популярной валютной пары EURUSD:
Сам же боковик, или боковое движение цены, периодически возникает на активах любого рынка, независимо от того, относятся эти активы к трендовому рынку или к рейнджевому.
Более того, считается, что 70% всего времени цена любого актива находится в боковом движении. И только оставшиеся 30% в трендовом движении в какую-либо из сторон.
Язык программирования MQL
Теперь, когда мы с вами точно стали разговаривать на одном языке, можно перейти к рассмотрению базовых инструментов любого алготрейдера. А именно, среды разработки и языка программирования, на котором создаются торговые роботы.
В данной книге мы будем работать с таким языком программирования, как MQL. Данный язык программирования и среда для разработки на нем поставляются вместе с торговой платформой MetaTrader.
MetaTrader – это бесплатная торговая платформа для операционной системы Windows. Скачать последнюю версию данной программы можно на официальном сайте https://www.metatrader5.com/.
К сожалению, официальной версии MetaTrader для других операционных систем, например, MacOS, не существует. Поэтому большинству владельцев MacBook приходится устанавливать виртуальную машину с Windows только для того, чтобы запускать на ней торговую платформу MetaTrader.
Альтернативой установки виртуальной машины с Windows может быть использование специальной сборки MetaTrader для MacOS, которую предоставляют некоторые брокеры. Например, подобную сборку предоставляет брокер Admiral Markets (https://admiralmarkets.com).
Сборки MetaTrader для MacOS используют встроенную виртуальную машину с Windows. Поэтому в принципе особой разницы в производительности между двумя перечисленными подходами к установке MetaTrader на MacOS нет.
На момент написания данной книги существует две версии приложения MetaTrader: MetaTrader 4 и более новая версия MetaTrader 5. Соответственно, и язык программирования MQL существует в двух версиях: MQL4 и MQL5.
Среда для разработки на MQL
В состав торговой платформы MetaTrader входит не только сам торговый терминал MetaTrader.
Также после установки MetaTrader вы сможете обнаружить приложение под названием MetaEditor. Данное приложение предназначено специально для разработки с помощью языка MQL.
Запустить MetaEditor можно несколькими способами:
– при помощи ярлыка, автоматически создаваемого на рабочем столе при установке торговой платформы;
– с помощью кнопки MetaQuotes Language Editor в панели инструментов программы MetaTrader;
– в окне программы MetaTrader нажатием клавиши F4 на клавиатуре.
Доскональное изучение возможностей среды разработки MetaEditor не является целью написания данной книги. Если вы собираетесь всерьез заняться разработкой советников на языке MQL, вам придется изучить возможности данной среды разработки самостоятельно.
Начать можно с официальной документации для MetaTrader 4: https://book.mql4.com/ru/metaeditor/index.
Тем не менее, самые базовые сведения по среде разработки MetaEditor мы все же рассмотрим.
Папка для размещения файлов советников. Чтобы торговый робот можно было запустить в MetaTrader, он должен находиться в специальной папке Experts или ее подпапках. Самый простой способ найти данную папку – это запустить среду разработки MetaEditor.
Окно среды разработки MetaEditor представлено на рисунке ниже:
Как можно заметить, слева находится панель Navigator. Если у вас в окне данной панели нет, значит она скрыта, и отобразить ее можно с помощью пункта Navigator меню View.
Корнем дерева каталогов в панели Navigator является папка MQL5 (для MetaTrader 4 это папка MQL4). А уже в ней можно найти нужную нам папку Experts. Именно в этой папке должны находиться все торговые роботы. И именно в этой папке создается исходный и скомпилированный файл торгового робота при его создании в MetaEditor.
Чтобы открыть папку Experts в проводнике, вызовите контекстное меню данного пункта дерева каталогов, и выберите в нем пункт Open Folder.
Создание нового торгового робота. Разработка каждого торгового робота начинается с создания его основного файла. Для этого используется кнопка New панели инструментов MetaEditor или пункт New File меню File.
Каким бы вариантом вы не воспользовались, перед вами отобразится окно мастера MQL Wizard. Но перед тем, как мы посмотрим на это окно, следует заметить, что на языке MQL можно создавать не только советники.
Советник или торговый робот, это «приложение», которое в первую очередь предназначено для автоматической торговли.
Помимо советников существует возможность создания индикаторов. Индикатор – это «программа», которая использует текущие цены актива для каких-либо своих расчетов. На основании этих расчетов она может советовать, когда именно следует открывать или закрывать позицию. Или же просто выводить результаты своих расчетов на окно графика, чтобы трейдер самостоятельно принял решение, что с этими результатами делать.
И еще одним типом «программы» является скрипт. Советники и индикаторы, после своего запуска в окне графика инструмента, продолжают работать до тех пор, пока пользователь самостоятельно их не выгрузит. В отличие от них скрипт автоматически завершает свою работу после того, как будет выполнено то действие, которое в нем запрограммировано.
В рамках данной книги мы будем работать только с советниками.
Итак, в окне мастера MQL Wizard выбираем пункт Expert Advisor (template):
Именно данный пункт позволяет нам создать новый советник.
Далее мастер позволяет вам указать название файла советника, а также информацию об авторе советника и его веб-сайте.
С помощью отдельной области можно задать входящие параметры. Но мы этого делать не будем. Во-первых, потому что, возможно, вы еще не знаете, что это такое. А во-вторых, потому что входящие параметры легко добавить непосредственно в коде советника.
На следующем шаге мастер предлагает выбрать, какие из стандартных функций будут использоваться в советнике. Назначение данных функций мы рассмотрим далее в книге. А сейчас можно выбрать любые из них, или же вообще ни одной. В дальнейшем любую стандартную функцию можно будет добавить непосредственно в код советника. Или же удалить ненужные стандартные функции.
Следующий шаг мастера снова позволяет выбрать из нескольких стандартных функций. Все эти функции предназначены для работы в тестере стратегий. И пока что добавлять их нет никакого смысла.
И, наконец, нажав на кнопку Finish, вы увидите окно вашего нового советника в редакторе MetaEditor:
Компиляция советника. С помощью мастера MQL Wizard мы только что создали файл с исходным кодом советника. Однако это пока что всего лишь текстовый файл с расширением .MQ5 (или .MQ4 для MQL4). Его еще нельзя запустить в качестве советника.
Чтобы создать настоящий советник, необходимо скомпилировать его из исходного кода. Для этого достаточно нажать на кнопку Compile на панели инструментов MetaEditor.
При компиляции советника автоматически выполняется сохранение изменений в исходном коде советника.
Если в процессе компиляции в исходном коде советника будут обнаружены какие-либо ошибки, то в нижней области MetaEditor отобразится описание найденных ошибок. При этом компиляция советника будет отменена. В этом случае исправьте найденные ошибки (если кликнуть мышкой по описанию ошибки, то MetaEditor перейдет к той строке в исходном коде советника, на которой эта ошибка была найдена) и снова запустите компиляцию советника.
Если компиляция завершится успешно, то в папке с исходным кодом советника будет создан файл самого советника. Называться он будет точно также, как и файл с исходным кодом советника. Но расширение у него будет .EX5 (.EX4 для MQL4).
Запуск собственного советника. Итак, у нас уже есть собственный советник. Конечно, он пока что ничего не делает, ведь мы никакой логики в его работу не добавляли. Но, тем не менее, при желании его уже можно запустить.
Чтобы запустить скомпилированный советник, достаточно в окне торговой платформы MetaTrader найти боковую панель Navigator. То есть, панель, которая называется точно так же, как и панель с деревом каталогов в MetaEditor. Только, в отличие от MetaEditor, в MetaTrader данная панель содержит ссылки для запуска ваших индикаторов, советников, скриптов, а также ссылки на подключение к вашим торговым счетам.
Если вы не видите панели Navigator в своем терминале MetaTrader, тогда воспользуйтесь пунктом Navigator меню View, чтобы отобразить ее.
В панели Navigator раскройте пункт Expert Advisors, после чего в данном пункте найдите либо сам советник, либо папку, внутри которой вы создали своего советника.
Если вы нашли нужный вам советник, это уже хорошо. Теперь нужно открыть график инструмента, на котором вы хотите запустить свой советник. То есть, график инструмента, по которому советник должен совершать сделки.
Для этого на панели инструментов MetaTrader кликните по иконке Create a new chart. Перед вами отобразится список доступных для работы инструментов (см. рисунок). Кликните по нужному инструменту в данном списке, чтобы открыть его график.
Это не все инструменты, которые поддерживает ваш брокер. А только те, которые добавлены в рабочее пространство (так называемый MarketWatch) по умолчанию или же вами.
Чтобы увидеть все доступные у брокера инструменты, или же добавить нужные вам символы в MarketWatch, используется пункт Symbols меню View, или же комбинация клавиш Ctrl+U.
Чтобы добавить символ в MarketWatch, выберите данный символ из списка и нажмите кнопку Show Symbol. Чтобы добавить сразу все символы, входящие в ту или иную группу, выделите данную группу в дереве объектов, и нажмите ту же кнопку Show Symbol.
Но вернемся к нашим советникам. Чтобы запустить советник в окне какого-либо инструмента, просто выполните одно из этих действий над пунктом с названием нужного вам советника в панели Navigator:
– перетащите пункт в окно графика нужного инструмента;
– дважды кликните по пункту с названием нужного вам советника;
– отобразите контекстное меню пункта нужного вам советника, и кликните по пункту Attach to chart в этом контекстном меню (см. рисунок).
После выполнения одного из этих действий перед вами отобразится диалоговое окно настроек советника. Убедитесь, что на вкладке Common этого окна установлен флажок Allow Automated Trading. Иначе запущенный советник не сможет автоматически открывать позиции.
Также следует убедиться, что в терминале MetaTrader в целом разрешена автоматическая торговля. Если это так, тогда в панели инструментов кнопка AutoTrading будет в нажатом состоянии. В противном случае нажмите на данную кнопку.
Запуск стороннего советника. Если вы нашли где-либо .EX5 или .EX4 файл советника, вы также можете запустить его в своем терминале MetaTrader.
Для этого перенесите файл нового советника (или папку данного советника) внутрь папки Experts. Вопрос о том, как отобразить данную папку в проводнике, мы уже рассматривали ранее.
Если вы не запомнили рассмотренный ранее способ открытия папки Experts с помощью программы MetaEditor, тогда давайте рассмотрим еще один способ. Уже с помощью программы MetaTrader.
Чтобы найти папку Experts на своем компьютере, в меню File программы MetaTrader кликните по пункту Open Data Folder. Перед вам отобразится окно проводника, в котором нужно перейти внутрь папки MQL5 (или MQL4 для MetaTrader 4). Вот и все – среди других вложенных папок вы найдете и папку Experts. Перейдите в нее, и разместите в ней нужный вам советник.
Однако это еще не все. Скорее всего, сразу программа MetaTrader не отобразит новый советник. Чтобы MetaTrader заново проверил все советники внутри папки Experts, и добавил их в панель Navigator, нужно в контекстом меню пункта Experts Advisors панели Navigator выбрать пункт Refresh.
После этого пункт нового советника отобразится в панели Navigator, и вы сможете прикрепить советник к окну графика описанным выше способом.
Закрытие запущенного советника. Как только вы прикрепите советник к графику, он начнет торговать на инструменте, график которого отображен. И продолжит это делать до тех пор, пока вы не закроете советник.
Самый простой способ закрыть запущенный советник – это просто закрыть окно графика, на котором советник запущен.
В MetaTrader 5 помимо данного способа поддерживается еще несколько дополнительных.
Во-первых, вы можете воспользоваться уже знакомой нам панелью Navigator. В данной панели раскройте пункт Accounts. В этом пункте раскройте пункт вашего текущего брокера, а потом пункт вашего текущего счета. Перед вами отобразится список всех запущенных советников. Чтобы закрыть советник, вызовите его контекстное меню, и выберите пункт Remove from <Symbol> (см. рисунок ниже).
Также вы можете воспользоваться названием советника, которое выводится в окне графика, на котором советник запущен. Данное название выводится в правом верхнем углу графика (см. рисунок ниже). Отобразите контекстное меню данного названия советника, после чего выберите пункт Remove.
Разница между MQL4 и MQL5
Изначально разница между версиями языка MQL4 и MQL5 была весьма значительной. Однако со временем в MQL4 стала появляться поддержка функций и возможностей языка MQL5. И теперь если в своей разработке вы используете синтаксис и возможности языка MQL5, то в принципе для вас не составит особой сложности и разработка торгового робота на языке MQL4.
По сути, единственное отличие, которое на данный момент имеется между языками MQL4 и MQL5, состоит в наборе функций для работы с позициями.
Функции открытия, закрытия и доступа к свойствам открытых позиций в MQL4 и MQL5 отличаются. В остальном код на языке MQL5 может практически без каких-либо дополнительных изменений быть скомпилирован и в качестве кода на языке MQL4.
Кроссплатформенная разработка
Благодаря тому, что синтаксис и поддерживаемые языком MQL4 функции со временем стали практически идентичны языку MQL5, стало возможным такое понятие, как кроссплатформенная разработка.
Данный тип разработки не означает, что один и тот же скомпилированный файл советника будет одновременно работать и в MetaTrader 4, и в MetaTrader 5. Под данным понятием я понимаю такой способ написания исходного кода советника, при котором один и тот же исходный код можно без каких-либо изменений скомпилировать в советник как на языке MQL4, так и на языке MQL5.
То есть, несмотря на то, что советник кроссплатформенный, его .EX4 файл (то есть, советник для MetaTrader 4) не будет работать в MetaTrader 5. И чтобы запустить советник в MetaTrader 5, вам нужно будет скомпилировать советник в .EX5 файл.
И наоборот.
Зачем нужны кроссплатформенные советники
Как именно происходит кроссплатформенная разработка, мы рассмотрим далее в этой книге. Но перед этим, возможно, у вас может возникнуть вопрос, зачем вообще она нужна.
В самом деле, если ваш брокер поддерживает только MetaTrader 4, то зачем мучаться и создавать код, который будет работать сразу в нескольких версиях торговой платформы MetaTrader?
Во-первых, торговая платформа MetaTrader 4 все же постепенно устаревает. И пусть сейчас большинство брокеров позволяют работать только с MetaTrader 4, количество брокеров, которые начинают поддерживать и MetaTrader 5 постепенно растет.
Вы должны понимать, что поддержка торговли в определенной версии MetaTrader для брокера – это определенный уровень расходов. И поддержка сразу нескольких версий MetaTrader – это увеличение расходов в несколько раз.
По этой причине со временем брокер может полностью отключить поддержку MetaTrader 4.
И пусть это будет не в ближайшее время. Ведь MetaTrader до сих пор весьма популярен. Но постепенно уровень использования MetaTrader 4 будет снижаться. И когда количество клиентов на MetaTrader 4 у брокера станет незначительным, он вполне может отключить поддержку данной версии торговой платформы.
И что вы будете делать со своим советником на MQL4 в этом случае?
Конечно, вы можете сказать, что вот тогда-то вы его и перенесете на язык MQL5. Но проблема в том, что перенести советник через некоторое время будет куда сложнее, чем сразу создать кроссплатформенную версию. Просто потому что через время вы вообще забудете, как данный советник работает, какие функции за что отвечают, и зачем тут и там нужна та или иная переменная.
Во-вторых, нельзя исключать, что со временем вы захотите сменить брокера. Например, узнаете, что у другого брокера комиссии или своп ниже. И что делать, если окажется, что новый брокер поддерживает только версию торговой платформы MetaTrader 5?
Ну и, кроме того, не исключено, что если ваш советник действительно будет прибыльным, вы захотите продать его на MQL.Маркете. В этом случае если вы будете продавать советник как для MetaTrader 4, так и для MetaTrader 5, уровень продаж у вас будет больше, чем при продаже какой-то одной из версий.
Подводим итоги
Итак, надеюсь, что из этой главы вы получили базовые знания о том, как создавать советники в MetaEditor и как работать с советниками в торговой платформе MetaTrader.
Больше информации о MetaEditor можно почерпнуть из официальной справки по данной среде разработки. Найти данную справку можно по адресу https://www.metatrader5.com/ru/metaeditor/help. Или же кликнув по пункту Help Topics в меню Help программы MetaEditor.
Обучение работе в MetaTrader вообще не входит в план данной книги. Предполагается, что вы уже умеете работать с данным торговым терминалом. Если это не так, тогда узнать о возможностях MetaTrader можно из официальной справки. Данная справка доступна по адресу https://www.metatrader5.com/ru/terminal/help. Или же в меню Help приложения MetaTrader (пункт Help Topics).
Тестирование и оптимизация
Перед тем, как начать разработку своего собственного советника, давайте предположим, что советник у вас уже есть. Что же нам теперь с ним делать? Сразу же размещать его для торговли на реальном счете?
Нет! Ни в коем случае.
Тогда может разместить его на демо-счете, и посмотреть, как он будет торговать?
Это предложение уже лучше. Но тоже нет! Ни в коем случае!
Нельзя допускать советник до торговли на реальном счете до тех пор, пока вы не выполните тестирование его работы на исторических данных!
Это очень важное правило, которое нельзя нарушать, даже если разработчик советника уверяет, что советник зарабатывает горы золотые.
Зачем тестировать советники
Даже если вы абсолютно доверяете разработчику советника, и его обещаниям о баснословных прибылях, вы должны обязательно протестировать советник на исторических данных у своего брокера.
И дело здесь даже не в желании разработчика советника обмануть вас. Ваш брокер может отличаться от брокера, на котором тестировал советник его разработчик. У вас могут быть разные спреды, разные свопы, разные уровни маржи, разные комиссии, да даже сам график инструмента может незначительно отличаться.
Поэтому перед тем, как использовать любой советник, его работу необходимо протестировать на исторических данных, которые предоставляет ваш брокер.
Оптимизация и зачем она нужна
Как правило, любой советник имеет ряд настроек, которые позволяют управлять той логикой, которая заложена в советник. Такие настройки называются внешними параметрами.
Если советник имеет какие-либо настройки, тогда в диалоговом окне, которое отображается при запуске советника, будет вкладка Inputs. В левой колонке этой вкладки вы сможете увидеть название настройки, а в правой – текущее значение данного параметра:
Значение в правой колонке можно изменять по своему усмотрению.
Но как понять, какое значение той или иной настройки лучше всего вам подходит?
Конечно, можно менять значение какого-то из параметров и проводить тестирование на исторических данных. После чего снова менять, и опять проводить тестирование. И так до тех пор, пока вы не найдете самые оптимальные настройки.
Однако данный способ поиска оптимальных настроек займет очень много времени. И по сути малопригоден в реальной жизни.
Тем не менее, мы только что придумали или описали так называемую ручную оптимизацию.
Оптимизация – это поиск оптимальных значений для настроек советника.
Чтобы ускорить процесс оптимизации, можно воспользоваться встроенными в MetaTrader возможностями по оптимизации. В этом случае вам достаточно просто указать диапазон возможных значений, и шаг изменения значения в рамках этого диапазона, для одного или сразу нескольких параметров. После чего запустить процесс оптимизации. И MetaTrader сам проведет множественные тестирования на исторических данных, последовательно перебирая значения настроек в рамках указанных вами диапазонов.
Что вы при этом выигрываете?
Во-первых, вам не нужно будет постоянно изменять значения параметров советника.
Но главное, если ваш процессор имеет несколько ядер или несколько потоков, то MetaTrader 5 будет одновременно запускать сразу несколько тестов. По одному тесту на один поток процессора.
Например, если процессор вашего компьютера имеет 4 ядра, каждое из которых имеет по два потока, то MetaTrader 5 будет запускать 8 тестов одновременно. И процесс оптимизации завершится в 8 раз быстрее, чем если бы тестирование с разными настройках проводилось последовательно.
К сожалению, это относится только к MetaTrader 5. MetaTrader 4 может запускать тесты в рамках оптимизации только на одном из потоков процессора.
Где взять советник
Перед тем как на практике протестировать и выполнить оптимизацию советника, нам необходимо где-то найти этот советник. И чтобы сильно не мудрствовать, давайте просто скачаем один из бесплатных советников, доступных на MQL.Маркете.
MQL.Маркер – это магазин, в котором продаются или раздаются бесплатно тысячи различных советников. Более того, вы абсолютно бесплатно можете разместить там свой советник. Как на бесплатной, так и на платной основе. И за каждую покупку вашего советника вы будете получать 80% от его стоимости.
В Интернет MQL.Маркет доступен по адресу https://www.mql5.com/ru/market. Однако через веб-сайт можно только просмотреть описание каждого из советников. Чтобы купить или скачать бесплатный советник, нужно воспользоваться торговым терминалом MetaTrader.
Тем не менее, искать подходящий советник в MetaTrader – это настоящий кошмар. На веб-сайте вы можете сразу отобразить все бесплатные советники, перейдя на страницу https://www.mql5.com/ru/market/mt5/expert/free. Тогда как в MetaTrader вы можете открыть или все советники или все бесплатные «приложения» на MQL (советники, индикаторы, скрипты, утилиты и т.п.).
Кроме того, на веб-сайте есть фильтр, и вы можете отобразить только советники по типу их работы, советники с отзывами, с хорошим рейтингом, с возможностью аренды, и т.д.
Поэтому для поиска советника лучше всего воспользоваться сайтом. А когда вы уже отобрали подходящий для себя советник, тогда найти страницу этого советника в MetaTrader.
К счастью, в MetaTrader есть поле для поиска советника на MQL.Маркете. И вам останется только выполнить поиск советника по его названию.
Итак, в программе MetaTrader перейдите на вкладку Market панели Toolbox. Данная панель отображается внизу окна программы (см. рисунок выше). И если вы ее не видите, тогда воспользуйтесь пунктом Toolbox меню View, чтобы отобразить панель.
После чего в правой верхней части вкладки Market вы увидите поле для поиска (на скриншоте его нет, так как поле поиска скрывается при ширине экрана менее 970 пикселей). Воспользуйтесь им, чтобы открыть страницу советника.
И дальше вам останется только нажать на кнопку Download, чтобы скачать и сразу разместить в папке Experts понравившийся советник. Если советник платный, то вместо скачивания у вас будет возможность купить советник, скачать демо-версию советника (для оценки его работы в тестере стратегий) или арендовать на месяц и более.
Все советники, которые вы скачиваете с MQL.Маркет, размещаются в папке Market, вложенной в папку Experts.
Далее в этой части книги для тестов и оптимизации мы воспользуемся бесплатным советником CAP Stochastic EA. Его описание доступно на страницах:
– https://www.mql5.com/ru/market/product/42587: для MetaTrader 5;
– https://www.mql5.com/ru/market/product/42585: для MetaTrader 4.
Обратите внимание, даже бесплатные советники, скачанные с MQL.Маркет, могут работать только в том приложении MetaTrader, с помощью которого их скачали. То есть, у вас не получится запустить такой советник на каком-либо другом компьютере.
Тестер стратегий
Итак, для тестирования советников на исторических данных в MetaTrader используется специальный инструмент под названием Тестер стратегий.
И в MetaTrader 4, и в MetaTrader 5 для отображения панели тестера стратегий используется пункт Strategy Tester меню View. В обоих случаях панель тестера стратегий отображается в нижней части окна программы. Однако выглядит она немного по-разному.
В MetaTrader 4 тестер стратегий выглядит следующим образом:
В MetaTrader 5 тестер стратегий выглядит похожим образом:
Выбор советника для тестирования. Основные возможности и принцип использования у тестера стратегий совпадают, независимо от версии MetaTrader.
Чтобы начать тестирование, вы должны выбрать советник, работу которого будете тестировать, а также инструмент, на котором он будет тестироваться (выпадающий список Symbol) и таймфрейм (выпадающий список справа от Symbol).
Если вы собираетесь тестировать советник единожды, то для его выбора можно воспользоваться выпадающим списком Expert.
Если же вы планируете произвести над советником ряд тестов и оптимизаций, то лучше найти советник в панели Navigator, и в его контекстном меню выбрать пункт Test. В этом случае советник станет основным для тестера стратегий.
В случае использования для выбора советника выпадающего списка Expert, после выполнения тестирования выбранный для тестов советник будет изменен на основной.
Таймфрейм – это размерная шкала окна графика инструмента. На графике инструмента выводятся бары, из которых складывается сам график. Длительность одного бара и задается таймфреймом. Например, если таймфрейм равен M15, значит каждый бар на графике консолидирует в себе информацию о цене за прошедшие 15 минут.
Наиболее часто используются следующие таймфреймы:
– M1: 1 минута;
– M5: 5 минут;
– M15: 15 минут;
– H1: 1 час;
– D1: 1 день.
В MetaTrader 5 возможных вариантов задания таймфрейма гораздо больше, чем в MetaTrader 4. Однако если вы собираетесь создавать кроссплатформенные советники, то и тестировать их стоит на тех таймфреймах, которые есть в обоих версиях MetaTrader.
Период тестирования. Также следует убедиться, что установлен подходящий для вас исторический период, на данных которого будет проводиться тестирование.
Для этого в MetaTrader 4 необходимо установить флажок Use date, после чего выбрать дату начала теста, и дату его завершения.
Если данный флажок не устанавливать, тогда тестирование будет проведено на всех исторических данных, которые удалось получить от брокера. В данном случае исторический период в разных тестах на одном и том же инструменте может отличаться. Так как тестер стратегий не всегда может сразу получить все исторические данные. В таком случае при следующем тесте он получит дополнительные сведения и период тестирования будет расширен.
В MetaTrader 5 период тестирования задается выпадающими списками Date.
Далее в книге мы еще вернемся к вопросу, на историческом периоде какой длительности лучше всего проводить тестирование и оптимизацию.
Способ моделирования тиков. Еще одним важным параметром при тестировании и оптимизации советника является способ моделирования тиков. В MetaTrader 4 он задается с помощью выпадающего списка Model, а в MetaTrader 5 – с помощью выпадающего списка Modeling.
С одной стороны способ моделирования тиков влияет на точность тестирования, а с другой стороны – на скорость. Естественно, чем точнее будет тестирование, тем медленнее оно будет проходить.
В MetaTrader 4 возможны следующие способы моделирования:
– Every tick: тестирование проходит на тиках, которые генерируются тестером стратегий на основе данных минутного таймфрейма;
– Control points: тестирование проходит по четырем ценам баров минутного таймфрейма (ценам открытия, закрытия, максимальной цене и минимальной цене бара);
– Open prices only: тестирование проходит только по ценам открытия баров.
MetaTrader 5 также имеет перечисленные способы моделирования. Только они не всегда называются аналогично:
– Every tick: тут названия аналогичны;
– 1 minute OHLC: аналог Control points;
– Open prices only: также аналогичное название.
Помимо перечисленных способов моделирования MetaTrader 5 поддерживает новый способ: Every tick based on real ticks. В данном режиме тестирование проводится на каждом тике исторических данных. Причем, это реальные тики, предоставленные брокером. Помимо этого, также в этом режиме используется максимально приближенный к реальности спред. То есть, в этом режиме спред в течение минутного бара может изменяться. Тогда как в остальных режимах спред в рамках минутного бара всегда постоянен.
Таким образом, режим Every tick based on real ticks является максимально приближенным к реальности.
Исторические данные у разных брокеров итак могут отличаться от реальных в той или иной степени. Так что снижать качество тестирования намеренно, если вы тестируете советник не для того, чтобы показать, какие у него прекрасные результаты, не стоит.
Поэтому, несмотря на то, что при способе моделирования каждого тика на основе реальных данных скорость тестирования самая медленная, лучше всего проводить тестирование и оптимизацию именно с помощью данного способа моделирования.
Если же в этом случае провести тестирование и оптимизацию не удается (это занимает неприемлемо много времени; либо процесс тестирования вообще завершается ошибкой нехватки памяти; либо вы тестируете в MetaTrader 4), тогда лучше использовать режим моделирования Every tick.
Размер депозита и кредитное плечо. Также для тестирования советника вы должны указать стартовый размер депозита, используемый при тестировании, а также размер кредитного плеча (только в MetaTrader 5).
В MetaTrader 5 это делается с помощью выпадающих списков Deposit.
В MetaTrader 4 можно задать только стартовый депозит. Для этого нужно нажать на кнопку Expert properties, в появившемся диалоговом окне перейти на вкладку Testing, и воспользоваться выпадающим списком Initial deposit.
Как размер депозита, так и кредитное плечо необходимо выбирать таким образом, чтобы они были максимально приближены к вашей реальности.
То есть, если ваш брокер предоставляет плечо 1:100, то и при тестировании плечо должно быть 1:100.
Что касается тестового депозита, то он должен быть аналогичен балансу вашего реального счета. То есть, если на реальном счете вы собираетесь торговать на 1 000 долларов, то и тестировать нужно на начальном депозите не более 1 000 долларов.
Если вы будете тестировать на стартовом депозите, скажем, в 10 000 долларов, а торговать на 1 000 долларов, то в реальности можете столкнуться с несколькими неприятными ситуациями.
Во-первых, на счете может возникнуть огромная просадка, которую ваш маленький депозит просто не сможет выдержать. Тогда как на тестировании аналогичная просадка будет незаметна, ведь стартовый депозит гораздо больше. В этом случае вы просто потеряете весь свой депозит.
Во-вторых, может оказаться, что у вас не хватает маржи для открытия новых позиций. При тестировании сумма стартового депозита изначально была больше, и маржи было достаточно для корректной работы торговой системы. А при вашем текущем депозите наступит момент, когда вы больше не сможете открывать новые позиции в соответствии с сигналами вашей торговой системы, так как маржи будет недостаточно. В этом случае результаты вашей торговли могут оказаться отличными от тех, которые ожидались по результатам тестирования.
Задержка в исполнении. В MetaTrader 5 появилась еще одна интересная настройка: Delays. С ее помощью можно выполнить еще более реалистичное тестирование, чем ранее.
По умолчанию никаких задержек при тестировании нет. Однако с помощью данного выпадающего списка вы можете указать любую задержку в миллисекундах, или же вообще выбрать режим случайной задержки.
Задержка в N миллисекунд означает, что позиция будет открываться не по текущим ценам, а по ценам, которые будут на актив через N миллисекунд.
Данная настройка позволяет эмулировать следующие ситуации.
Когда вы посылаете своему брокеру ордер об открытии новой позиции, сама позиция открывается не моментально, а через некоторое время. Данное время может зависеть от загруженности мощностей брокера, пинга до сервера брокера, качества вашего брокера.
Если вы хотите купить актив по рыночной цене, то подача ордера на его покупку по цене, которую вы видите в торговом терминале, не означает, что именно по такой цене актив будет куплен.
Может оказаться, что по такой же цене хотят купить другие трейдеры, пославшие свой ордер в то же самое время что и вы. Если размер позиции, которую хотят купить другие трейдеры, выше чем ваш, то их заявки на покупку будут выполнены раньше вашей.
Таким образом, когда очередь дойдет до вашей заявки, может оказаться, что продавцов по вашей цене уже нет. А есть продавцы по более невыгодной для вас цене (или, в редких случаях, по более выгодной). Такая ситуация называется проскальзыванием. Если при отправке ордера на открытие позиции вы указали, что проскальзывание в определенном размере для вас вполне приемлемо, тогда актив будет куплен по этой, новой цене.
Использовать при тестировании задержку или нет, решать вам. Если вы заметили, что у вашего брокера открытие позиций в основном выполняется не моментально, тогда можно указать более менее реалистичную задержку именно для вашего брокера.
Что касается случайной задержки, то следует учитывать, что в этом случае результаты двух тестирований с аналогичными настройками могут отличаться друг от друга. Что, возможно, не самый лучший вариант при сборе статистических данных.
Внешние параметры. Большинство советников имеют набор параметров, значения которых можно изменить при запуске советника.
Перед запуском тестирования их также можно задать (иначе будут использоваться значения по умолчанию).
Для этого в MetaTrader 4 нужно нажать на кнопку Expert Properties, после чего перейти на вкладку Inputs появившегося окна.
В MetaTrader 5 входящие параметры задаются на отдельной вкладке Inputs тестера стратегий:
В таблице дважды кликните по ячейке столбца Value, после чего вы сможете изменить значение выбранного параметра.
Запуск тестирования. И, наконец, после настройки всех параметров, вы можете запустить процесс тестирования. Для этого достаточно нажать на кнопку Start.
После этого тестирование начнется, и будет продолжаться некоторое время. Длительность тестирования зависит от размера исторического периода, выбранного способа моделирования, а также сложности вычислений, которые выполняет советник при работе.
В конце концов, тестирование закончится, и перед вами отобразятся результаты тестирования.
Работа с результатами тестирования
Одно дело выполнить тестирование, а другое понять по результатам тестирования, насколько прибылен ваш советник.
Ранее в книге мы скачивали бесплатный советник CAP Stochastic EA. Давайте же попробуем протестировать его работу, и посмотрим на результаты этого тестирования.
В качестве периода тестирования пусть будет диапазон с 2017.01.01 по 2019.01.01.
Настройки советника оставим по умолчанию. Мы же не создавали этот советник. Поэтому пока что не знаем, какие значения лучше подходят для конкретных его настроек.
Тестировать будем в MetaTrader 5, так как его тестер стратегий более качественный. Поскольку мы выполняем тестирование только для ознакомления, давайте воспользуемся режимом моделирования Every tick. Инструмент EURUSD, таймфрейм M5, лот 0.01:
График баланса. И первое, на что следует обратить внимание – это график нашего виртуального баланса (см. рисунок выше). Он доступен на вкладке Graph панели тестера стратегий.
Толстая линия показывает изменение баланса счета в течение всего периода тестирования. Баланс по счету изменяется только в том случае, если вы закрываете открытую ранее позицию.
Тонкая линия показывает изменение equity по счету. То есть, она показывает не зафиксированную прибыль или убыток, которые были в это время на счете из-за открытых позиций.
При построении тонкой линии, если открытые позиции приносят прибыль, то данная прибыль суммируется с текущим балансом, и результат выводится в виде точки линии equity. Если же открытые в данный момент позиции приносят убыток, то этот убыток вычитается из текущего баланса, и результат также фиксируется в качестве линии equity.
Ну, чуда не случилось, и бесплатный советник с настройками по умолчанию не смог показать нам хоть какую-либо прибыль. Но я надеюсь, что вы не питали на его счет особых надежд. Он нам необходим только для обучения работе с тестером стратегий.
Открытие и закрытие позиций на графике. Также после выполнения тестирования перед вами откроется новое окно графика инструмента, на котором выполнялось тестирование:
В данном окне вы можете увидеть, когда советник открывал позицию, и когда данная позиция была закрыта. Также в окне графика будут запущены все индикаторы, которые советник использовал для торговли.
Статистические данные. График баланса необходим лишь для поверхностного ознакомления с результатами тестирования.
Если график баланса идет вверх, то хорошо. Если график баланса идет вверх плавно, то вообще замечательно.
Ну а если график падающий, то дальше результаты тестирования можно не изучать.
Визуальное отображение точек открытия и закрытия позиций также позволяет лишь поверхностно сказать, работает ли советник так, как вы или его автор задумывали.
А вот для более подробного изучения качества торговли советника используется вкладка Backtest. На данной вкладке собрано очень много информации. И сейчас мы попробуем разобраться в ней.
Самые важные сведения приводятся в таблице, которую вы можете увидеть на данном рисунке:
Давайте рассмотрим наиболее полезные данные из этой таблицы:
– History Quality (качество истории). Позволяет определить качество исторических данных, которые были получены от брокера. Чем меньше в исторических данных пропущенных и некорректных (с нулевым спредом или единичным объемом) баров, тем они качественнее. И, естественно, тем достовернее результаты тестирования.
Справа от данного параметра можно видеть графический индикатор. На нем цветом отображаются участки в истории, данные на которых плохого качества. Если цвет отрезка красный, значит данные на нем некачественные. И чем светлее оттенок зеленого, тем качественнее данные.
– Total Net Profit (чистая прибыль). Отображает общую прибыль (или убыток), полученную в результате тестирования.
– Balance Drawdown Maximal (максимальная просадка баланса) и Equity Drawdown Maximal (максимальная просадка средств). Максимальная просадка, которая была в течение тестируемого периода по балансу и, соответственно, по equity.
На какой из параметров следует смотреть, зависит от логики работы тестируемого советника. Но вообще, значение какого параметра больше, тот и следует использовать для дальнейшего определения необходимого для торговли минимального депозита и начального лота советника.
– Profit Factor (прибыльность). Отношение общей прибыли, полученной советником, к общему убытку. Если значение данного параметра положительное, значит в результате тестирования советник получил прибыль (Total Net Profit). И чем больше значение данного параметра, тем лучше.
– Recovery Factor (фактор восстановления). Отношение максимальной просадки (Equity Drawdown Maximum) к прибыли, полученной советником в результате торговли (Total Net Profit). Если значение данного параметра отрицательное, значит в результате торговли советник получил убыток.
Чем больше значение данного параметра, тем лучше. Однако также значение данного параметра следует сопоставлять и с длительностью периода, на котором проходило тестирование.
Например, если на тестируемом периоде в 1 год фактор восстановления равен 3, то это весьма неплохо. Это значит, что при максимальной просадке в X была получена прибыль в 3X.
Если же фактор восстановления 3 был получен на тестируемом периоде в 10 лет, то это весьма посредственный результат. Так как это значит, что каждый год советник давал прибыль в размер 0.3 от максимальной просадки. То есть, 30% прироста при максимально возможной просадке в 100%. А так как большинство инвесторов согласны на максимальную просадку максимум в 20%, то при максимальной просадке в 20% прибыль была бы 6% в год.
– Margin Level (уровень маржи). Максимальный уровень маржи в процентах, который был зафиксирован по счету в процессе тестирования. Значение данного параметра имеет смысл, если вы тестируете советник на таком же размере депозита, на котором вы собираетесь запускать его в реальной торговле. В противном случае смотреть на данный параметр нет никакого смысла.
– Z-Score (z-счет). Данный показатель определяет вероятность того, что за прибыльной сделкой будет еще одна прибыльная сделка, и наоборот.
Например, с практической точки зрения, если значение данного параметра больше 3, значит с вероятностью 99.67 % за выигрышной сделкой будет проигрышная.
Если же значение данного параметра меньше -3, то с вероятностью 99.67 % за прибыльной сделкой будет еще одна прибыльная сделка.
– Expected Payoff (матожидание выигрыша). Отображает среднюю прибыль от каждой сделки. То есть, примерную прибыль, которую можно ожидать от следующей закрытой позиции.
– Sharp Ratio (коэффициент Шарпа). Используется для определения эффективности и стабильности стратегии, которой торгует советник.
– Total Trades (всего трейдов). Общее количество трейдов, которые совершил советник за тестируемый период. Считается, что если общее количество трейдов меньше 100, то полученной статистике доверять не стоит. Так как существует большая вероятность, что полученные результаты случайны.
– Profit Trades (% of total) (прибыльные трейды). Процент прибыльных трейдов из общего количества трейдов. Может использоваться для определения, каким образом советник получает прибыль (получает преимущество над рынком).