Откуда идея
Билатеральный фильтр пришёл из обработки изображений. Он убирает шум, но сохраняет резкие границы. Индикатор 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%.
| ТФ | Период | Прибыль | Сделок | Прибыльных | Макс. просадка |
|---|---|---|---|---|---|
| 4h | 6 месяцев | +255 USDT | 19 | 7 | −164 USDT |
| 4h | 1 год | +334 USDT | 42 | 14 | −168 USDT |
| 4h | 2 года | +199 USDT | 79 | 23 | −308 USDT |
| 4h | 5 лет | +828 USDT | 201 | 59 | −428 USDT |
| 12h | 6 месяцев | +74 USDT | 6 | 3 | −60 USDT |
| 12h | 1 год | +120 USDT | 13 | 6 | −94 USDT |
| 12h | 2 года | +121 USDT | 27 | 10 | −159 USDT |
| 12h | 5 лет | +424 USDT | 70 | 23 | −229 USDT |
| 1d | 6 месяцев | +66 USDT | 4 | 2 | −49 USDT |
| 1d | 1 год | +55 USDT | 8 | 3 | −73 USDT |
| 1d | 2 года | +30 USDT | 14 | 5 | −157 USDT |
| 1d | 5 лет | +87 USDT | 37 | 13 | −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 USDT | 42 | +828 USDT | −428 USDT |
| 4h | 3 ATR | сразу снова | +166 USDT | 141 | +571 USDT | −359 USDT |
| 4h | 3 ATR | ждать разворота | +124 USDT | 34 | +258 USDT | −197 USDT |
| 4h | 4 ATR | ждать разворота | +73 USDT | 37 | +585 USDT | −214 USDT |
| 4h | 6 ATR | сразу снова | +299 USDT | 60 | +817 USDT | −385 USDT |
| 4h | 6 ATR | ждать разворота | +306 USDT | 42 | +935 USDT | −322 USDT |
| 12h | выключен | — | +120 USDT | 13 | +424 USDT | −229 USDT |
| 12h | 3 ATR | сразу снова | +29 USDT | 45 | +255 USDT | −206 USDT |
| 12h | 3 ATR | ждать разворота | +124 USDT | 11 | +418 USDT | −91 USDT |
| 12h | 4 ATR | ждать разворота | +146 USDT | 11 | +190 USDT | −161 USDT |
| 12h | 6 ATR | ждать разворота | +127 USDT | 13 | +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, то есть счёт был бы потерян. Пирамиду стоит включать только вместе с меньшим риском.
Как настроить бота
- Начните с настроек по умолчанию: 4h, риск 2%, стоп 3 ATR, трейлинг выключен.
- Если просадка на 4h кажется большой, возьмите 12h: прибыли меньше, но просадка примерно вдвое меньше.
- Размер прибыли и просадки регулируйте риском: при 1% они вдвое меньше, при 3% в полтора раза больше.
- Трейлинг на 4h ставьте не ближе 6 ATR, на 12h хорошо работает 3 ATR. С трейлингом оставляйте галочку «ждать разворота».
- Порог разворота 1.5 и окно 40 лучше не менять: они дали лучший или близкий к лучшему результат.
- Пирамиду включайте только со сниженным риском.
- Перед запуском прогоните бэктест своих настроек на странице создания бота и проверьте бота на демо-счёте.
Сильные и слабые стороны
- Плюс: на разворотах фильтр запаздывает меньше, чем скользящая средняя той же длины, и не дёргается от одиночных выбросов.
- Плюс: сигнал не перерисовывается, а правило входа и выхода простое и проверяемое.
- Минус: в боковике бот часто переворачивается и платит комиссии и стопы.
- Минус: бот всегда в позиции, поэтому резкий гэп против неё бьёт по капиталу раньше, чем сработает стоп.