КАК НАПИСАТЬ СВОЙ АЛГОРИТМ ТОРГОВЛИ

Лучший Форекс брокер 2020 года:
  • FinMaxFx
    FinMaxFx

    Лучший Форекс брокер этого года!
    Бесплатное обучение и демо-счет!
    Бонусы за регистрацию!

СОДЕРЖАНИЕ:


Торговый алгоритм: как стать хладнокровным и уверенным трейдером?

Козырной туз

Рассказывая о роботах для автоматической торговли на Форекс и рынках FORTS, нельзя забывать о том, что большинство механизмов в своей автоматической торговли опираются на некоторые алгоритмы.

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

Чертеж работы

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

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

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

Использовать алгоритм

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

В зависимости от выбираемого географического фондового рынка, трейдеры ориентируются на время суток, когда начинается их рабочий день. Живущие в европейской части России трейдеры, ориентирующиеся на Московскую Биржу, начинаются официальную работу с 9 – 10 часов утра и продолжают до 6 – 7 часов вечера. А вот те, кто живет в других поясах, или предпочитает Северо-Американские рынки, могут и вовсе перейти на ночной образ жизни, ведь Нью-Йорк стартует примерно в 9 – 10 часов вечера, соответственно пики торгов могут пройти в 3 часа ночи или еще позже.

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

Лучший Форекс брокер 2020 года:
  • FinMaxFx
    FinMaxFx

    Лучший Форекс брокер этого года!
    Бесплатное обучение и демо-счет!
    Бонусы за регистрацию!

Опоры и точки

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

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

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

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

Моменты алгоритма

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

Многие опытные трейдеры начинаются свой день с анализа предыдущего. Так, например, известный трейдер и лектор Александр Герчик стартует в 2 часа ночи и первые часы занимается аналитикой прошедшего дня.

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

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

Чек – лист хорошего алгоритма

Перед тем, как произвести внедрение своего алгоритма в свой рабочий день, проверьте его на соответствие данным характеристикам:

  • Грамотно и точно прописаны ваши текущие цели и долгосрочные задачи. Четко определитесь, за счет чего вами будут зарабатываться деньги. Какие конкурентные преимущества у вас, как у торговца, есть перед рынком?
  • С максимальной детализацией расписан распорядок дня. Когда старт деятельности, когда отбор инструментов, когда перерыв, выходной день. Указываются объемы торгов, в денежном эквиваленте, либо в ценных бумагах. Прописываются оперативные ситуации, при которых вы вовсе выходите из торговли и на какой период.
  • Вами прописаны ваши правила мани – менеджмента. Вы точно указали сумму депозита, счета, комиссионные издержки, количество позиций и их денежное выражение. Имеется процентное соотношение, либо выраженное реальными суммами с учетом текущего курса.
  • Конечно же, расписана ваша торговая стратегия. Сюда вы включаете индикаторы, которыми будете пользоваться, правила взаимодействия с ними. Вы создаете для себя образ идеальной точки входа и выхода, хорошей точки, средней и нежелательной. Ориентируясь на эту визуализацию, вы рассчитываете денежное выражение контракта и вашей позиции.

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

КАК НАПИСАТЬ СВОЙ АЛГОРИТМ ТОРГОВЛИ?

Как написать свой алгоритм торговли?

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

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

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

Итак, начнем с того, какие пункты должны быть прописаны в вашем торговом алгоритме :

  1. В первую очередь вы должны описать ваш рабочий день. Рабочий день – начинается с просмотра новостей, которые нас ждут в предстоящей торговой сессии. В соответствии со своим стилем торговли, определите, будете ли вы торговать во время выхода, тех или иных новостей, или же подтянем уровни StopLoss, и будем ждать более благоприятного времени для торговли.
  2. Не менее важным критерием подготовки к торговой сессии, является технический анализ. Уделяйте не менее 15-ти минут в день, для того, чтобы определить главные ключевые уровни, которые будут актуальны для торгового дня. Так же важно обозначить для себя на каких технических фигурах будет вестись торговля и по каким валютным парам.
  3. В торговом алгоритме, должен быть прописан такой пункт как торговая стратегия. Она должна включать в себя ключевые факторы, на которые вы ориентируетесь при принятии решений для входа в позиции. К примеру: для торговли по техническому анализу такими факторами являются уровни поддержки и сопротивления, несколько фигур технического анализа и несколько паттернов из Price Action.
  4. Пропишете количество убыточных сделок подряд в процентном соотношении от депозита. То есть вы должны точно знать, сколько вы готовы потерять, что бы эти сильно не ударило по вашему счету. Так же стоит прописать, сколько прибыльных сделок за один день вы можете совершить, тоже в процентном соотношении. Это позволит вам исключить эмоции из торгового процесса. Например: вы за несколько сделок увеличили свой депозит на 5-6%, а потом все заработанные за день деньги потеряли. Такое происходит из-за эмоций, и не соблюдения правил торгового алгоритма.
  5. Рассчитывайте свои риски. Первое, что нужно учесть, это то, что уровень Stoploss, должен стоять именно там, где эму необходимо стоять исходя из технического анализа, а не исходя из того, сколько мы готовы потерять. То есть сначала мы определяем уровень Stoploss и уже от него рассчитываем, допустимый риск, который на рынке Форекс, не должен превышать 2%.
  6. Выбор временного периода (таймфрейма) зависит прежде всего от депозита, которым оперирует трейдер. Для новичков на рынке, оптимальным вариантом, будет торговля внутри дня на периоде H1, так как не большие депозиты в 300 – 500 или даже в 1000 долларов не позволят им вести среднесрочную торговлю на дневном графике. Так как заход в сделку даже минимальным объемом будет превышать уровень допустимого риска.
  7. В торговом алгоритме каждого трейдера должен быть прописан такой момент как среднесрочные цели. Например: «Я торгую пол года и показываю положительную динамику роста депозита, четко придерживаюсь стратегии торговли и манименеджмента. После полугода, я перехожу на управление своим счетом через ПАММ систему, после этого я торгую еще три месяца и начинаю получать какие-то инвестиции. Ставьте цели и достигайте их, вы не должны находиться на рынке спонтанно, вы четко должны знать как, как скоро и в коком размере вы хотите сделать себе капитал.
  8. Каждая совершенная сделка должна заноситься в «Дневник трейдера» и тщательно анализироваться. Создайте себе специальный журнал, в котором для каждой сделки будут прописаны такие пункты как:

  • По какой цене мы вошли в сделку
  • По какой цене вышли из нее
  • Уровень StopLoss
  • Объяснение по каким причинам была совершена эта сделка
  • Если были допущены ошибки, то какие
  • Сделать выводы, и внести при необходимости коррективы

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

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

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

ПРОКАЧАЙ СВОЮ ТОРГОВУЮ СТРАТЕГИЮ

Зарабатывай в любой ситуации!

Используй «Конструктор алгоритма» от компании
Gerchik & Co.
Получи четкий план действий для открытия сделок и
торгуй без сливов!

прокачали свою ТС
с помощью алгоритма

потребуется на создание
алгоритма

трейдеров стабильно торгуют
по алгоритму

Почему стоит использовать
Конструктор алгоритма?

«Конструктор алгоритма» — бесплатный интерактивный сервис, который позволяет систематизировать трейдинг легко и быстро. Он охватывает все аспекты трейдинга: + от настроек графика до условий выхода из сделки. Программа экономит время, которое трейдер тратит на подготовку и анализ рыночной ситуации.

Сэкономь время с
«Конструктором алгоритма»

Сократи количество
убыточных сделок

Эта статья приведёт Вас к успеху:  ОШИБКИ СОВЕТНИКОВ ФОРЕКС

Создай собственный уникальный свод правил.
Начни торговать по успешной системе!

Как получить торговый алгоритм?

Заполни форму как можно точнее

Приготовь скриншоты, иллюстрирующие твою торговлю, как можно точнее ответьть на все вопросы.

Программа проанализирует и
создаст чек-лист

Это будет четкий и пошаговый план действий, который изменит твою торговлю.

Получи свой алгоритм на email

Готовый чек-лист для быстрого и точного анализа рынка придет на почту.

Никаких спонтанных решений!

Только стабильная прибыль

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

Создай торговый алгоритм и торгуй прибыльно!

Перейти к созданию торгового алгоритма

ЧТО ГОВОРЯТ
ТЕ, КТО УЖЕ создал свой алгоритм

Когда я начал смотреть ролики от Александра Герчика, я столкнулся с новогодним поздравлением. В нем А.М.Герчик сказал, что все, кто не имеет собственного алгоритма, сольются в наступающем году. Что я тогда подумал на этот счёт? Да ладно, я уже не первый год торгую!
Ещё летом следующего года я был в плюсе, но к середине ноября попал в «привычную ситуацию». И решил-таки написать алгоритм, взялся за него и . застрял. Долго не мог подступиться к написанию. А потом открыл Конструктор Алгоритма, сосредоточился и получил результат, которого даже не ожидал.
Я могу спокойно констатировать, что новая эра в моём трейдинге началась. Я счастлив, что сделал это. Конструктор Алгоритма – это моя победа над собой прошлым.


СПАСИБО. ОЧЕНЬ ВАМ БЛАГОДАРЕН ЗА ОБУЧЕНИЕ. 1- го ИЮНЯ ВСТУПАЮ В КОНКУРС НА ДЕМО-СЧЁТЕ. АЛГОРИТМ ТОРГОВЛИ У МЕНЯ ЕСТЬ Я ЕГО УЖЕ НАПИСАЛ.
С УВАЖЕНИЕМ

Да, обучение мне понравилось. Структурированно, четко, понятно. Самое главное это правильное определение уровней, написание торгового алгоритма и следование ему

Торговый алгоритм Александра Герчика

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

Детальный график рабочего дня.

2.00-2.30 — Повторный анализ сделок. Просматриваются сделки с предыдущего дня, а так же проверяется домашняя работа, для определения недоработок и ошибок.

2.30-2.45 — Выборка акций на сайте Finviz по нужным параметрам:

  • Exchange — выбираем NYSE;
  • Industry выбираем Stocks only (ex-Funds);
  • Current Volume — over 500K;
  • Price — $10 to $50.

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

2.45-4.30 – Отбор акций. После выбора по параметрам, акции импортируются в терминал Thinkorswim, где нужно просмотреть их по двум графикам:

  • верхний M5 (называется пятиминуткой) на нем вы увидите последние пять дней, и, кстати, здесь нет никаких индикаторов.
  • нижний D1 (дневка), на нем видно год, индикаторы от 50 до 200 SMA.

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

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

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

После такой фильтрации от выбранных 350 -500 акций, остается где-то 15-30 акций, которые оставляем в списке Thinkorswim’a до следующего этапа отбора акций.

4.10-7.30 – свободное время для занятий личными делами.

7.30-8.30- Финальный отбор. Просматриваем каждую из 15-30 акций, и составляем по каждой план. Что бы упростить себе работу и не запутаться, разбиваем акции на два листа, первый — те, на которые Вы можете составить конкретный план на торговую сессию. Возле каждой из акции делаем так называемый «шот» лист и «лонг» лист, и описываем варианты возможных событий. А на второй лист вписывайте акций, которые Вам интересны, но пока не видите конкретного плана действий.

8.30-9.10 просмотр конференции на сайте SDG, просмотр новостей, отчетов компаний, ГЭПов и анализ фьючерсов.

9.10-9.20 Окончательная подготовка к торговой сессии. Загоняем тикеры в Graybox и ТОС. Создаем в ТОСЕ окно Flexible Grid для того, чтобы была возможность одновременно видеть 8 основных акций из домашки на третьем экране.

9.20-9.30 – свободное время.

Теперь начинаем торговую сессию по алгоритму Герчика:

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

10.30-12.00 – Обратите внимание, какие из Ваших акций подходят к уровням (пятидневные хаи/лои, круглые цифры, закрытие/открытие предыдущих дней, уровни на которых акции в предыдущие дни значительно останавливались) и ждите входа после пробоя на зеркальном уровне.

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

13.30-15.00- Подходящее время для торгов акциями на продолжение дневного движения, которые сделали откат, постояли и готовы возобновлять движение.

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

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

15.00-16.00 – нет смысла торговать, лучше просто следите за рынком.

16.00-16.30 — время для подведения итогов. Анализ того, как отработались акции с домашнего задания, что Вы упустили, и что не пошло по плану, анализ собственных совершенных сделок за день. Также сделайте скрины сделок и заполните статистику.

16.30 — рабочий день окончен.

Если Вы будите следовать алгоритму торговли Герчика, Вас непременно ожидает успех, ведь Александр Герчик и его алгоритм имеет многолетний успешный опыт, а значит отличный пример для подражания. И помните, не стоит гнаться за быстрым результатом, акцентируйте внимание на качестве, а результат проявиться сам.

Составьте торговый алгоритм

Правила, которые сделают вас победителем в конкурсах на Форекс

Торговая система трейдера – это алгоритм, в котором прописаны ключевые моменты, касающиеся торговли и процесса совершения сделок (открытие и закрытие позиций, стратегия, цели, правила поведения и др.). Она необходима для эффективной торговли.


Сегодня в статье:

Ключевые элементы торговой системы

В торговой системе должны быть указаны:

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

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

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

Рассмотрим более подробно этапы написания торгового алгоритма:

1. Определение целей. Они должны быть конкретными и реалистичными. «Хочу разбогатеть» – слишком расплывчато. «Стать миллионером за год» – маловероятно. Делите цели на долгосрочные и краткосрочные для правильной расстановки приоритетов.

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

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

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

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

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

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

6. Список незыблемых правил. Они уберегают от ошибок в торговле. Правила должны быть индивидуальными для каждого трейдера, в зависимости от его стиля торговли.

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

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

7. Описание процесса торговли. Нужно детально описать ежедневный процесс торговли на Форекс. Общий распорядок на неделю может выглядеть следующим образом:

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

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

Торговая система поможет вам совершать меньше ошибок и торговать эффективнее, значительно снизит риски.

У вас уже есть свой торговый алгоритм?

Если нет, бесплатно создайте его прямо сейчас!

Как правильно составить торговый алгоритм вы узнаете от Виктора Макеева ниже

Не отклоняйтесь от своей торговой системы

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

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

7 признаков успешной торговой стратегии

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

1. Четко сформулированные правила входа в рынок

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

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

2. Четко сформулированные правила выхода из рынка

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

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


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

3. Наличие стоп-лосса

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

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

4. Соотношение риска к заработку

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

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

5. Проверка на истории

Любая стратегия должна быть проверена на истории. Это может быть сделано вручную или написан робот. Но эта работа должна проводиться тщательно.

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

6. Использование ограниченного количества индикаторов

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

Использования одного-двух индикаторов вполне достаточно для успешной торговли. Главное не количество, а качество.

7. Минимальная просадка

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

Эта статья приведёт Вас к успеху:  КАК ВЫЙТИ ИЗ ФОРЕКСА

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

Изменение торговой системы

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

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

Торговый алгоритм трейдера. от ученика Герчика. (взято из открытых источников)

Раз уж начали постить Герчика. И я сохраню информацию для себя. Все из открытых источников .

Торговый алгоритм трейдера NYSE взят с forexlabor.info от Корнецкого Артема, трейдер Forex и NYSE, ученик Александра Герчика.

Сегодня я не торгую если:

• у меня плохое настроение;
• я плохо себя чувствую;
• у меня большие проблемы;
• компьютер плохо работает;
• интернет плохо работает;
• я не сделал домашнее задание.

Расписание рабочего дня (время по Нью-Йорку)

до 9:30 (минимум 2 часа) – домашнее задание;
скриншоты с описанием сделок предыдущего рабочего дня;
9:30-10:30 – слежу за первым часом торговой сессии;
10:30-15:30 – трейдинг;
15:30-16:00 – анализ сделок.
Выходные – повторный анализ сделок; заполнение данных на marketstat; анализ статистики.

Рабочее место:

• удобное;
• светлое;
• в чистоте и порядке;
• хороший компьютер;
• 1-й монитор – графики (thinkorswim);
• 2-й монитор – платформа (graybox).

Монитор для анализа графиков. thinkorswim

Включает в себя: котировки, 5-ти минутный график, дневной график (SMA
20, 50, 200), SPX.

Домашнее задание

1. Анализ индекса S&P (SPX)
Пытаюсь определить фон рынка. Если рынок закрылся при движении вверх, то 70%
отобранных акций должны быть для лонга, 30% акций для шорта; и наоборот.
2. Предварительный отбор акций на finviz.com
Параметры для отбора:
Exchange – NYSE;
Industry – Stocks only (ex-Funds);
Current volume – 300k-1M;
Price – $5-$50;
3. Визуальный отбор акций
1-й список – хороший 5-ти минутный график + хороший дневной график (10-12 шт.);
2-й список – хороший 5-ти минутный график или хороший дневной график (10-12 шт.);
3-й список – остальные интересные бумаги (30-40 шт.)
* хороший 5-ти минутный график – держит уровни последние несколько дней, за которые можно
поставить стоп до 6 центов; дневной потенциал хода – от 50 центов.
* хороший дневной график – акция имеет запас хода, последний бар закрылся без тени.

• Минимальное соотношение прибыль-убыток – 3 к 1;
• Торгуется только отбитие цены от уровня;
• Заходить в сделку нужно по локальному тренду (есть исключения);
• Заходить в сделку только limit order-ами;
• Заходить только, если можно поставить стоп до 6 центов;
• Если limit order не открылся и акция прошла 2 стопа (по закрытию бара), то сделка отменяется.

Модель для входа.

Суммарно должно быть 4 бара, которые сформировали уровень. 3 последних бара должны идти подряд. Вход в сделку – на 4-м баре. 1 2 3 4 или 1 + 2 3 4

Стоп лосс и допустимые отклонения.


• максимальный стоп лосс – 6 центов;
• 1 и 2 бар — всегда должны формировать четкий уровень 1:1;
• 3 и 4 бар могут не доставать до уровня максимум 3 цента;
• максимальный стоп лосс = недобитие 3 и 4 бара + стоп лосс = максимум 6 центов.

Сила уровней (от слабого к сильному).

• воздушный (не встречался ранее) – вход на 4-м баре подряд;
• воздушный + круглая цифра (0, 50, 25,75) – вход на 4-м баре подряд;
• уровень, который встречался ранее – вход на 3-м баре;
• уровень, который встречался ранее + круглая цифра – вход на 3-м баре;
• уровень после ложного пробития – вход на 3-м баре;
• зеркальный уровень – вход на 3-м баре.

Модели рынка для входа в позицию

Торговля против тренда возможна, если

• уровень, который состоит из минимум 6-ти баров подряд;
• если уровень повторяется несколько дней подряд, то можно заходить на 4-м баре;
• запас хода — минимум 5 стопов.

Удержание позиции

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

Выход из сделки.

• при достижении цели;
• по стоп лоссу (ничего страшного);
• по рынку (удлинение баров и увеличение объемов – сигнал для выхода; явное отбитие цены от сильного уровня в противоположную сторону).

Риск менеджмент.

• максимальный риск на сделку – 6 центов;
• максимальный риск на день – 24 доллара или 3 отрицательные сделки подряд;
• если за день есть прибыль, то нужно рисковать максимум 30% от нее.

Как правильно написать алгоритм торгового робота

Чтобы написать своего «торгового робота», для начала вы должны правильно составить алгоритм (порядок действий), по которому он будет работать.

Алгоритмы бывают: простые – всего с одним условием, и сложные – с двумя и более условиями. Зачастую для правильной и прибыльной работы автоматизированной торговой системы, требуется два и более условия как для входа в позицию, так и для выхода из неё.

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

В алгоритме торговой системы обязательно должны быть учтены следующие моменты:

1. Когда должен начинать работать робот;

2. Проверка на исполнение заявки, сделки, стоп-заявки;

3. На каких торговых площадках, и с какими инструментами будет работать автоматическая торговая система;

4. Когда робот должен прекратить свою работу. В определенное время (например, окончание торговой сессии) или при наступлении каких-либо условий (например, уменьшение депозита на 1 процент за одну торговую сессию);

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

6. Как совершить сделку, лимитированной заявкой или брать по рынку.

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

Правильно составленный и записанный алгоритм торгового робота поможет вам быстро и безошибочно его запрограммировать.

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

Пример написания простого алгоритма с развитием различных событий для покупки акций Газпрома представлен в виде текста и блок-схемы.

Условия алгоритма: купить 1000 акции (лотов) Газпрома, когда цена превысит значение пороговой цены в 190 рублей.

Чтобы правильно написать робота по заданным параметрам, нам нужно ответить на один вопрос:

Как будет производиться покупка?

— покупаем по рынку, то есть берем все 1000 лотов по рыночной цене;

— выставляем лимитированную заявку с заданным спрэдом.

При выборе первого условия заявка просто исполняется по рыночной цене.

При выборе второго условия, возникают следующие варианты событий:

1. Полное исполнение заявки.

2. Заявка исполнилась не полностью, т.е. приобретена только часть лотов, а цена «ушла» выше пороговой цены.


3. Заявка помещается в стакан, т.е. не приобретено ни одного лота, а цена уже «ушла» выше пороговой цены.

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

— по истечении определенного времени заявка исполняется по рынку;

— переставляется на Х пунктов ближе к цене.

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

После того как нарисована блок-схема и проработаны все основные моменты, можно приступать к программированию робота.

Автор статьи — Дмитрий Высоцкий — успешный ученик Дмитрия Михнова, трейдер и разработчик систем автоматической торговли (торговых роботов).
На данный момент сам успешно торгует как вручную, так и при помощи роботов.

P.S.

Все подробности алкотрейдинга и навыки по роботопостроению вы можете узнать с помощью видеокурса «Торговые роботы с нуля»

А также — напишите в комментариях ваши мысли и вопросы по теме статьи!

КАК НАПИСАТЬ СВОЙ АЛГОРИТМ ТОРГОВЛИ?

You are using an outdated browser. Upgrade your browser today or install Google Chrome Frame to better experience this site.

Главная » Блог о трейдинге » Как составить собственный алгоритм торговли

Как составить собственный алгоритм торговли

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

Для начала – немного мотивации

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

  1. Алгоритм как ПДД.
    Трейдинг в чём-то сравним с гонкой на опасной трассе. Чтобы не угодить в «аварию» и не лишиться своего депозита, необходимо соблюдать правила. Их и необходимо, среди прочего, прописать в торговом алгоритме. Когда у торгующего трейдера всегда перед глазами перечень того, что «можно» и «нельзя» в процессе торговли, он более дисциплинирован и возникает в разы меньше соблазна отклониться от торговой стратегии или поддаться эмоциям.
  2. Алгоритм как шпаргалка.
    Когда трейдер выбирает и разрабатывает торговую стратегию, он осознаёт для себя, каким принципами и ограничениями будет ведома его дальнейшая торговля. Но удержать все нюансы стратегии в уме просто невозможно, поэтому, прописав их в торговом алгоритме, трейдер всегда будет иметь под рукой «шпаргалку» и будет чувствовать себя в разы увереннее.
  3. Алгоритм как график работы.
    Помимо правил и основных моментов стратегии, в торговом алгоритме прописывается время, когда трейдер торгует, когда занимается анализом рынка, а когда выполняет домашнее задание. Чем подробнее торговый алгоритм, тем дисциплинированнее и увереннее трейдер.

Как составить свой алгоритм торговли? 2 ключевых правила

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

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

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

Что стоит прописать? Основные пункты

Итак, приступаем к составлению алгоритма. Первое, что стоит прописать – правила для начала торговли. То есть, нужно чётко определить, при каких обстоятельствах трейдер не начинает торговлю. Это может быть плохое самочувствие, настроение или проблемы с интернет-соединением. Почему это важно? Потому что эти простые правила уберегут от глупых ошибок, которые можно совершить, войдя в рынок в нерабочем состоянии.

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

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

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

Не забываем и о ключевых правилах самого трейдинга – на каких таймфреймах торговать, какими ордерами и с какими стопами.

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

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

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

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

Как создать торгового робота с помощью генетического программирования


Доброго времени суток. В этой статье расскажу о создании системы в которой генетические алгоритмы пишут роботов. В теории эти роботы могли бы торговать на бирже.

Эта статья приведёт Вас к успеху:  СИГНАЛИЗИРУЮЩИЕ ИНДИКАТОРЫ ФОРЕКС

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

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

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

С чего бы начать?

Я начал с изучения платформы для создания роботов MetaTrader5. Язык MQL5 позиционируется как схожий с С++, с незначительными отличиями в синтаксисе. Если говорить простыми словами, в платформе имеются функции для доступа к данным рынка и функции для выполнения торговых операций. После изучения и проверки нескольких десятков простых роботов, началась работа над их выделением общей элементарной базы, на которой и строятся эти алгоритмы.

Для удобства работы с логикой внутри генетического алгоритма мне пришлось создать свой мета-язык над MQL, назовем его SadLobster. Без этого обобщения было бы ужасно сложно заставить машину писать код по правилам языка программирования созданного для человека. Весь проект был обозначен как прототип, чтобы было проще принять множество компромиссов и упрощений. Иначе эта фаза разработки никогда бы не закончилась.

Как работает один робот

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

Функции boolA__3 и priceA__10 обрабатывают информацию, получаемую с графиков котировок.
Функция boolA__3 запускается чтобы проверить есть ли сигнал для выставления ордера. Первый раз мы проверяем есть ли сигнал на покупку. Второй раз запускаем еще со значением инверт=1 и проверяем есть ли сигнал на продажу.

Функция priceA__10 определяет по какой цене должен быть выставлен ордер.

SadLobster
Вторая фишка языка SadLobster в том, что его синтаксис совместим с С++. То есть, тот же код, что я использую для тестирования в MQL, можно запустить через С++ тестер, который был написан отдельно.

MQL tester vs C++ tester

  • Этот тестер на два порядка быстрее MQL и имеет необходимое API чтобы им мог управлять генетический алгоритм.
  • MQL же предоставляет отличные возможности для отладки и проверки правильной работы роботов.

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

Язык состоит из списка функций которые можно использовать. Простейшие — AND, OR, CREATE_LINE, IS_INSIDE,…

И функции доступа к данным котировок и технических индикаторов — HIGH, LOW, FRACTAL, MA, MACD_SIGNAL. Эти функции будут перечислены в списке 1.

Симуляция торговли на истории

Робот запускается на периоде истории, например с 2014 по 2020 год. Происходит моделирование торговли. Все его сделки записываются и по ним формируется отчет. Мой отчет выглядит примерно так:

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

По отчету видно хорош робот или нет. Про тестер стратегий и его реализацию постараюсь рассказать в другой раз.

Фитнес функция

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

Первое решение — чем больше робот заработал, тем он лучше. Но тут возникает вопрос рисков. Такой робот совершенно нежизнеспособен. Меньше риск — меньше прибыль, больше риск больше прибыль.

У торговых роботов есть несколько различных характеристик. Самые простые из них — профит фактор(PF) и математическое ожидание прибыли на одну сделку(EP), максимальная просадка по средствам, LR correlation, Коэффициент Шарпа.

Вот так выглядит отчет MetaTrader о работе одного из созданных роботов:

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

Динамика и результаты запуска Генетического Алгоритма

Графическое представление эволюции или график обучения

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

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

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

О сложности

Алгоритм робота для простоты не имеет внутренней памяти или состояний. Эта же особенность помогает кешировать результаты вычислений на каждом баре. Что сильно ускоряет вычисления. Стараясь использовать только функции со сложностью О(1) или O(n) в логике, я сильно ограничил функционал. Но этого требовали вычислительные ресурсы.

Генерация случайного дерева

Как получить функцию в том виде в котором она представлена в первом листинге?


  1. Надо создать список возможных функций и описать их
  2. Собрать случайное дерево-выражение которое и есть логика
  3. Преобразовать в код

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

Рассмотрим простую функцию MORE_I

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

А вот здесь возникает неплохая олимпиадная задачка: необходимо из исходных функций собрать все возможные варианты логик с заданной сложностью и типом результата. Под логикой следует понимать выражение типа F(X)->Y.

Пример — мы хотим функцию принятия решения о входе в длинную позицию. Нам нужно булевое решение — DEF_BOOL, тогда возможные варианты следующие:

Стараясь закончить прототип, я очень злоупотряблял функцией random() там где надо было бы использовать более умную логику. Но вся идея была в том чтобы запустить машину целиком и, обвесив ее тестами, начать итеративные улучшения. Ниже приведено описание алгоритма на котором я остановился.

Задача алгоритма — сгенерировать функцию, которая будет возвращать DEF_BOOL. Нотация выражения LISP-подобная: [Function Name, param1, param2. ]. Параметры, которые начинаются с DEF, являются типом. Выражение в котором есть такой параметр не является окончательным, требует уточнения. В нотации не указывается тип возвращаемого значения за ненадобностью.

  1. Давайте создадим пул таких выражений, где мы их и будем генерировать.
  2. Проверяем нет ли в нашем пуле функции без параметров требующих уточнения. Если есть, выбираем его и возвращаем как результат. Если нет продолжаем.
  3. Выбираем случайно одно из следующих возможных действий — добавить в пул еще одну функцию(4) или заполнить в существующей неуточненные параметры(5).
  4. Добавить новое выражение. Поскольку нам нужны только функции которые будет возвращать тип DEF_BOOL, выбираем все такие функции из списка СП1. Теперь выбираем случайную функцию и записываем ее в пул в виде [‘IS_INSIDE’, ‘DEF_HPRICE_LEVEL’, ‘DEF_PRICE’].
  5. Расширяем существующую функцию. В функции IS_INSIDE два параметра требуют уточнения. Ищем функцию которой можно заполнить параметр DEF_PRICE в СП1.
    Получаем [‘IS_INSIDE’, ‘DEF_HPRICE_LEVEL’, [‘MA_HI_I_v2’, ‘8’, ‘dsD1’, ‘1’, ‘invert’]].
  6. Возвращаемся к пункту 2.

Результатом алгоритма будет подобное выражение

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

Это третья реализация алгоритма, первые два были не столь удачны. Весьма полезно было ознакомиться с 4-м томом Кнута, а именно главой 7.2.1.6 Генерация всех деревьев. Если нужна будет улучшенная версия, обязательно перечитаю ее снова. Недостатками этого алгоритма является:

  1. Надо убедиться что СП1 способен порождать выражения в нужном количестве и многообразии. Для этого у меня просто существует тест, который показывает что из 10000 сгенерированных функций 90% являются уникальными.
  2. Также не ясно какое распределение базовых функций в выражении.
  3. Хотелось бы знать какое количество различных функций может порождать конкретный список базовых функций.
  4. PS. Это, кстати, одно из тех мест системы, где мы заменили всю силу аналитического ума человека на простую функцию Random(). Человек который создает робота уже должен знать ответ на вопрос Как? этот робот будет работать и Почему. ГА здесь просто выполняет роль оптимизированного полного перебора.

Трансляция в конечную форму

Далее это LISP-подобное выражение превращается в листинг на языке SadLobster, где каждое неделимое выражение — это новая переменная. Логически выражение остается тем же.

SadLobster это не Haskell c чистыми функциями

Хотя я к этому стремился. Одна из проблем которые стоят при создании языка — обработка ошибок. Сразу возникло желание применить механизм эксепшенов, но MQL их не поддерживает. Самая частовозникаемая проблема — неудачно созданный объект. Идеально было бы использовать nil значения, не будем усложнять раньше времени. Это можно улучшить в следующих версиях. А в текущей реализации просто проверяется валидный ли объект, если нет то функция немедленно завершается. Этим занимается макрос типа CHECK_LINE_OR_FALSE.

Оптимизация выражений

Рассмотрим вариант когда выражение выглядит так:

Выражения 1 и 2 одинаковые. После транслирования и выделения переменных, var_2 используется в обоих местах и никакого дублирования кода.

Разработка требует инфраструктуры

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

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

  1. Логировать данные в базу во время работы ГА
  2. Достать из базы и обработать
  3. Отобразить графически при помощи mathplotlib

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

Пару слов о производительности

Тестирование очень быстрое по нескольким причинам:

  • Все роботы компилируются в машинный код.
  • Тестирование запускаются многопоточно.
  • Распараллелен даже процесс линковки.
  • Из тестера стратегий урезано много проверок.
  • Используется кеширование для тяжелых функций
  • Тестирование роботов очень грубое, тут нет скальперов или HFT, анализ происходит на часовых графиках.
  • Я использовал процессор на 12 потоков с разгоном до 4GHz Intel Core i7-5820K для тестирования.

Как это работает?

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

Давайте посмотрим на такой эксперимент — запускаем ГА 15 раз, потому что каждый ГА это чреда очень многих случайных событий генерации, мутации, скрещивания и рулетки.

Хочу уточнить что в работах не используется Money Management и торговля ведется одним и тем же минимальным объемом.

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

Хэпиэнда не будет

Получилось заставить ГА создавать роботов с определенной задачей. Этот проект расширил мое понимание и экспертизу в описанной выше теме. И тут случилось страшное — цель проекта достигнута. Проект для генерации роботов готов. Эта статья подводит черту по проделанной работе.

Вывод хочу разделить на два пункта

Субъективный — по ходу работы назрело множество вариантов того, что можно было бы проверить в рамках данной системы, для чего она и создавалась. Например:

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

Объективный — технический анализ инструмента это как вождение авто смотря в зеркало заднего вида. Простого паттерна для торгового робота найти не удалось. Без полной модели рынка не ясно почему работают те или другие роботы, и когда это прекратится.

И самое главное — я вижу будущее этого проекта в формате песочницы для развития ИИ в области написания алгоритмов.

С удовольствием отвечу на ваши вопросы, предложения и комментарии.

Лучший Форекс брокер 2020 года:
  • FinMaxFx
    FinMaxFx

    Лучший Форекс брокер этого года!
    Бесплатное обучение и демо-счет!
    Бонусы за регистрацию!

Добавить комментарий