Чтобы преуспевать на рынке форекс, трейдеру необходима торговая система с четкими правилами, фильтрами, ограничениями. При этом, довольно часто вполне прибыльные торговые стратегии имеют всего несколько основных правил, которые можно записать в виде алгоритма. Такие системы часто называют механическими и именно их так любят перекладывать в программный код алготрейдеры. Сегодня я поделюсь алгоритмом, как же разработать своего торгового робота.
Зачем автоматизируют свои торговые стратегии?
Первая причина – проверка на исторических данных. В принципе, все логично. У вас есть своя торговая стратегия, которая в данный момент приносит вам прибыль, но вы хотите знать, как она работала в прошлом и будет ли работать в будущем. Даже если вы не собираетесь устанавливать робота вместо себя, это знание принесет вам дополнительную уверенность, особенно в периоды затяжных просадок.
Вторая причина – подбор оптимального мани-менеджмента и количественная оценка эффективности системы. Даже если ваша стратегия работает и приносит прибыль, без тестирования довольно трудно сказать, какие риски и способы управления ими будут для нее оптимальны. Тестирование системы на исторических данных дает такую полезную информацию, как максимальные просадки, минимальные и максимальные прибыли на том или ином временном отрезке. Также тестирование позволяет сравнить несколько торговых систем между собой.
Третья причина – объективность. При торговле на реальных счетах на трейдера сваливается огромный груз в виде эмоций и ему приходится бороться с ним. Подчас трейдер с хорошей прибыльной торговой системой не может заработать деньги, потому что не может совладать со своими эмоциями. Автоматизация торговли решает этот вопрос довольно легко.
Четвертая причина – согласованность. Тестирование торговой системы дает знание всех деталей и факторов, влияющих на систему, ее сильных и слабых сторон. Когда на каждую сделку установлен риск, есть четкие правила входа и выхода, действовать гораздо проще. Также вы получите знание того, как нужно действовать в той или иной ситуации, более гибко подстраивать свою тс и торговые риски под текущую рыночную ситуацию.
Пятая причина – свобода. Большинство людей приходят на форекс как раз именно за этим. Они хотят получать достаточно денег, чтобы не работать пятидневку по восемь часов в день и при этом не быть ограниченными в финансах. Такую возможность как раз и дают автоматизированные торговые системы. Автор советника будет думать над его кодом всего лишь единожды, а прибыль от его работы получать годы. Конечно, написание советника дело не минутное, подчас оно занимает несколько недель, а то и месяцев. Кроме того, время от времени автору приходится корректировать его работу, перенастраивая параметры советника под текущую рыночную ситуацию или вносить мелкие изменения в код. И все же это уже далеко не работа в привычном понимании этого слова, – вы не привязаны к конкретному рабочему месту и по времени не ограничены.
Разработка торговой системы
Написание любого торгового советника начинается с какой-либо идеи. Это может быть готовая стратегия, найденная на каком либо сайте или вычитанная где-то на форекс форуме, или же просто абстрактная идея, пришедшая вам в голову во время перекура на балконе вашего пентхауса. Не важно, как она пришла вам в голову, важно то, что вы с ней будете делать дальше.
А далее, в двух словах алгоритм таков:
1. Четко сформулируйте торговую идею. Как я уже говорил, источник вдохновения может быть любой. Но есть два минимальных требования, которые должны быть рассмотрены в вашей идее – точка входа в рынок (правило или несколько правил) и точка выхода из него (так же). Стратегия может состоять даже из совершенно разных условий на покупку и на продажу, в ней может быть несколько вариантов правил входа или выхода. Единственное правило – должны быть рассмотрены и входы, и выходы. Также торговая стратегия содержит правила управления капиталом, прибылью и убытком. Управление капиталом можно разработать позже, а управление прибылью и убытками относятся к правилам входа.
2. Подберите наилучшие для ее реализации инструменты. Решите, какие – индикаторы, ценовые модели, какие-то данные с сайтов в сети или что-то еще. Правила должны быть четкими и не подразумевать вариантов. Пример четких правил – выставить селлстоп ордер на открытии новой свечи ниже нижней тени предыдущей свечи на 5 пунктов, если предыдущая свеча пробивала скользящую среднюю EMA55, но закрылась ниже нее, при этом цена не закрывалась выше EMA55 последние 10 свечей, а EMA55 на предыдущей свече ниже, чем 20 свечей назад. Пример нечетких правил – входим в продажи, если стохастик в перекупленности, а EMA55 падает.
3. Напишите ее правила в виде алгоритма. Алгоритм будущего советника поможет вам не запутаться во всех логических завихрениях его работы и поможет вам создать стройный и логичный код. Для этого хорошо подходят программы для построения блок-схем, такие как yED от yworks.com. Также подойдут программы для составления mind-map’ов, например Xmind или Freemind.
4. Напишите по алгоритму своего советника. По возможности постарайтесь оптимизировать ваш код, чтобы тестирование и оптимизация проходили как можно быстрее.
5. Тестируйте и оптимизируйте ваш советник. Проверьте журнал на наличие ошибок. Коды ошибок указаны в журнале, а их описание можно посмотреть на сайте mql4.com. Также рекомендую обзавестись специальной функцией – обработчиком ошибок, прежде чем ставить советник на реальный счет. Ну или хотя бы добавьте функцию с описанием ошибок на русском языке, чтобы в журнале при появлении ошибки было помимо ее кода еще и описание – это сэкономит ваше время. Подберите оптимальный таймфрейм для работы советника и оптимизируйте на максимально большом количестве пар.
6. Ставьте ваш новый советник на демо-счет. Ежедневно просматривайте журнал терминала на наличие ошибок. Некоторые из них могли не проявиться на стадии тестирования. Также вы увидите реальную работу вашего советника и сможете примерно оценить его эффективность без потери реальных денег.
7. Устанавливайте советник на небольшой реальный счет. После получения достаточного количества для анализа данных, проведите анализ эффективности работы советника, сравните с результатами, полученными при тестировании и тестах на демо-счете. Обращать внимание при оценке стоит на такие параметры, как частота и продолжительность сделок, максимальная просадка по счету, максимальные прибыли на одну сделку, размер и длительность средней проигрышной и выигрышной сделки, общее число сделок, отношение убыточных к прибыльным, количество выигрышных и проигрышных сделок подряд и их величина.
8. Периодически отслеживайте и координируйте работу советника, вносите изменения в код, если это необходимо или у вас появились идеи по улучшению его работы (после тестирования, конечно).
Успех каждого последующего шага зависит от предыдущего. Если на каком-то из них была допущена ошибка или просчет, придется начинать сначала. Именно поэтому нужно очень внимательно относиться к тому, что вы делаете.
Допустим, при тестировании в реальном времени вы получили убытки, превышающие максимальные при тестировании на исторических данных. Не стоит сразу снимать советник и списывать его со счетов. Данному событию могут служить три причины: система слаба и идея ошибочна, система хорошая, но оптимизация проведена криво, возникли исключительно неблагоприятные условия, которых не встречалось на исторических данных. Как видите, две причины из трех говорят о том, что советник удалять рано. Если оптимизация была проведена неверно, просто проведите ее еще раз. Если виной убыткам служит рынок, что несложно проверить, открыв графики, стоит просто переждать неблагоприятный период и продолжить тесты. Ну а первый вариант не лечится.
Управление риском
В общем случае, управление риском позволяет ограничить величину капитала, который может быть потерян в результате сделки или серии сделок или вообще при торговле советником.
Риск на вход в позицию
Риск на вход в позицию может быть ограничен определенной суммой денег или процентом от депозита. Соответственно, при входе в позицию устанавливается стоплосс, который и ограничивает максимальные убытки позиции.
Овернайтовый риск
В отношении форекс – это риск при переносе позиции через выходные. Этот риск ничем ограничен быть не может, в результате возникновения гэпа (разрыва в котировках между значениями цены на закрытии в пятницу и на открытии в понедельник) трейдер может понести существенные потери, которые не могут быть ограничены обычным стоп-лоссом – цена запросто может перепрыгнуть уровень вашего стоп-лосса, унеся с собой значительную часть вашего капитала. Единственный вариант, который возможен для контроля этого риска – решать, оставлять ли позицию на выходные, и, если оставлять, то всю, или часть.
Торговый риск
Это та минимальная величина капитала, которая подвергается риску в долгосрочной перспективе во время торговли по ТС. Измеряется он несколькими различными способами и вот основные три: максимальная серия проигрышей (величина потерь от серии проигрышных сделок подряд в валюте депозита), максимальная просадка (наибольшая просадка счета от предыдущего максимума до текущего минимума) и требуемый капитал (сумма максимальной просадки, маржи, запаса и прочего, необходимого для торговли по стратегии).
Неторговый риск
Довольно недавно все мы были свидетелями того, как легко и быстро могут исчезнуть с рынка множество брокерских контор. По большому счету никто из нас не застрахован от возможности отнести свои денежки недобросовестному брокеру или брокеру на пороге разорения. Поэтому мой вам совет – всегда относитесь к выбору брокера серьезно. В наше время любую информацию можно найти, не вставая из-за любимого компьютера. Пробейте брокера, которому собираетесь доверить свои деньги, хватит пополнять ряды лохов – их и так много!
Выбор периода, отрезка для теста
Отрезок исторических данных, выделенный для тестирования советника, называется тестовым окном. При определении размера этого окна необходимо достичь статистической представительности результата теста и охватить периоды, подходящие для тестируемой торговой системы и неподходящие. Нам нужны достоверные статистически результаты, то есть количество сделок должно быть достаточно большим.
В общем случае статистически значимым считается результат как минимум ста сделок. Если хотите более научный подход – вот вам очень простая формула определения стандартной ошибки: 1/sqrt(N+1), где N – количество сделок. Судя по формуле, чем больше количество сделок, тем меньше стандартная ошибка. Эта ошибка говорит о степени точности полученных результатов. В приведенной выше рекомендации (не менее 100 сделок) стандартная ошибка составит примерно 10%.
Для чего нужна эта цифра? Очень просто – берем к примеру средний выигрыш по результату теста, например, 1000$. Тогда в реальной торговле стоит ожидать показание среднего выигрыша после такого же количества сделок (100) в пределах +- 10%, то есть от 900 до 1100$. В случае, если бы мы удовлетворились десятью сделками при тесте, стоило бы при реальной торговле ожидать среднюю прибыль от сделки в пределах +-30%, то есть от 700 до 1300$. Как видите, приемлемая точность достигается как раз при 100 сделках.
Стабильность системы
Стабильность системы – не что иное, как устойчивость торговли по ней. Чем система более устойчива, тем она более стабильна, и, следовательно, более надежна. Смотреть при тесте нужно на соотношение прибыльных сделок к убыточным и на (самое главное) стандартное отклонение величины и продолжительности прибыльных и убыточных сделок. Чем меньше стандартные отклонения этих величин, тем устойчивей система, тем более гладкий график доходности получается.
Чем отклонения больше, тем более нестабильный и «прыгающий» график доходности у системы. Устойчивая система должна давать прибыль в широком диапазоне переменных, на широком диапазоне рынков и рыночных условий. Иными словами, если система работает только на одной валютной паре, такая система неустойчива.
Срок годности системы
Не секрет, что после выхода в продажу, скальпирующие роботы довольно быстро перестают работать в профит и создатели начинают выпускать новые сет-файлы с настройками для своих детищ. Сейчас я имею ввиду ответственных продавцов, а не шарлатанов, продающих различный мусор. Это происходит оттого, что рынки со временем меняются и старые настройки роботов перестают быть эффективными.
Кроме того, чем меньше тестовое окно, тем короче срок годности системы. Я стремлюсь создавать роботов максимально устойчивых и с неограниченным сроком годности, но таких систем, которые могут работать года без подгонки под рынок крайне мало.
Отсюда еще один критерий робота при тестировании – срок годности. Система, требующая оптимизации каждые три месяца, безусловно, не самая удобная в эксплуатации, но имеет право на жизнь. Эмпирическое правило таково – система должна быть стабильной на промежутке от 1/8 до ¼ от тестового окна – это минимум. То есть если вы для оптимизации использовали 24 месяца, система должна быть эффективной в течении как минимум следующих 3-6 месяцев.
Срок годности системы необходимо запомнить и проводить оптимизацию по его окончании (лучше немного заранее). Чем больше тестовое окно, тем больше срок годности системы, тем реже нужно проводить оптимизацию, тем более устойчива система и более стабильно ее поведение при изменении рыночных условий. Тем не менее, чем окно меньше, тем большей эффективности и, соответственно, прибыли можно добиться от торговой системы, но тем более чувствительной она будет к изменению рынка. Иными словами, система, например, будет приносить очень хорошую прибыль, пока длится глобальный тренд, но как только он споткнется, система все сольет (если вы конечно не успеете ее оптимизировать).
Теперь, надеюсь, вы стали лучше понимать, зачем трейдеры учат язык mql и пытаются автоматизировать свои торговые системы. Также вы теперь знаете, какие шаги нужно предпринять, чтобы изготовить и запустить советник, торгующий по вашей системе и понимаете, с какими рисками вы можете столкнуться в процессе торговли. Алготрейдинг – очень увлекательный процесс, и чем больше у вас будет получаться, тем больше будет желание изобретать новые системы, тестировать их и запускать на реальных счетах. В конце концов я на каждый новый советник смотрю как на еще одного трейдера, торгующего лично для меня. Желаю и вам сотню таких трейдеров, постепенно увеличивающих ваш капитал.