Откуда идея

Билатеральный фильтр пришёл из обработки изображений. Он убирает шум, но сохраняет резкие границы. Индикатор Bilateral Filter Trend (автор QuantAlgo, TradingView) применяет ту же идею к цене.

Обычная скользящая средняя одинаково усредняет все свечи окна, поэтому на разворотах она запаздывает: старые цены тянут её назад. Билатеральный фильтр почти не учитывает свечи, цена которых далеко от текущей. Когда рынок резко уходит в новую сторону, фильтр быстро переключается на новый уровень, а мелкие колебания вокруг него сглаживает.

Как считается фильтр

На каждой закрытой свече берутся последние N закрытий (окно фильтра). Каждое закрытие получает вес, который складывается из двух множителей:

  • Вес по времени: чем старше свеча, тем меньше вес. Это гауссово ядро по возрасту свечи, его ширину задаёт «ядро по времени» σt в свечах.
  • Вес по цене: чем дальше закрытие от опорной цены, тем меньше вес. Расстояние меряется в ширинах ценового ядра, равных σr × ATR(14). Свечи далеко от текущей цены почти не влияют на фильтр.
фильтр = Σ wᵢ · closeᵢ / Σ wᵢ
wᵢ = exp(−i² / 2σt²) · exp(−½ · ((closeᵢ − опора) / (σr · ATR))²)

Опорная цена в нашей реализации — медиана трёх последних закрытий (защита от выбросов). Одна аномальная свеча не тянет фильтр за собой. Если защиту выключить, опорой служит текущее закрытие.

Фильтр причинный: он использует только прошлые закрытые свечи. Значение на закрытой свече потом не меняется, и сигнал не перерисовывается.

Когда меняется тренд

Тренд помнит экстремум фильтра с последнего разворота. В восходящем тренде это максимум фильтра. Если фильтр опустился ниже максимума больше чем на «порог разворота» × ширину ценового ядра, тренд становится нисходящим. Нисходящий тренд разворачивается вверх так же, от минимума.

Порог задаётся в единицах ATR, поэтому правило одинаково работает на спокойном и на волатильном рынке: в волатильный период фильтру нужно пройти больше долларов, чтобы тренд сменился.

Как торгует бот BILATERAL_FUTURES

  • Одна пара, фьючерсы USDT-M на Binance или OKX. Решения принимаются только на закрытых свечах выбранного таймфрейма, по умолчанию 4h.
  • Бот всегда в позиции по направлению фильтра: лонг в восходящем тренде, шорт в нисходящем.
  • Когда фильтр разворачивается, позиция закрывается по рынку и сразу открывается обратная.
  • Размер позиции считается от риска: риск % × капитал / (стоп в ATR × ATR). По умолчанию это 2% капитала и стоп 3 ATR, а номинал не больше трёх капиталов.
  • Стоп стоит на бирже как стоп-ордер. После выбивания по стопу бот пропускает одну свечу и входит заново по текущему направлению фильтра.
  • Трейлинг-стоп по умолчанию выключен (50 ATR). Если его включить, после выхода по трейлингу бот ждёт разворота фильтра, а не входит сразу снова по тому же тренду (это можно отключить). Так меньше лишних входов: на 12h с трейлингом 3 ATR за год прибыль выросла с +29 до +124 USDT, а просадка уменьшилась с −107 до −59 USDT.
  • Дневной (10%) и месячный (35%) лимиты убытка закрывают позицию и ставят бота на паузу до следующих суток или месяца.

Настройки

ПараметрПо умолчаниюЧто меняет
Окно фильтра40 свечейСколько последних закрытий усредняется
Ядро по времени12 свечейКак быстро забываются старые свечи
Ядро по цене1.5 × ATRКакие свечи считаются далёкими и почти не влияют
Порог разворота1.5 ширины ядраЧем больше, тем реже и позже развороты
Защита от выбросоввключенаОпорная цена — медиана трёх закрытий
Таймфрейм4hСвечи фильтра, ATR и пауза после стопа
Риск на сделку2% капиталаСколько теряет сделка, если сработал стоп; от него считается размер позиции
Стоп3 ATRРасстояние стопа от входа; при том же риске меняет размер позиции
Трейлинг50 ATR (выключен)Насколько стоп отстаёт от лучшей цены с момента входа
После трейлингаждать разворотаВходить ли снова в ту же сторону после выхода по трейлингу
Пирамида1 юнит (выключена)Докупка того же объёма через каждые 1 ATR в сторону сделки
Пауза после стопа1 свечаСколько свечей бот не входит после выхода по стопу
Лимиты убытка10% в день, 35% в месяцУбыток больше лимита закрывает позицию до следующих суток или месяца

Результаты на истории

Все прогоны ниже сделаны на том же движке, что и бэктест в боте, по BTCUSDT (бессрочный фьючерс OKX). Капитал фиксирован на 1000 USDT, прибыль выводится. Учтены комиссия 0.05% и проскальзывание 0.03% на каждый вход и выход, а также фандинг 0.01% за 8 часов для лонгов. Периоды заканчиваются 1 ноября 2026 года. В каждой таблице меняется одна настройка, остальные стоят по умолчанию. Просадка считается по кривой капитала вместе с открытой позицией.

Таймфрейм

Чем меньше таймфрейм, тем чаще разворачивается фильтр: больше сделок, больше прибыли и больше просадка. BTC за эти периоды изменился так: за 6 месяцев +2%, за год −29%, за 2 года +10%, за 5 лет +26%.

ТФПериодПрибыльСделокПрибыльныхМакс. просадка
4h6 месяцев+255 USDT197−164 USDT
4h1 год+334 USDT4214−168 USDT
4h2 года+199 USDT7923−308 USDT
4h5 лет+828 USDT20159−428 USDT
12h6 месяцев+74 USDT63−60 USDT
12h1 год+120 USDT136−94 USDT
12h2 года+121 USDT2710−159 USDT
12h5 лет+424 USDT7023−229 USDT
1d6 месяцев+66 USDT42−49 USDT
1d1 год+55 USDT83−73 USDT
1d2 года+30 USDT145−157 USDT
1d5 лет+87 USDT3713−233 USDT

Больше всего заработал 4h, но за 5 лет его просадка дошла до 428 USDT, это 43% капитала. 12h спокойнее: за 5 лет +424 USDT при просадке 229 USDT. На 1d сделок мало, и результат слабый. Таймфреймов 1h, 2h и 6h в таблицах нет, их можно проверить бэктестом на странице бота.

За последний год BTC упал на 29%, и большую часть прибыли бот заработал на шортах. Прибыльных сделок меньше половины, но в среднем они в 2.5–4 раза крупнее убыточных: бот держит позицию, пока идёт тренд, и быстро режет ошибки стопом. При риске 2% и стопе 3 ATR позиция на 12h занимает около 300 USDT из 1000, а на 4h около 550–700 USDT.

Трейлинг и ожидание разворота

Трейлинг-стоп идёт за лучшей ценой с момента входа и закрывает позицию, когда цена откатилась на заданное число ATR. Без ожидания бот на следующей свече снова входит в ту же сторону. С трейлингом 3 ATR сделок от этого становится в 3–4 раза больше: на 4h за год 141 вместо 42. С галочкой «ждать разворота» бот после такого выхода ждёт, пока фильтр не развернётся, и входит уже в обратную сторону.

ТФТрейлингПосле выходаПрибыль за годСделок за годПрибыль за 5 летПросадка за 5 лет
4hвыключен—+334 USDT42+828 USDT−428 USDT
4h3 ATRсразу снова+166 USDT141+571 USDT−359 USDT
4h3 ATRждать разворота+124 USDT34+258 USDT−197 USDT
4h4 ATRждать разворота+73 USDT37+585 USDT−214 USDT
4h6 ATRсразу снова+299 USDT60+817 USDT−385 USDT
4h6 ATRждать разворота+306 USDT42+935 USDT−322 USDT
12hвыключен—+120 USDT13+424 USDT−229 USDT
12h3 ATRсразу снова+29 USDT45+255 USDT−206 USDT
12h3 ATRждать разворота+124 USDT11+418 USDT−91 USDT
12h4 ATRждать разворота+146 USDT11+190 USDT−161 USDT
12h6 ATRждать разворота+127 USDT13+468 USDT−204 USDT

На 4h близкий трейлинг (3–4 ATR) обрезает большие тренды, на которых бот зарабатывает, и прибыль падает. Трейлинг 6 ATR с ожиданием разворота за 5 лет дал +935 USDT против +828 без трейлинга, а просадка уменьшилась с 428 до 322 USDT. На 12h трейлинг 3 ATR с ожиданием разворота за 5 лет заработал почти столько же, сколько без трейлинга (+418 против +424 USDT), а просадка уменьшилась с 229 до 91 USDT.

Риск и стоп

Риск на сделку задаёт размер позиции. Прибыль и просадка растут вместе с ним почти пропорционально, а доля прибыльных сделок не меняется. Цифры для 4h:

Риск на сделкуПрибыль за годПросадка за годПрибыль за 5 летПросадка за 5 лет
1%+167 USDT−84 USDT+414 USDT−214 USDT
2%+334 USDT−168 USDT+828 USDT−428 USDT
3%+501 USDT−252 USDT+1242 USDT−642 USDT
4%+668 USDT−336 USDT+1656 USDT−857 USDT

При риске 4% за 5 лет просадка дошла до 857 USDT, почти до всего капитала. Начинать лучше с 1–2%.

Стоп при том же риске меняет размер позиции: чем ближе стоп, тем больше позиция. Поэтому с близким стопом прибыль выше, но выше и просадка, и стоп срабатывает чаще. Цифры для 4h:

СтопПрибыль за годПросадка за годПрибыль за 5 летПросадка за 5 лет
2 ATR+539 USDT−258 USDT+1366 USDT−606 USDT
2.5 ATR+417 USDT−181 USDT+1100 USDT−508 USDT
3 ATR+334 USDT−168 USDT+828 USDT−428 USDT
4 ATR+255 USDT−126 USDT+846 USDT−366 USDT
5 ATR+194 USDT−109 USDT+682 USDT−277 USDT

Настройки фильтра и пауза после стопа

Порог разворота 1.5 дал лучший результат на 4h. С меньшим порогом позиция чаще переворачивается на шуме, с большим разворот приходит позже. На 12h за год порог 2 чуть лучше, а за 5 лет лучше 1.5. В таблице прибыль:

Порог разворота4h за год4h за 5 лет12h за год12h за 5 лет
1+35 USDT+443 USDT+4 USDT+133 USDT
1.5+334 USDT+828 USDT+120 USDT+424 USDT
2+279 USDT+324 USDT+131 USDT+273 USDT
2.5+76 USDT+129 USDT+117 USDT+262 USDT
3+81 USDT+570 USDT+95 USDT+306 USDT

Окно фильтра больше 40 свечей ничего не меняет: при ядре по времени 12 свечей старые свечи и так почти не весят. Окно 20 на 4h за 5 лет дало +879 USDT против +828.

Окно фильтра4h за год4h за 5 лет12h за год12h за 5 лет
20 свечей+343 USDT+879 USDT+129 USDT+461 USDT
30 свечей+344 USDT+769 USDT+119 USDT+417 USDT
40 свечей+334 USDT+828 USDT+120 USDT+424 USDT
60 свечей+334 USDT+828 USDT+120 USDT+424 USDT
80 свечей+334 USDT+828 USDT+120 USDT+424 USDT

Однозначного выигрыша пауза после стопа не даёт. Без паузы на 4h за 5 лет вышло +1041 USDT против +828 при похожей просадке (453 против 428 USDT), но за последний год и на 12h пауза в 1 свечу была лучше.

Пауза после стопа4h за год4h за 5 лет12h за год12h за 5 лет
0 свеч.+311 USDT+1041 USDT+115 USDT+363 USDT
1 свеча+334 USDT+828 USDT+120 USDT+424 USDT
3 свеч.+282 USDT+827 USDT+99 USDT+423 USDT

Пирамида

Пирамида докупает ещё один такой же объём каждый раз, когда цена проходит 1 ATR в сторону сделки, и подтягивает стоп. Прибыль растёт, но просадка растёт быстрее. Цифры для 4h:

ЮнитовПрибыль за годПросадка за годПрибыль за 5 летПросадка за 5 лет
1 (выключена)+334 USDT−168 USDT+828 USDT−428 USDT
2+564 USDT−329 USDT+1587 USDT−886 USDT
3+840 USDT−489 USDT+2460 USDT−1510 USDT

С тремя юнитами за 5 лет просадка превысила капитал: 1510 USDT при капитале 1000, то есть счёт был бы потерян. Пирамиду стоит включать только вместе с меньшим риском.

Как настроить бота

  1. Начните с настроек по умолчанию: 4h, риск 2%, стоп 3 ATR, трейлинг выключен.
  2. Если просадка на 4h кажется большой, возьмите 12h: прибыли меньше, но просадка примерно вдвое меньше.
  3. Размер прибыли и просадки регулируйте риском: при 1% они вдвое меньше, при 3% в полтора раза больше.
  4. Трейлинг на 4h ставьте не ближе 6 ATR, на 12h хорошо работает 3 ATR. С трейлингом оставляйте галочку «ждать разворота».
  5. Порог разворота 1.5 и окно 40 лучше не менять: они дали лучший или близкий к лучшему результат.
  6. Пирамиду включайте только со сниженным риском.
  7. Перед запуском прогоните бэктест своих настроек на странице создания бота и проверьте бота на демо-счёте.

Сильные и слабые стороны

  • Плюс: на разворотах фильтр запаздывает меньше, чем скользящая средняя той же длины, и не дёргается от одиночных выбросов.
  • Плюс: сигнал не перерисовывается, а правило входа и выхода простое и проверяемое.
  • Минус: в боковике бот часто переворачивается и платит комиссии и стопы.
  • Минус: бот всегда в позиции, поэтому резкий гэп против неё бьёт по капиталу раньше, чем сработает стоп.
Создать Bilateral-бота