Зачем автоматизировать вашу стратегию?

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

Зачем автоматизируют свои торговые стратегии?

Зачем автоматизировать свою тс

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

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

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

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

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

Разработка торговой системы

Разработка торговой стратегии

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

А далее, в двух словах алгоритм таков:

  1. Четко сформулируйте торговую идею. Как я уже говорил, источник вдохновения может быть любой. Но есть два минимальных требования, которые должны быть рассмотрены в вашей идее – точка входа в рынок (правило или несколько правил) и точка выхода из него (так же). Стратегия может состоять даже из совершенно разных условий на покупку и на продажу, в ней может быть несколько вариантов правил входа или выхода. Единственное правило – должны быть рассмотрены и входы, и выходы. Также торговая стратегия содержит правила управления капиталом, прибылью и убытком. Управление капиталом можно разработать позже, а управление прибылью и убытками относятся к правилам входа.
  2. Подберите наилучшие для ее реализации инструменты. Решите, какие – индикаторы, ценовые модели, какие-то данные с сайтов в сети или что-то еще. Правила должны быть четкими и не подразумевать вариантов. Пример четких правил – выставить селлстоп ордер на открытии новой свечи ниже нижней тени предыдущей свечи на 5 пунктов, если предыдущая свеча пробивала скользящую среднюю EMA55, но закрылась ниже нее, при этом цена не закрывалась выше EMA55 последние 10 свечей, а EMA55 на предыдущей свече ниже, чем 20 свечей назад. Пример нечетких правил – входим в продажи, если стохастик в перекупленности, а EMA55 падает.
  3. Напишите ее правила в виде алгоритма. Алгоритм будущего советника поможет вам не запутаться во всех логических завихрениях его работы и поможет вам создать стройный и логичный код. Для этого хорошо подходят программы для построения блок-схем, такие как yED от yworks.com. Также подойдут программы для составления mind-map’ов, например Xmind или Freemind.
  4. Напишите по алгоритму своего советника. По возможности постарайтесь оптимизировать ваш код, чтобы тестирование и оптимизация проходили как можно быстрее. В написании поможет наш курс «MQL программирование«.
  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 и пытаются автоматизировать свои торговые системы. Также вы теперь знаете, какие шаги нужно предпринять, чтобы изготовить и запустить советник, торгующий по вашей системе и понимаете, с какими рисками вы можете столкнуться в процессе торговли. Алготрейдинг – очень увлекательный процесс, и чем больше у вас будет получаться, тем больше будет желание изобретать новые системы, тестировать их и запускать на реальных счетах. В конце концов я на каждый новый советник смотрю как на еще одного трейдера, торгующего лично для меня. Желаю и вам сотню таких трейдеров, постепенно увеличивающих ваш капитал.

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

vkontakte

В помощь Трейдеру , , ,
  • Kate Pa

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

    • Stas

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

    • dmdforex

      За роботами реально будущее ! Робот дает именно ту свободу за которой и приходят на форекс !

  • ademus

    Уважаемый Дмитрий аkа Silentspec, возможно приобрести у вас совушку?

  • ааа

    А мне табуретка, на которой кот сидит,
    очень понравилась, и всё. )

    • Stas

      Кот торговал советниками и теперь имеет право 🙂 Только судя по выражению морды — скорее всего чужими, свой врядли напишет 🙂

      • aaa

        Мне кажется, что кот успешно торгует ПА,
        с, обратите внимание, правильным ММ. ))

    • ааа

      Семьдесят девять упаковок

  • ForexLike

    Благодарю за интересный пост. У меня просьба к команде TRADELIKEAPRO сделать отдельный раздел «Тестирование», (либо «Тестирование стратегий»), чтобы не рыскать по всему сайту в поисках техник/софта/сайтов, тем или иным способам связанных с тестированием стратегий.

    • ForexLike

      Чуть не забыл.
      К этому меня подтолкнул момент, когда название поста/ов было каким-либо абстрактно связано с тестированием,и приходилось лезть внутри, чтобы понять то, что ищешь.

      Благодарю за понимание и надеюсь юзабилити от этого только выиграет.

  • ForexLike

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

  • Илья Савушкин

    хотелось бы более подробно про бэк-тесты и форвард-тесты

  • Максим

    Паша , а такую дискретную и обширную методику как ПА возможно ли поставить на железяку ?

    • Попытки были, но удачных не припомню

      • KindGottes

        Уважаемый Павел, посоветуйте хороший VPS — Сервер, который можно оплачивать через ПэйПал. Спасибо Заранее!

  • hemul

    все супер конечно но как написать алгоритм ? в этом вся проблема. может кто поможет? плизз

  • Асылбек

    Здравствуйте, не могли бы вы на следующем уроке рассказать про индикатор Market Way

  • vld

    послушал. со всем уважением к Дмитрию, как к профу в этом деле, но я бы назвал эту стать «как бы я хотел что бы у меня было». пока что его ПАММ супер результатов не показывает, но держится в плюсе. успехов Дмитрию!

    • Silentspec

      Да, отчасти вы правы, конечно. Но хочу заметить, что на памме трудятся старые советники со старыми алгоритмами. В настоящее время все они значительно улучшены и проходят период тестов в реальном времени.

      • vld

        счет закрыл? зачем? в плюсе же. что дальше? будет новый?

      • Silentspec

        Да, счет закрыл, будет новый, с новыми ботами, в которых учтены все предыдущие недоработки.

  • Linken

    Спасибо за обзор.. Каждый раз когда смотрю обзоры относительно советников и mql хочется изучить его.. но проблема со временем… Сколько потребуется времени человеку, который знает только pascal и html на базовых базовом уровне.. для освоения mql для написания не слишком мудреных советников?)

    • Silentspec

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

  • dmdforex

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

    • ааа

      Конечно, если бы Вы торговали «руками», под «фирменной защитой» ,
      скромно предположил бы «одна сделка = один счёт, на счету маржа + SL», а так как это не так тогда и не пойму как так. )

      • dmdforex

        «Фирменная защита» стала возможна только благодаря роботу,он «видит благодаря заложенному алгоритму» что цена собирается развернуться и закрывает ордер в +, если руками то там только классический SL 🙁 Хотя суть этой темы — призыв автоматизировать свою стратегию! И я с Павлом согласен ! Терминал реально забирает здоровье ! Нервы трепет ! С роботом такого нет !