Торгові стратегії на Pine Script: розробка та бектестинг

Торгова ідея є, а підтвердження немає: на історії прибуток, на реальному рахунку — просадка. Ми розробляємо стратегії на Pine Script під ключ: від схеми й логіки до перевірки на історії та на нових даних. На виході — код, звіт перевірки й документація, готові до роботи.
Часті запитання

Розробка Pine Script: чому стратегія не працює

Стратегія на Pine Script показує в тестері рівну зростаючу криву, а на живому рахунку — серію збитків. Справа майже ніколи не в ринку: тестер проганяє історію за тими самими барами, за якими код рахує сигнал, і всі помилки логіки просто не видно. Розбираємо, чому гарна історія не переноситься в реальні угоди.

Перша причина — переоптимізація. Коли під історію підбирають п'ять-шість параметрів з дрібним кроком, із тисяч комбінацій обов'язково знаходиться та, що ідеально лягає на минулі дані: вона описує не поведінку ринку, а шум конкретного відрізка.

Ознака проста — результат тримається в дуже вузькому коридорі значень: зсунули параметр на крок, і просідання зросло в рази. Така стратегія розсипається вже на перших нових барах.

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

Сюди ж відсутність комісії, спреду та прослизання: за частих угод витрати з'їдають усю перевагу. Окремо перевіряємо перемальовування — значення, які перераховуються на незакритому барі й заднім числом «підтверджують» вхід.

Через це ж страждають стопи й цілі, прив'язані до екстремумів поточного бару. Щоб зрозуміти, де саме ламається логіка, ми проганяємо стратегію на відрізку, що не брав участі в налаштуванні, перевіряємо стійкість параметрів і лише потім додаємо реалістичні витрати. Порядок зворотний: спочатку чесні дані та виконання, потім підбір.

Що дає стратегія, перевірена на історії та на нових даних

Різниця між стратегією, яка тримається, і тією, що розсипається вже на першому новому місяці, видна не за прибутком, а за набором перевірок. Ми фіксуємо їх до старту: якщо пункт не виконується, гіпотеза повертається на доопрацювання, а не в торгівлю.

Нижче — те, що замовник бачить у звіті по кожній стратегії на Pine Script, мові платформи TradingView.

  • Просідання на історії та на нових даних порівнянне. Розходження глибше чверті — ознака підгонки, такі параметри в роботу не йдуть.
  • Параметри не стоять на краю діапазону. Зсув кожного значення на крок в обидва боки не перевертає результат.
  • Витрати закладено в розрахунок. Комісія, спред і прослизання рахуються на реальних обсягах — інакше звіт покаже дохідність, якої на рахунку не буде.
  • Результат тримається на різних активах і режимах ринку, а не на одному вдалому відрізку.
  • Перевірка на нових даних іде після заморозки правил. Доучування заборонено: інакше це підгонка, а не тест.
  • Прогін відтворюваний. Той самий набір даних і комісій дає той самий звіт — результат можна переперевірити.
  • Гіпотеза перевіряється за один прогін, а не за тиждень ручної роботи: стенд і шаблони заготовок уже зібрані.

Такий набір перевірок дає стійкість стратегії на нових даних і відсікає слабкі гіпотези до торгівлі. Просідання перестає бути сюрпризом, а рішення щодо параметрів спираються на вимірювання, а не на переконання.

Порівняння підходів: індикатор, робот, портфель стратегій

Формат реалізації визначає не лише обсяг коду, а й те, як логіка переживе зміну ринкового режиму.

Той самий сигнал, зібраний як індикатор, як автономний робот або як набір стратегій під спільним управлінням капіталом, поводиться по-різному при просіданні, обриві з'єднання та перерахунку даних на нових барах.

Нижче — три варіанти, між якими реально обирають, з чесними обмеженнями кожного щодо стійкості та вартості супроводу.

Варіанти та їхні межі

Варіант Коли підходить Обмеження підходу
Індикаторна стратегія Потрібна візуальна перевірка гіпотези на історії та на живому графіку, рішення ухвалює людина Сигнали видно, але вони не виконуються самі: результат залежить від дисципліни оператора, ручний вхід втрачає на прослизанні
Торговий робот Логіка формалізована, умови входу й виходу однозначні, потрібна робота без участі людини Один сценарій на один інструмент: при зміні волатильності правила застарівають, потрібне регулярне переналаштування й контроль виконання
Портфель стратегій Кілька незалежних логік ділять капітал, важлива стійкість за рахунок диверсифікації Складніше налагодження й урахування кореляцій: стратегії можуть дублювати одна одну, а ризик рахується за сукупною позицією

Розподіл працює й у зворотний бік: частина обмежень знімається, якщо індикатор залишити для контролю, а виконання передати роботу. Такий гібрид трапляється частіше, ніж чисті варіанти, і на оцінці ми відштовхуємося від того, який підхід замовник готовий супроводжувати.

Розробка Pine Script: етапи від схеми до здачі

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

  1. Постановка гіпотези. Фіксуємо ринок, таймфрейм, умову входу й виходу, правило ризику та момент скасування сигналу. Критерії на кшталт «сильного тренду» замінюємо вимірюваними: нахил ковзної, дистанція від рівня, обсяг.
  2. Схема логіки. Описуємо стани позиції: вхід, утримання, переворот, часткове закриття. Окремо — поведінка на межі сесії: тут найчастіше розходяться очікування й результат.
  3. Реалізація. Пишемо стратегію на Pine Script: параметри винесено в налаштування, розрахунок іде за закритою свічкою, торгові умови відокремлено від малювання — поведінка відтворювана й не залежить від перемальовування.
  4. Прогін на історії. Дивимося не лише на дохідність: просідання, частка прибуткових угод, розподіл результатів за періодами, кількість угод. Десяток угод — ще не статистика.
  5. Перевірка стійкості. Змінюємо таймфрейм та інструмент, зсуваємо параметри на крок, дивимося ділянку, що не брала участі в налаштуванні. Якщо результат розсипається від невеликого зсуву — правило перенавчене.
  6. Аудит коду. Перевіряємо розрахунок на зазирання в майбутнє, розмір позиції, урахування комісії та прослизання, обробку пропусків даних.
  7. Передача. Вихідний код із коментарями, опис параметрів та їхніх меж, відомі обмеження, порядок підключення.

Кожен етап закінчується артефактом: схема, код, звіт за тестами, інструкція. За ними видно, на чому ґрунтуються висновки і що саме змінювати при зміні ринку.

Що передаємо: код, звіт перевірки, документація

Стратегія залишається у вас у вигляді, який не потребує нашої участі: код читається й змінюється, розрахунки відтворювані, рішення пояснено. Склад постачання однаковий і для нової стратегії, і для переробки наявної — змінюється лише обсяг.

  • Вихідний код стратегії на Pine Script — повний, з коментарями щодо логіки входів, виходів і управління позицією. Не закрита бібліотека, а файл, який можна прочитати порядково й змінити під свою гіпотезу.
  • Звіт про тестування — прогін на історичних даних у різних режимах ринку: стійкий тренд, боковик, різкі рухи. У звіті зафіксовано параметри прогону, просідання, частку прибуткових угод та їхню кількість, щоб результат можна було повторити.
  • Опис управління ризиком — як рахується розмір позиції, як обмежується серія збитків, за яких умов стратегія зупиняється.
  • Документація по стратегії — призначення кожного параметра, безпечні діапазони значень, межі застосовності. Її достатньо, щоб новий інженер розібрався без листування з автором коду.
  • Регламент супроводу — що перевіряти і з якою періодичністю, як переносити логіку на інший інструмент або таймфрейм, як фіксувати зміни між версіями.
  • Набір перевірок і тестові дані — відтворюваний розрахунок: після будь-якої правки видно, що саме змінилося в поведінці стратегії.
  • Журнал рішень — які гіпотези перевірялися й були відкинуті, з яких причин. Це економить час при наступному доопрацюванні.

Кейс: як знизили просідання та прибрали переоптимізацію

Стратегія на TradingView прийшла до нас робочою: 14 параметрів, підібраних під конкретний відрізок історії, рівна крива доходу та просідання близько 18% на ньому. На нових даних картина розійшлася — просідання зросло до 42%, частина періодів пішла в мінус.

Параметри описували не поведінку ринку, а шум одного вдалого відрізка, і це класична підгонка під історію.

Що змінили

Розібрали, які параметри реально впливають на результат, а які лише підлаштовують вхід під минуле. Чотири виявилися надлишковими — їх прибрали, три об'єднали в один фільтр волатильності.

Підсумкова логіка входу описується шістьма параметрами замість чотирнадцяти, і кожен із них перевіряємо на сенс, а не на красу графіка.

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

Такий прогін показує не найкращу криву, а розкид результату: наскільки підсумок залежить від випадково обраного періоду.

Після переробки результат на історії став скромнішим, зате розходження між історією та новими даними скоротилося з трьох з гаком разів до 1,2.

Максимальне просідання знизилося з 42% до 16%, частка прибуткових періодів зросла з 48% до 61%, а зсув одного параметра вже не перевертає підсумок тесту. Головний ефект — передбачуваність: видно, за яких умов стратегія працює і коли її потрібно вимикати.

Чим відрізняється перевірка на історії від торгівлі на демо-рахунку

Тестування на історії та демо-рахунок відповідають на різні питання. Перший показує, чи відтворювана логіка стратегії на Pine Script на минулих даних, другий — чи виживає вона при реальному виконанні.

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

Розходження результатів складається з кількох шарів: спред і комісія, прослизання на швидких рухах, різна якість історії за молодшими періодами, гепи на відкритті сесії.

Окрема причина — заповнення всередині бару: якщо логіка спирається на максимум і мінімум свічки, на історії результат виходить оптимістичнішим, ніж досяжний у реальному часі.

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

Дефект — коли змінюється знак результату, частина угод зникає або з'являється частіше, ніж в історії, або звіт показує входи за цінами, яких на той момент не було. Це вже не похибка виконання, а помилка в логіці або в даних.

Період перевірки підбираємо так, щоб він захоплював тренд, боковик і ділянку високої волатильності, інакше стратегія виглядає стійкою просто тому, що ринок був одноманітним.

Звіряємо журнали угод порядково за часом і ціною, а витрати рахуємо окремим рядком — тоді видно, на якому шарі втрачається результат і що правити: умови входу чи модель виконання.

Технічні сумніви: дані, комісії, прослизання

Прибуткова стратегія на історії розходиться з реальністю частіше не через логіку входу, а через витрати й припущення тестера. Нижче — питання, які ми закриваємо до того, як вважати результати бектесту достовірними.

Як комісії потрапляють у розрахунок?

Комісія списується і на вході, і на виході, а для лімітних і маркет-заявок ставки різні. У тестері задаємо обидві й додаємо до ціни угоди — інакше крива дохідності завищується тим сильніше, чим частіше стратегія торгує.

Як моделюється прослизання?

Виконання за ідеальною ціною — ілюзія: у тестері немає реальної черги заявок. Задаємо прослизання в тіках або в частці спреду; на тонкому ринку розходження з історією стає помітним.

Які ліміти майданчика змінюють результат?

Мінімальний крок ціни, округлення обсягу, ліміт на кількість активних заявок і розмір позиції. Стратегія, яка ставить обсяг вище ліміту, в реальності отримує часткове виконання — метрики в тестері розходяться з торгівлею.

Як перевірити якість історичних даних?

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

Обговоримо задачу та повернемося з оцінкою й планом

Щоб розбір не розтягнувся на тижні, достатньо надіслати короткий опис: інструмент і робочий таймфрейм, логіку входу й виходу, спосіб розрахунку ризику на угоду. Якщо напрацювання вже є — файл стратегії, лог прогону на історії та список угод, результати яких викликають питання.

Цього достатньо, щоб обговорити задачу предметно й повернутися з оцінкою та планом робіт, а не з уточнювальними питаннями по колу.

Що фіксуємо в плані до старту:

  • правила входу, виходу та перенесення захисної заявки — формулами, а не «на око»;
  • обсяг позиції, крок його зміни, граничне просідання на угоду та на серію угод;
  • набір історичних даних для тестування, включно з трендовими ділянками й тривалим боковиком;
  • перелік перевірок: комісія, прослизання, пропущені бари, поведінка на відкритті торгів;
  • метрики приймання: частка прибуткових угод, профіт-фактор, максимальне просідання, середній час утримання;
  • склад постачання: код стратегії, коментарі до логіки, інструкція із запуску та налаштування параметрів;
  • умови супроводу стратегії: які правки вносимо при зміні режиму ринку і в які строки.

Пункти плану узгоджуємо до першого рядка коду — тоді результат можна перевірити за числами, а не обговорювати на смак. Опишіть задачу в зручному вигляді: повернемося з оцінкою, планом робіт і межами супроводу стратегії.

Напрямки блокчейн-розробки

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1394
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1369
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    816
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1142