Розберемо на прикладі, як зацикливать одну і ту ж операцію на якомусь результаті за допомогою тригерів. Ми розглянемо, яким чином групувати дії і повторювати їх за певних умов.
Ось типова ситуація: ставимо ПРОТИ другого фаворита, зрівнює прибуток і, якщо все ставки в парі, то повторюємо до упору.
Разоб'ем це твердження на кілька частин: з цього завжди варто починати роботу над тригерами. Ось які дії нам необхідно виконати:
- Зробити ставку ПРОТИ другого фаворита
- Зрівняти прибуток на кінець, проти якого була зроблена ставка
- Повторити зазначені дії, якщо все ставки в парі
З чого почати
Почнемо з простого і реалізуємо перші два пункти.
Ці тригери досить зрозумілі самі по собі. Якщо я їх застосую в випадково обраному ринку скачок, ось що я отримаю:
А тепер зробимо так, щоб ці ставки повторювалися, тобто ставка - зрівняння - ставка - зрівнювання і т.д. Цього можна досягти, повторюючи блок з тригерами.
За замовчуванням будь-який блок повторюється "один раз". Це означає, що будь-який тригер з цього блоку може спрацювати тільки один раз в окремо взятому ринку (якщо тільки це не суперечить налаштувань самого тригера). Якщо вам потрібно, щоб один або кілька тригерів повторилися в одному і тому ж ринку кілька разів, можливо, на одному і тому ж результату, тоді вам потрібно згрупувати ці тригери в блок, який потім повторити.
зациклюватися тригери
Змінимо властивість "Повторювати" у нашого блоку з "один раз" на "не частіше, ніж 5 сек.".
Порада: завжди встановлюйте частоту повторення тригера в значення, яке більше частоти поновлення ваших ставок (Опції ставок -> Оновлювати список поточних ставок раз в ... сек.). Так, якщо ставки оновлюються кожні 3 секунди, то вкрай важливо, щоб блок повторювався не частіше ніж один раз на 4 секунди. Ваші тригери повинні мати можливість дочекатися актуального списку поточних ставок!
Слова "не частіше, ніж 5 сек." Насправді означають, що блок буде повторюватися раз в 5 секунд або рідше, в залежності від частоти оновлення ринку.
Досить часто на цьому і кидають роботу над тригером, хоча це груба помилка. Програмі потрібно дати зрозуміти, за яких обставин тригери повинні повторюватися. Для цього додамо спеціальний тригер з дією "закрити блок".
При спрацьовуванні цього тригера всі інші тригери в блоці скидають свої статки до вихідного, іншими словами, програма вважає, що ще жодного разу їх не виконувала. Само собою, після цього вони зможуть спрацювати знову, а саме це нам і потрібно!
Подивимося на третій пункт нашої вихідної задачі:
Повторити зазначені дії, якщо все ставки в парі
Виходить, недостатньо просто повторити наші дії, потрібно ще й врахувати, що всі ставки повинні стати парними, а вірніше, що не повинно бути жодної непарної ставки (інакше тригер буде безконтрольно "вистрілювати" одну ставку за одною)! Для цього додаємо наступні умови.
Запустимо ці тригери і подивимося, що вийде!
Ого, щось явно пішло не так! Ставки все одно йдуть, не чекаючи уравнівнія. Схоже, що тригер ігнорує свої умови!
Насправді, нічого подібного. Просто не відразу помітно, що ці умови завжди будуть вірні, навіть до того, як зроблена перша ставка. Немає ставок = немає непарних ставок, блок можна повторити! Після першої ставки все також немає непарних ставок, так що можна робити наступну, і так поки не витратимо всі засоби.
Ці умови явно недостатні. Коли ми сформулювали їх на папері, ми упустили пару важливих моментів, які зазвичай вважаються самі собою зрозумілими:
- Перш ніж тригери підуть по другому колу, повинні виконатися і тригер зі ставкою ПРОТИ, і тригер, що зрівнює прибуток.
- Загальні виплати за ставками ЗА і зобов'язання за ставками ПРОТИ у всіх результатів повинні бути збалансовані, тобто ні на одному результату не повинно бути відкритих позицій.
Порада: ніколи не вважайте, що програма розуміє ваші думки. Завжди самим ретельним чином формулюйте умови своїх ставок.
Ось як це повинно бути насправді:
Ця конфігурація приводить до бажаного результату: