← Усі ідеї
#013ТрендСвінг

20-денна середня і перевірка околиці: викинути, а не підлаштувати

Завжди в ринку за закриттям вище або нижче 20-денної середньої. До системи додано протокол Джона Боллінджера: прогнати довжини 16–24 і викинути систему цілком, якщо результати помітно розходяться.

The Algorithmic Advantage · John Bollinger · Дивитися відео

Ринки

Акції, Індекси, Ф'ючерси

Таймфрейм

D1

Дані

OHLC

Правила

Правила автора

Складність

Проста

Статус

Не перевірено

Автор назвав вхід, вихід і параметри.

TradingView є пастки
EasyLanguage переноситься напряму
MetaTrader 5 переноситься напряму

Ідея коротко

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

Далі йде не оптимізація, а перевірка сусідів. Проганяються довжини середньої 16, 17, 18, 19, 21, 22, 23 і 24. Якщо вони дають приблизно схожі результати, система проходить. Якщо ні, її викидають цілком. Підбирати найкращу довжину або змінювати правила, доки околиця не зійдеться, не можна.

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

Чому це може працювати

Логіка Боллінджера: правило, яке спирається на базову властивість ринку (тренд, повернення до середнього, волатильність), не повинно залежати від точного числа. Якщо 20 днів працює, а 18 і 22 ні, результат дала не властивість ринку, а вдалий збіг із конкретною історією. Така система розвалиться за першої невеликої зміни ринку.

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

Друга евристика з того самого інтерв'ю стосується довжини опису. Систему, яку можна викласти у два-три рядки, варто перевіряти. Систему на 150 рядків майже напевно не варто. Ця система вміщується в один рядок.

Застереження: протокол відповідає на питання, чи підігнана система. Він не відповідає, чи вона прибуткова. Однаково збиткові результати на всіх дев'яти довжинах теж формально «схожі». Тому до перевірки околиці потрібен окремий критерій якості.

Правила

Система (автор)

MA = SMA(Close, 20)                              // Finetiq: тип середньої в інтерв'ю не названо, беремо просту

IF Close > MA THEN BUY AT NEXT BAR OPEN          // автор: закриття вище середньої
IF Close < MA THEN SELL SHORT AT NEXT BAR OPEN   // автор: закриття нижче, продати й відкрити шорт
// Finetiq: виконання на відкритті наступного дня, момент входу автор не уточнив
// завжди в ринку: купівля закриває шорт, продаж закриває лонг
// стопа, цілі й виходу за часом в описі немає
// розмір: Finetiq, фіксована частка капіталу без плеча (автор проти будь-якого плеча)

Протокол околиці (автор)

Center    = 20
Neighbors = [16, 17, 18, 19, 21, 22, 23, 24]     // автор

FOR N IN [Center] + Neighbors:
    backtest(MA = SMA(Close, N))                 // ті самі дані, період, витрати й розмір позиції
    save metrics(N)

IF results(Neighbors) приблизно схожі на results(Center)
    PASS
ELSE
    DISCARD system                               // автор: без оптимізації і без підлаштування

// Finetiq: числового критерію «приблизно схожі» автор не назвав. Стартове правило для перевірки:
//   усі 9 прогонів прибуткові після витрат
//   AND найгірший CAGR серед сусідів >= 0.5 * CAGR(Center)
//   AND найгірша MaxDD серед сусідів <= 1.5 * MaxDD(Center)
// Finetiq: після провалу не можна оголосити новим центром найкращого сусіда й запустити перевірку знову

Зрізи часу (автор, без чисел)

// автор: результати на окремих відрізках історії теж мають бути схожими
Slices = поділити історію на K рівних відрізків  // Finetiq: K = 4
FOR each Slice: metrics(Slice) за N = 20

IF хоча б один відрізок збитковий
   OR CAGR найгіршого відрізка < 0.25 * CAGR усієї історії     // Finetiq: стартовий поріг
    DISCARD system

// автор: walk-forward і переоптимізація за вікнами не використовуються

Доповнення: старі системи як готовий out-of-sample (автор)

Боллінджер радить шукати ідеї в старих книгах. Якщо правила опубліковано 20 років тому, увесь час після публікації це чесний out-of-sample, який можна перевірити одразу. Протокол той самий: система в тому вигляді, як записана, околиця кожного параметра, зрізи часу. Як джерела він називає книги Garfield Drew, Welles Wilder («New Concepts in Technical Trading Systems»), Charles Patel і Norman Fosback («Stock Market Logic»).

Параметри

Параметр Значення Звідки
Довжина середньої 20 днів автор
Тип середньої проста Finetiq
Сигнал закриття денного бару вище або нижче середньої автор
Виконання відкриття наступного дня Finetiq
Напрямок лонг і шорт, завжди в ринку автор
Околиця 16–19 і 21–24 автор
Критерій «схоже» усі прибуткові, найгірший CAGR не нижче половини центру, найгірша просадка не більша за 1.5 центру Finetiq
Зрізи часу 4 рівні відрізки Finetiq
Поріг за зрізом CAGR не нижче чверті від усієї історії Finetiq
Плече немає автор
Оптимізація і walk-forward не використовуються автор
Ринок у прикладі акції США, денні бари автор

Що перевірити

  1. Сама околиця. Дев'ять прогонів 16–24 на одному інструменті. Намалюйте метрику як функцію довжини середньої. Рівна полиця і гострий пік на 20 дають протилежні висновки.
  2. Околиця на кошику. Ті самі дев'ять довжин на 20–50 акціях або ф'ючерсах. Для кожної довжини дивіться медіану по інструментах. Один папір проходить перевірку випадково набагато легше, ніж кошик.
  3. Яка метрика вирішує. Перевірте протокол на підсумковому прибутку, на Sharpe і на максимальній просадці. Система буває схожою за прибутком і сильно різною за просадкою. Вирішіть заздалегідь, яка метрика дає вердикт, інакше вибір метрики стане новою підгонкою.
  4. Протокол проти оптимізації. Візьміть першу половину історії, знайдіть найкращу довжину з 5–100 і перевірте її околицю. Потім на другій половині порівняйте системи, які пройшли і не пройшли перевірку. Якщо ті, що пройшли, не кращі, критерій «схоже» надто м'який.
  5. Витрати. Переворот на перетині ціни і 20-денної середньої на боковику трапляється часто. Проженіть усі дев'ять довжин із комісією та прослизанням. Короткі середні перевертаються частіше, і витрати б'ють по околиці нерівномірно.
  6. Зрізи часу. Розбийте історію на чотири відрізки. Перевірте, чи не тримається весь результат на одному році з сильним трендом (наприклад, 2008 або 2020).
  7. Шортова половина. Боллінджер торгує акції США і сам говорить про їхнє довгострокове зростання. Порівняйте всю систему, лише лонги і варіант «лонг вище середньої, поза ринком нижче».

Особливості платформ

TradingView (Pine Script)

  • У тестері стратегій TradingView немає вбудованого перебору параметрів. Дев'ять прогонів доведеться робити вручну, змінюючи input. Альтернатива: порахувати дев'ять віртуальних систем в одному індикаторі й вивести їхні підсумки в таблицю.
  • Під час ручних прогонів легко непомітно змінити період історії або витрати між запусками. Зафіксуйте діапазон дат, комісію і slippage у strategy().
  • За замовчуванням process_orders_on_close = false: сигнал на закритті дня, виконання на відкритті наступного, як у правилах.
  • strategy.entry у протилежний бік перевертає позицію, окремий вихід не потрібен.
  • Довжина історії обмежена тарифом. Для чотирьох зрізів часу потрібна довга денна історія на всіх дев'яти прогонах.

MultiCharts і TradeStation (EasyLanguage)

  • Околиця 16–24 проходиться стандартним оптимізатором: input довжини середньої, крок 1. Дивіться таблицю всіх прогонів, а не найкращий рядок.
  • Buy next bar at market і SellShort next bar at market самі перевертають позицію.
  • Для кошика акцій: Portfolio Maestro у TradeStation, Portfolio Trader у MultiCharts. Протокол тоді застосовується до медіани по кошику.
  • Для ф'ючерсів у TradeStation денний бар закривається за settlement, а 1440-хвилинний за останньою угодою (Kevin Davey, The Algorithmic Advantage #036). Сигнал «закриття вище середньої» на двох видах бару буде різним. Для акцій це не важливо.

MetaTrader 5 (MQL5)

  • У тестері є повільний повний перебір. Для дев'яти значень вибирайте його, а не генетичний алгоритм, щоб отримати всі прогони.
  • Середня: iMA(..., MODE_SMA, ...). Сигнал беріть із закритого бару (індекс 1) і перевіряйте появу нового денного бару.
  • Денний бар будується за часом сервера брокера. Короткі недільні бари в брокерів із сервером не в GMT+2/+3 додають зайвий «день» у 20-денну середню.
  • Акції та індекси в MT5 найчастіше CFD. За кожну ніч у позиції нараховується плата за перенесення, а система завжди в ринку. Увімкніть її в тест, інакше результат завищений.

Де ідея може зламатися

  • Боллінджер описав приклад процедури, а не свою торгову систему. Цифр щодо неї в інтерв'ю немає, і немає твердження, що вона прибуткова.
  • Критерію «приблизно схожих результатів» не названо. Усі пороги в картці наші. Надто м'який критерій пропустить підгонку, надто жорсткий викине все підряд.
  • Околиця в чотири дні в кожен бік вузька. Усі дев'ять довжин можуть однаково виграти від особливостей періоду. Від цього захищають зрізи часу й кошик ринків, а не сама околиця.
  • Перевірка околиці не рятує від відбору ідей. Якщо перебрати двадцять різних систем і залишити ту, чия околиця зійшлася, підгонка все одно відбулася, лише на рівень вище.
  • Завжди-в-ринку за 20-денною середньою часто перевертається на боковику. На паперах із широким спредом і на CFD з платою за перенесення витрати можуть з'їсти весь результат.
  • Автор торгує акції США на довгому зростаючому ринку. Шортова половина системи на цьому ринку йде проти довгострокового зростання.

Джерела

  • Critical formulas for Bollinger Band trading - John Bollinger - 056

    The Algorithmic Advantage · John Bollinger · 2026-09-03

    • 41:15Два-три рядки проти 150: простота як фільтр
    • 50:45Без плеча
    • 52:15Питання про робастність і оптимізацію
    • 53:00Стара система дає готовий out-of-sample
    • 54:15Простота, вікна часу, жодної оптимізації
    • 54:45Система: закриття вище й нижче 20-денної середньої
    • 55:00Прогін довжин 16–24
    • 55:15Не схоже: систему викидають без підлаштування
    • 55:45Зрізи часу замість walk-forward
    • 56:45Система, яка десятиліттями працює без правок

Схожі ідеї

Оновлено: 2026-09-10