← Все идеи
#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