STATE MACHINE
Code Zero Visual Trading for TradingView
Last updated
Code Zero Visual Trading for TradingView
Last updated
Пізнавально
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 барів.
Тепер виникає ситуація можливого розгалуження, куди далі перейде машина.
Якщо виконається умова [R2] буде здійснено перехід у стан 2.
Якщо мине 10 барів і умова [R2] не виконається, машина перейде в початковий стан 0 і почне роботу заново.
Стан 2 - машина перейшла в цей стан після виконання [R2] і очікує виконання умови [R3]: close > open (Bullish bar) Максимальний час очікування: нескінченно.
Стани 3 - машина перейшла в цей стан після виконання [R3], генерує вихідний сигнал про успішне виконання всіх умов і переходить у початковий стан 0 і почне роботу заново.
Таким чином, машина знову чекає потрібної ситуації не ринку.
Умова (RULE) для кожного стану задається так само як і в модулі CONDITION MANAGER. При її виконанні система переходить в наступний стан і чекає його виконання.
Коли STATE MACHINE доходить до останнього кроку, який ви задали, вона "каже": "Все, завдання виконано!" і починає все заново.
Як тільки ви перейдете до нового кроку, він почне чекати на виконання заданої умови і буде це робити доти, доки вона не спрацює. Якщо таке безкінечне очікування не підходить для вашої стратегії чи перед виконанням нового кроку необхідно внести якусь затримку, ви завжди можете це налаштувати:
1
2
СВи можете задати кількість барів, які потрібно почекати, перш ніж почнеться цей крок.
3
Скільки барів чекати на виконання умови, перш ніж вона стане неактуальною і STATE MACHINE потрібно буде перезапустити (перейти в стан, заданий у параметрі 5 «Reset to»).
4
Сигнал, за яким STATE MACHINE потрібно буде перезапустити (перейти в стан, заданий у параметрі 5 «Reset to»).
5
Стан, на який потрібно перейти під час перезапуску поточного стану (за п. 2 або п. 3, або п. 4).
Щоб прийняти рішення на основі даних з минулого, у модулі є спеціальні "запам'ятовуючі" змінні: S1_VAR, S2_VAR, S3_VAR, S4_VAR. Вони як нотатки, куди записуються важливі числа з попередніх кроків (станів).
Потім, коли вам треба зробити новий крок, ви можете глянути ці нотатки та використати записане для вирішення, як саме рухатися далі.
Наприклад,
значення RSI(14) при переході зі стану 1 в стан 2 записується в спеціальну змінну S1_VAR,
яку при переході в стан 4 можна використати для переходу в стан 5: "RSI(14) на кроці 1 був рівний 25?".
Модуль STATE MACHINE має три виходи:
Сигнал про те, що всі стани пройдені успішно і ми можемо працювати далі (SIGNAL).
Стан, у якому ми знаходимось зараз (CURRENT STATE).
Стан, який ми чекаємо при успішному закінченні (TARGET STATE).
Для тестування роботи модуля STATE MACHINE використовується та ж сама Backtesting Line, що й в CONDITION MANAGER. Вона показує, як налаштована вами логіка працювала б на історичних даних. Ви можете послідовно перевірити роботу кожного стану, що допоможе вам зрозуміти, як ваші налаштування реагують на ринкові умови.
Щоб побачити результати для конкретного стану, виберіть його зі списку доступних станів. Потім на графіку ви побачите лінію з синіми квадратами, які покажуть моменти активації STATE MACHINE у цьому стані. Таким чином ви можете пройтись по всім станам і протестувати їх. Це дасть вам чітке уявлення про те, коли і чому модуль переходив з одного стану в інший, і як це впливало на торговельні рішення.
Вибір джерела даних, яке буде записано у змінну Sx_VAR у момент переходу з цього стану в наступний. Цю змінну можна буде використовувати в наступних станах для створення умов правил.