Money Flow Index — один из немногих осцилляторов, который умеет «слышать» объём, а не только цену. В классической литературе границы перекупленности и перепроданности фиксированы: 80 и 20. Для крипто-фьючерсов с их хвостами и резкими импульсами стандартная нижняя граница 20 — слишком позднее условие для шорта. На платформе ITradingBot для шорт-сценариев применяется нестандартная настройка MFI(14, 80/40): нижняя граница поднимается с 20 до 40. Ниже разберём, почему именно так и как собрать пресет в боте.
Что такое MFI и чем он отличается от RSI
Money Flow Index был описан Джином Куонгом и Авромом Соудаком (Gene Quong, Avrum Soudack) в журнале «Stocks & Commodities» в 1989 году. Авторы взяли формулу RSI и заменили в ней чистое изменение цены на «денежный поток» — типичную цену бара (high + low + close) / 3, умноженную на объём.
Поэтому MFI часто называют «RSI на объёме». Логика та же: соотношение положительного и отрицательного потока, шкала 0–100, зоны перекупленности/перепроданности. Но смысл сигнала другой:
- RSI реагирует на цену — он не отличает движение на пустом стакане от движения с реальным поступлением средств.
- MFI требует объёма — без объёма индикатор просто не двинется. Это объёмный осциллятор, и в нашей внутренней классификации он относится именно к этому типу.
Главное практическое следствие: MFI и RSI не дублируют друг друга. RSI измеряет ценовой импульс, MFI — давление денег. Поэтому пара RSI + MFI в одной стратегии — это термометр и барометр одновременно, два разных измерения одного и того же события.
Параметры MFI на платформе ITradingBot
| Параметр | Назначение | Диапазон | Стандартное значение |
|---|---|---|---|
| Период | Окно расчёта индекса | 2–30 | 14 |
| Верхняя граница | Порог перекупленности | 5–95 | 80 |
| Нижняя граница | Порог перепроданности | 5–95 | 20 |
| Режим | Логика срабатывания | По выходу из канала / По возвращению в канал | По выходу из канала |
Расчёт идёт по четырём входным рядам: high, low, close, volume — то есть индикатор по определению нельзя посчитать на тиках без объёма. На входных данных используется библиотека TA-Lib: talib.MFI(high, low, close, volume, period=p).
Режимов два:
- По выходу из канала — сигнал срабатывает, когда MFI выходит из зоны: пересекает нижнюю границу снизу вверх (лонг) или верхнюю сверху вниз (шорт). Логика возврата к среднему.
- По возвращению в канал — сигнал срабатывает, когда MFI входит в зону: пересекает верхнюю снизу вверх (шорт по перекупленности) или нижнюю сверху вниз (лонг по перепроданности). Логика контртренда «в максимум».
Стандартный MFI(14, 80/20) и его границы
Классическая настройка пришла в крипту из акций и фьючерсов на индексы 1990-х. На дневном таймфрейме медленных рынков MFI выходит из зоны 0–20 нечасто, и каждый такой выход — действительно «крайнее истощение продавцов». Симметричное поведение работает и сверху: значение выше 80 встречается достаточно редко, чтобы считать его сигналом.
В крипто-фьючерсах эта симметрия ломается. На 5-минутном и часовом таймфреймах биткоина и ликвидных альтов MFI регулярно прокалывает 20 и 80 на любых импульсах, особенно на новостях и каскадных ликвидациях. Сигнал «MFI вышел из зоны 0–20 вверх» в крипте — это часто не разворот, а пауза посреди продолжающегося падения.
Для лонгов это меньше критично: вход после касания крайней зоны хотя бы статистически совпадает с локальным дном. Для шортов — катастрофично. Бот, настроенный шортить «по выходу из зоны перекупленности 80», реагирует на верхнюю границу нормально. А вот фильтр «не шортить ниже 20» в стандартной настройке означает: бот будет шортить вплоть до значений MFI = 21–25, то есть в самый разгар уже состоявшегося падения. Это и есть «шорт в дно».
Почему 20 — слишком жёсткий порог для шорта
Логика стандартного фильтра «нижняя граница 20» такая: запрет на шорт активируется, когда MFI ниже 20 (рынок уже глубоко перепродан). Пока MFI выше 20 — шорт разрешён.
В крипте эта формулировка пропускает огромное «серое поле» 20–40, в котором рынок уже сильно сложен по объёму, но формально в зоне перепроданности ещё не находится. Что происходит в этом диапазоне:
- Покупатели начинают локально откупать дно — но цена ещё не успела отреагировать.
- Объём продаж снижается, формируется бычье поглощение.
- При плече ×5+ риск ликвидации растёт экспоненциально, и неудачный шорт в этой зоне закрывается с маржин-коллом, а не с минусом по цели.
Поднимая нижнюю границу с 20 до 40, мы расширяем «запретную для шорта» зону. Бот будет шортить только при MFI выше 40, то есть только когда давление продавцов ещё не выдохлось. Сигналов меньше — но каждый из них значимо качественнее.
MFI(14, 80/40) — модификация ITradingBot
В FAQ платформы это правило сформулировано прямо: для шорта нужно вручную изменить нижнюю границу индикатора с 20 на 40. По умолчанию MFI запрещает шорт ниже 20 — это и есть точка, которую нужно поднять.
Алгоритм действий в боте:
- В стратегии добавить фильтр или вход MFI.
- Период — 14 (стандарт), верхняя — 80 (без изменений), нижняя — 40 вместо 20.
- Режим — «По выходу из канала», если шорт строится на отскоке от перекупленности; «По возвращению в канал», если шорт ловится «в максимум».
- Прогнать на бэктесте минимум на 3–6 месяцах истории.
Главное — не путать фильтр и вход. MFI можно поставить и как индикатор входа, и как фильтр поверх другого входа (например, входа по EMA-пересечению или по выходу из верхней полосы Боллинджера). Граница 40 применяется одинаково в обоих случаях: задача фильтра — отсекать шорты, выпущенные «в уже отыгранное движение».
Готовые пресеты с MFI
В библиотеке стратегий ITradingBot уже есть конструкции с MFI — их можно брать как отправную точку:
1. %B + MFI (двойное подтверждение по Боллинджеру), 4h. Вход по выходу из нижней полосы Боллинджера(20, 2). Фильтры: MFI(10, 80/20) — для лонга разрешает вход только при MFI ниже 20; MFI «по росту/снижению» — лонг только когда MFI начинает расти; EMA(100); фандинг ниже 0.01%. Выход — верхняя полоса BB и MFI ≥ 70. Это классический лонг-пресет; для зеркального шорта поднимаем нижнюю границу MFI до 40.
2. BB Double Bottom (W-паттерн), 4h. Линии Боллинджера(20, 2), вход по выходу из канала. Фильтры включают MFI(14) «по росту/снижению» — на разворот денежного потока в пользу покупателей. Объём бара ниже среднего — давление продавцов ослабевает.
3. Объём как обязательный слой фильтрации. В методологии платформы предусмотрен стандартный набор слоёв стратегии: вход, режим рынка, тренд, волатильность, фильтр объёма (MFI / OBV / По объёму $) — для пробойных стратегий, выход. MFI здесь — тот самый фильтр шестого слоя.
Почему это работает
Три причины, по которым модификация 80/40 для шорта статистически предпочтительнее 80/20:
- Объём подтверждает движение. Пробой без объёма — подозрительный пробой. MFI или OBV в пробойных стратегиях уместны как фильтр; для шорта мы фактически требуем, чтобы давление продавцов ещё не «выдохлось» к моменту входа.
- Разные типы — потенциальное дополнение. Трендовый или ценовой сигнал на входе + объёмный фильтр на MFI — это два независимых измерения. Не дублирование, как было бы с парой RSI + Stochastic.
- Граница 40 убирает «серую зону». В диапазоне MFI 20–40 крипторынок чаще откупается, чем падает дальше. Шорт в этом диапазоне — отрицательное матожидание на длинной дистанции.
Слабые стороны MFI и где он не работает
Честный список ограничений, без которых нельзя:
- Низкий объём искажает сигнал. На неликвидных альтах и в ночные часы MFI прыгает на тонком стакане — границы пробиваются на пустом месте. Для иллюзорных альтов фильтр бесполезен, и тут лучше переключаться на ценовые осцилляторы.
- MFI запаздывает на сильных трендовых рывках. При длинном импульсе индикатор «прилипает» к границе 80 и сидит там часами. Шорт «по возвращению в канал» в такие моменты отдаёт серию убыточных входов до тех пор, пока движение не выдохнется.
- Граница 40 — не магия. Она сокращает число сделок и отсекает поздние шорты, но не превращает убыточную стратегию в прибыльную. Если базовый сигнал плох, фильтр MFI его не вытянет.
- Пара с RSI — лучшая, но не обязательная. RSI и MFI друг друга дополняют, но добавлять три и более осцилляторов в одну стратегию — путь к переоптимизации. Достаточно одного входа и одного-двух фильтров.
Какие таймфреймы подходят
MFI требует достаточно «толстых» баров, чтобы объём в каждом из них был статистически значим. Рабочие таймфреймы:
- 4h, 1D — оптимум. На дневках MFI(14) даёт 1–3 сигнала в неделю на ликвидном инструменте, и каждый из них опирается на накопленный объём.
- 1h — рабочий, но требует фильтра режима рынка (ADX или волатильность).
- 15m — на пределе. Граница 40 здесь особенно важна: на 15-минутках стандартная 20 пробивается на любом микро-импульсе.
- 5m и ниже — не для MFI. Объём в одной свече слишком мал, чтобы индикатор был осмысленным. Лучше использовать событийные индикаторы (Импульс 2.0, фандинг).
Пример сборки шорт-пресета
Конкретный шорт-пресет на BTCUSDT, 4h:
- Вход: MFI(14, 80/40), режим «По выходу из канала». Шорт срабатывает при пересечении MFI вниз через 80 — стандартное условие перекупленности.
- Фильтр режима: ADX(14), порог 20, условие «выше порога» — торгуем только в трендовом контексте.
- Фильтр тренда: EMA(200) на дневном ТФ, цена ниже EMA(200) — шортим только в нисходящем макро-контексте.
- Фильтр объёма: объём текущего бара выше среднего × 1.3 — пробой 80 подкреплён реальной активностью.
- Выход 1: MFI(14, 70/40) «по возвращению в канал» — закрытие, когда MFI заходит ниже 40 (давление продавцов ещё есть, но цель достигнута).
- Выход 2: EMA(21), цена закрывается выше EMA(21) — защитный выход на смене краткосрочного тренда.
Перед боевым запуском — бэктест минимум на 3–6 месяцах истории, желательно с захватом и трендового, и бокового участка рынка. Sharpe важнее абсолютной доходности: 30% годовых при просадке 15% лучше, чем 50% при просадке 80%.
Готовы протестировать?
На бесплатном тарифе Free платформы ITradingBot можно собрать пресет с MFI и прогнать на бэктесте — все индикаторы доступны без ограничения по времени. Системная подготовка по работе с объёмными осцилляторами — в видеокурсе или групповом потоке на itb.school.
Перед боевым запуском — бэктест минимум на 3–6 месяцах истории.
Финал
Money Flow Index — это не «улучшенный RSI», а индикатор другой природы: он измеряет деньги, а не цену. Стандартная настройка 80/20 пришла из эпохи, когда крипто-фьючерсов не существовало в принципе. Для шорта в крипте граница 20 слишком терпима — она пропускает сигналы в зоне 20–40, где рынок уже статистически разворачивается. Поднимая нижнюю границу до 40, мы превращаем MFI в честный фильтр перекупленности: меньше сделок, больше качества, никакого «шорта в дно».