🔂STATE MACHINE

Code Zero Visual Trading for TradingView

Познавательно

State machine, или автомат состояний - это система, которая может находиться в одном из нескольких состояний. Она меняет свои состояния в ответ на события или входные сигналы.

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

Так же и state machine в программировании или электронике "переключается" между состояниями по заданным правилам.

Общее описание индикатора

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

Модуль STATE MACHINE - это как игра в шахматы для вашей торговой стратегии. Он позволяет вам "ходить" по разным состояниям (как позициям на шахматной доске), каждое из которых соответствует определенному моменту или событию в вашей стратегии. Вы сами устанавливаете правила, когда и как перейти от одного состояния к другому, вплоть до пятого.

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

Важно

Вы сами решаете, что и когда должно произойти в вашей стратегии.

Лучше всего понять логику состояний можно на примере.

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

Состояние 0: Запуск

  • Система запущена и переходит в Состояние 1.

Состояние 1: Наблюдение за рынком.

  • Система находится в состоянии ожидания и наблюдает за ценой акции.

  • Если цена закрытия превышает среднее значение EMA(50), система переходит в Состояние 2.

Состояние 2: Проверка дополнительных условий.

  • Система проверяет, RSI (Индекс относительной силы) меньше 30, что может указывать на перепроданность акции.

  • Если условие RSI удовлетворяется сейчас или в течение 5 баров, система переходит в Состояние 3.

  • Если условие не удовлетворяется в течение 5 баров, система возвращается в Состояние 0.

Состояние 3: Генерация сигнала на покупку.

  • Система проверяет объем торгов - если он больше среднего объема за последние 10 баров, это может свидетельствовать о растущем интересе к акции.

  • Если объем торгов выше среднего на протяжении 2 баров, система генерирует сигнал на покупку.

  • Если объем торгов не выше среднего на протяжении 2 баров, система возвращается в Состояние 0

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

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

На диаграмме приведен пример.

Состояние 0 - машина готова к работе и ожидает выполнения условия [R1]: RSI(14) < 30. Максимальное время ожидания: бесконечно.

Состояние 1 - машина перешла в это состояние после выполнения условия [R1] и ожидает выполнения условия [R2]: VOLUME > VOLUME MA(50) Максимальное время ожидания: 10 баров.

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

  1. Если выполнится условие [R2] будет осуществлен переход в состояние 2.

  2. Если пройдет 10 баров и условие [R2] не выполнится, машина перейдет в начальное состояние 0 и начнет работу заново.

Состояние 2 - машина перешла в это состояние после выполнения [R2] и ожидает выполнения условия [R3]: close > open (Bullish bar) Максимальное время ожидания: бесконечно.

Состояния 3 - машина перешла в это состояние после выполнения [R3], генерирует выходной сигнал об успешном выполнении всех условий и переходит в начальное состояние 0 и начнет работу заново.

Таким образом, машина снова ждет нужной ситуации не рынке.

1. Интерфейс

Условие (RULE) для каждого состояния задается так же как и в модуле CONDITION MANAGER. При его выполнении система переходит в следующее состояние и ожидает его выполнения.

Когда STATE MACHINE доходит до последнего шага, который вы задали, она "говорит": "Все, задача выполнена!" и начинает все заново.

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

NОписание

1

2

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

3

Сколько баров ждать выполнения условия, прежде чем оно станет неактуальным и STATE MACHINE нужно будет перезапустить (перейти в состояние заданное в параметре 5 "Reset to").

4

Сигнал по которому STATE MACHINE нужно будет перезапустить (перейти в состояние заданное в параметре 5 "Reset to").

5

Состояние на которое нужно перейти при перезапуске текущего состояния (по п. 2 или п. 3 или п.4).

2. Передача значений между состояниями

Чтобы принять решение на основе данных из прошлого, в модуле есть специальные "запоминающие" переменные: S1_VAR, S2_VAR, S3_VAR, S4_VAR. Они как заметки, куда записываются важные числа из предыдущих шагов (состояний).

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

Например,

значение RSI(14) при переходе из состояния 1 в состояние 2 записывается в специальную переменную S1_VAR,

которую при переходе в состояние 4 можно использовать для перехода в состояние 5: "RSI(14) на шаге 1 был равен 25?".

3. Выходные данные

Модуль STATE MACHINE имеет три выхода:

  • Сигнал о том, что все состояния пройдены успешно и мы можем работать дальше (SIGNAL).

  • Состояние, в котором мы находимся сейчас (CURRENT STATE).

  • Состояние, которое мы ожидаем при успешном окончании (TARGET STATE).

4. Тестирование

Для тестирования работы модуля STATE MACHINE используется та же самая Backtesting Line, что и в CONDITION MANAGER. Она показывает, как настроенная вами логика работала бы на исторических данных. Вы можете последовательно проверить работу каждого состояния, что поможет вам понять, как ваши настройки реагируют на рыночные условия.

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

Last updated