Содержание статьи

Доказательства и область применения

Приведенные ниже определения проверены с использованием данных Fidelity, Sierra Chart и Chaikin Analytics. Накопление и распределение представляют собой интерпретацию расчета соотношения цены и объема, а не прямые наблюдения за идентификацией участников или подтвержденную доходность для предлагаемой схемы. [1] [2] [3]

Данные и рынкиСоответствующие бары OHLCV с действительными полями максимума, минимума, закрытия и объема. Версия, использующая тиковый объем для измерения активности обновления цены, должна быть обозначена отдельно.
Таймфреймы исследованияДля дневных и внутридневных версий требуются отдельные тесты. Длительность временных окон, указанная в этой статье, относится к исследовательским условиям, а не к оптимизированным рекомендациям.
Синтетический ряд CMF в диапазоне от −1 до 1 пересекает экспериментальный порог 0.05, а затем ослабевает. Это ряд значений индикатора, а не цена или чистый денежный поток.Открыть иллюстрацию в полном размере
Оригинальная синтетическая иллюстрация. Синтетический ряд CMF в диапазоне от −1 до 1 пересекает экспериментальный порог 0.05, а затем ослабевает. Это ряд значений индикатора, а не цена или чистый денежный поток.

Практическая последовательность действий

Порядок действий: Денежный поток Чайкина: положение закрытия с весом по объёму
Все шаги подробно описаны ниже. На каждом этапе нужно записывать причину отклонения при нехватке данных или невыполнении условий.
  1. Проверить OHLCVПроверьте согласованность диапазона, неотрицательный объём и пропущенные бары.
  2. Рассчитайте положение закрытияЗадайте правило для равных максимума и минимума и шкалу индикатора.
  3. Применить фиксированное окноИспользуйте завершенные наблюдения и положительный знаменатель.
  4. Подтвердите структуру ценыФильтр не делает недопустимый пробой допустимым.
  5. Сравните варианты взвешиванияСравните показатель CMF с невзвешенным местоположением закрытия после вычета затрат.

CMF измеряет положение закрытия, а не изменение между закрытиями

OBV присваивает объёму знак по изменению цены от предыдущего закрытия. CMF оценивает, находится ли текущее закрытие в верхней или нижней части собственного диапазона. Когда H больше L, множитель равен (2C−H−L)/(H−L): +1 на максимуме, −1 на минимуме и ноль посередине. [1] Поэтому день со снижением относительно вчерашнего закрытия может дать положительный вклад, если завершается близко к своему максимуму.

CMF делит сумму произведений множителя на объём на суммарный объём скользящего окна. Здесь используется шкала от −1 до 1. Некоторые продукты умножают результат на 100; Chaikin Analytics описывает шкалу ±100. [3] Порог 0.05 первой шкалы соответствует 5 второй. Без учёта единиц перенесённый порог может пропускать почти все случаи или почти ни одного.

Множитель описывает конечное положение внутри диапазона. Он не восстанавливает путь, пройденный через этот диапазон, или сторону, инициировавшую каждую сделку. Два бара с одинаковыми максимумом, минимумом, ценой закрытия и объемом дают одинаковый вклад в CMF, даже если последовательности транзакций и история потока ордеров у них сильно различаются.

До теста задайте правила для баров без диапазона и пропусков

Если максимум равен минимуму, исходная дробь не определена. Здесь предложено приравнивать множитель к нулю, сохраняя объём бара в знаменателе. Положение закрытия такого бара не даёт направленной информации. Другая платформа может исключать бар или применять иное правило; запишите правило и оцените чувствительность при частом появлении таких баров.

Отклоняйте данные, где максимум ниже минимума, закрытие вне записанного диапазона или объём отрицательный. При нулевом суммарном объёме в знаменателе результат недоступен, а не нейтрально равен нулю. Fidelity указывает 21 период как распространённую настройку. [1] [2] Окна 10, 20 или 50 — отдельные исследовательские варианты, которые нужно внести в журнал экспериментов.

В реализации с завершенными барами доступность начинается после получения всего окна и текущего наблюдения закрытия. Для повышения эффективности следует поддерживать текущие суммы числителя и знаменателя, но проверять их на соответствие простому расчету для всего окна. Небольшие ошибки вычитания могут накапливаться в длинных потоках данных, особенно когда данные содержат очень большие и очень малые величины.

for i in full_window(t, n=21):
    assert L[i] <= C[i] <= H[i] and V[i] >= 0
    multiplier[i] = 0 if H[i] == L[i] else (2*C[i]-H[i]-L[i])/(H[i]-L[i])
denominator = sum(V[i] for i in full_window(t,21))
cmf[t] = NA if denominator == 0 else sum(multiplier[i]*V[i] for i in full_window(t,21))/denominator
filter_ok = cmf[t] > 0.05  # proposed threshold, scale -1..1

Расчёт по трём барам и контрпример с гэпом

Короткое окно здесь служит только для показа арифметики. У бара A значения H=110, L=100, C=108 и V=100 дают множитель 0.6. У бара B значения H=112, L=102, C=104 и V=200 дают −0.6. У бара C значения H=L=C=105 и V=100 дают ноль по заданному правилу для бара без диапазона. CMF равен (60−120+0)/400=−0.15.

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

Пусть вчерашнее закрытие равно 110, а сегодня после гэпа вниз торговля дала H=101, L=99 и C=100.8. Множитель положительный, 0.8, хотя цена закрытия упала на 9.2. CMF напрямую не измеряет потери на гэпе. Система, принимающая любое положительное значение за бычий сигнал, может купить актив во время сильного снижения.

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

Отдельно проверьте фильтр пробоя и устойчивость положительного CMF

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

Вход происходит на следующем доступном для исполнения событии после закрытия. Поставьте стоп на уже известный уровень отмены структурного сценария. Если базовая версия использует цель 2R и выход через 20 баров, сохраните их в ветке без CMF. Иначе влияние отбора и изменения выхода смешивается, затрудняя сравнение.

Положительное значение не отменяет неудачную ценовую структуру. Кандидата следует аннулировать, когда выполняется его первоначальное условие недействительности. Если подтверждение поступает после истечения установленного срока, следует зарегистрировать истекшую возможность, а не продлевать окно задним числом. Тесты коротких позиций требуют собственного исполнения и предположений о заимствовании.

Перекрывающиеся окна устойчивости сильно зависят друг от друга. Четыре положительных наблюдения в пяти столбцах — это не четыре независимых голоса из разных источников. Избегайте преобразования количества коррелированных наблюдений в неподтвержденную вероятность или оценку достоверности.

Сопоставляйте дивергенцию с подтверждёнными пивотами цены

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

CMF — скользящее отношение. Выход наблюдения с большим объёмом из окна может изменить знак самого CMF даже при обычном текущем баре. Записывайте добавляемые и выбывающие вклады в числитель для объяснения пересечения. Этот механический эффект не обязательно означает новый приток денег.

При тестировании альтернативного варианта дивергенции используйте тот же детектор опорных точек, задержку подтверждения и политику парного сравнения, что и в контрольном варианте, основанном только на цене. В противном случае кажущаяся выгода может быть обусловлена другим временем событий, а не самим индикатором. Сохраняйте кандидатов, которые не прошли проверку до подтверждения, чтобы видимые победители не стали всей выборкой.

Подберите сравнения, выделяющие вклад взвешивания по объёму

Сравните CMF с невзвешенным средним тех же множителей местоположения закрытия для идентичных ценовых кандидатов. Это напрямую задает вопрос, добавляет ли взвешивание по объему полезную информацию помимо местоположения закрытия. Только после этого добавьте RVOL в качестве еще одного эксперимента; две величины, полученные на основе объема, не должны автоматически считаться независимыми подтверждениями.

Отдельно показывайте результаты для дней с гэпами, частоты баров без диапазона и окон, где доминируют немногие большие объёмы. До финального хронологического теста зафиксируйте окно и пороги. Учтите спред, проскальзывание и реальное исполнение на следующем событии; затем покажите чистое математическое ожидание, частоту и просадку.

Успешный расчет не означает успешную стратегию. Проверка должна сначала подтвердить правильность арифметических вычислений и временных меток доступности, а затем оценить прогностическую ценность на неизвестных данных. Зеленые индикаторные области на выигрышной акции не представляют собой репрезентативную выборку и не демонстрируют инвестиционного преимущества.

Частые ошибки

Положительная динамика CMF после значительного скачка вниз.

Закрытие в верхней части своего диапазона совместимо с большой потерей относительно предыдущего закрытия.

Игнорирование наблюдения, выходящего из окна

Смена знака может быть вызвана выбытием старого вклада из окна, а не необычной текущей активностью.

Принятие накопления за установление личности покупателя

Данная формула не позволяет установить, что институциональные инвесторы приобрели актив или что в него поступили чистые денежные средства.

Список проверки перед использованием метода

Отмечайте пункты после проверки на своих данных. Прогресс сохраняется в этом браузере и не подтверждает прибыльность стратегии.

0/7 пунктов

Частые вопросы

CMF — это то же самое, что и OBV?

Нет. CMF использует местоположение закрытия внутри текущего диапазона; OBV использует направление между последовательными закрытиями.

Подтверждает ли CMF выше нуля допустимость пробоя?

Это проверяемая характеристика. Улучшит ли она чистые результаты, зависит от определения события, рынка и издержек исполнения.

Источники исследования

Каждый источник подтверждает указанное рядом определение или доказательство. Псевдокод, искусственные примеры и предлагаемые параметры требуют отдельной проверки.

  1. Chaikin Money FlowFidelity. Определение, формула, распространённая настройка в 21 период и обычная интерпретация. Проверено: .
  2. Chaikin Money Flow — Studies ReferenceSierra Chart. Реализация на платформе расчета CMF. Проверено: .
  3. Chaikin Money FlowChaikin Analytics. Документация поставщика, разъясняющая шкалу ±100 и интерпретацию соотношения цены и объема. Проверено: .

Связанные методы

Примечание о рисках

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

Проверьте правила, прежде чем рисковать реальным капиталом

Проверьте возможности приложения, данные и каждую смоделированную сделку; сложные детекторы могут потребовать отдельной реализации.

Скачать Backtest в App Store