
Стратегия Momentum Direction Divergence Strategy (Стратегия дивергенции направления импульса) - одна из технологий, описанных Уильямом Блау в его книге “Момент, направление и дивергенция”. Стратегия фокусируется на трех ключевых аспектах: импульсе, направлении и дивергенции. Г-н Блау был электрическим инженером, а затем стал трейдером, и он глубоко изучил связь между ценой и динамикой. На этой основе он проанализировал недостатки других осцилляторов и ввел несколько инновационных технологий, включая новое толкование осциллятора.
Эта стратегия наносит показатель направленного рассеяния энергии (Ergotic CSI) и его гладкую линию, используемую для фильтрации шума.
В начале кода определяется функция fADX с самостоятельным адаптационным индексом движения (((ADX), которая принимает параметр Len, обозначающий плавный цикл. Эта функция рассчитывает реальный диапазон (((TR) в качестве дифференциала, рассчитывает множественное число движений и множественное число движений в виде молекул, затем выделяет полученное соотношение, обозначающее относительную интенсивность множественного и пустого голов.
Затем следует определение параметров стратегии. r - это параметр сглаживания ATR, Length - это длина ADX, BigPointValue - это величина большого пункта, SmthLen - это длина сглаживания CSI, SellZone и BuyZone - это соответствующие продажи и покупки.
Ключевая логика в вычислении CSI. Сначала рассчитывается реальная волатильность ATR и ADX. Затем рассчитывается коэффициент наказания K, который включает в себя величины больших точек, ATR и ADX.
Определить направление сделки на основе значения SMA в CSI. Если выше BuyZone, то это будет больше, а если ниже SellZone, то это будет пусто. Нарисуйте кривую CSI и ее SMA и обозначьте цветами различные торговые зоны.
Эта стратегия объединяет преимущества динамического показателя ATR и трендового показателя ADX, учитывая как волатильность рынка, так и степень тренда, избегая ограничений только использования ATR и только ADX. Дизайн коэффициента наказания K хитро объединяет эти показатели в зависимости от величины больших точек.
Стандартный остаток nRes включает в себя использование информации о ценах, которая фокусируется не только на динамических тенденциях, но и на абсолютных уровнях цен, что, в отличие от обычного осциллятора, повышает эффективность стратегии.
Гладкая обработка и определение сегментов обеспечивают четкие торговые сигналы для принятия стратегических решений, что благоприятно влияет на реальные операции.
Эта стратегия чувствительна к параметрам, таким как длина циклов ATR и ADX, настройка величины величины, параметры плавления CSI, которые влияют на эффективность стратегии. Для определения подходящей комбинации параметров необходимо провести большое количество обратных измерений.
CSI является новым предлагаемым осциллятором, эффективность которого требует проверки на более разных рынках. Неэффективность этого показателя может повлиять на прибыльность стратегии.
Стратегия сама по себе не имеет механизма остановки убытков, она напрямую выполняет дополнительные позиции в соответствии с сигналами CSI. Существует определенная степень риска, которую необходимо использовать в сочетании с остановкой убытков.
Можно проверить комбинацию параметров в разных рынках, чтобы найти наиболее универсальную комбинацию.
Можно ввести механизм динамической длины ADX-циклов, чтобы скорректировать параметры ADX в зависимости от состояния рынка.
В сочетании с другими индикаторами осциллятора можно определить время покупки и продажи, что делает стратегию более устойчивой. Например, эффект распространения внизу, отклонения сверху и т. Д.
Это может быть добавлено к стратегии по прекращению убытков, чтобы улучшить общую стратегию.
Стратегия динамического направленного распределения объединяет преимущества различных индикаторов, используя ценовые, динамические и тенденционные измерения для разработки и торговли CSI-индикаторами. Параметры этой стратегии настроены гибко, эффективно, заслуживают дальнейшего тестирования и оптимизации и могут стать полезным инструментом для количественной торговли.
/*backtest
start: 2022-12-20 00:00:00
end: 2023-12-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 20/06/2018
// This is one of the techniques described by William Blau in his book
// "Momentum, Direction and Divergence" (1995). If you like to learn more,
// we advise you to read this book. His book focuses on three key aspects
// of trading: momentum, direction and divergence. Blau, who was an electrical
// engineer before becoming a trader, thoroughly examines the relationship between
// price and momentum in step-by-step examples. From this grounding, he then looks
// at the deficiencies in other oscillators and introduces some innovative techniques,
// including a fresh twist on Stochastics. On directional issues, he analyzes the
// intricacies of ADX and offers a unique approach to help define trending and
// non-trending periods.
// This indicator plots Ergotic CSI and smoothed Ergotic CSI to filter out noise.
//
// You can change long to short in the Input Settings
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
fADX(Len) =>
up = change(high)
down = -change(low)
trur = rma(tr, Len)
plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, Len) / trur)
minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, Len) / trur)
sum = plus + minus
100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), Len)
strategy(title="Ergodic CSI Backtest")
r = input(32, minval=1)
Length = input(1, minval=1)
BigPointValue = input(1.0, minval=0.00001)
SmthLen = input(5, minval=1)
SellZone = input(0.004, minval=0.00001)
BuyZone = input(0.024, minval=0.001)
reverse = input(false, title="Trade reverse")
hline(BuyZone, color=green, linestyle=line)
hline(SellZone, color=red, linestyle=line)
source = close
K = 100 * (BigPointValue / sqrt(r) / (150 + 5))
xTrueRange = atr(1)
xADX = fADX(Length)
xADXR = (xADX + xADX[1]) * 0.5
nRes = iff(Length + xTrueRange > 0, K * xADXR * xTrueRange / Length,0)
xCSI = iff(close > 0, nRes / close, 0)
xSMA_CSI = sma(xCSI, SmthLen)
pos = iff(xSMA_CSI > BuyZone, 1,
iff(xSMA_CSI <= SellZone, -1, nz(pos[1], 0)))
possig = iff(reverse and pos == 1, -1,
iff(reverse and pos == -1, 1, pos))
if (possig == 1)
strategy.entry("Long", strategy.long)
if (possig == -1)
strategy.entry("Short", strategy.short)
barcolor(possig == -1 ? red: possig == 1 ? green : blue )
plot(xCSI, color=green, title="Ergodic CSI")
plot(xSMA_CSI, color=red, title="SigLin")