Основная идея этой стратегии заключается в том, чтобы определить направления тренда рынка путем сочетания скользящей средней и средней истинной диапазоны (ATR) и ввести позиции после подтверждения направления тренда. В частности, он рассчитывает разницу между скользящими средними Hull определенного периода и предыдущего периода. Когда разница растет, это указывает на бычий тренд; когда разница снижается, это указывает на медвежий тренд. В то же время индекс ATR используется для определения амплитуды. Он вводит позиции, когда направление тренда подтверждается и амплитуда продолжает расширяться.
Эта стратегия в основном основана на двух типах показателей: скользящей средней стоимости корпуса и ATR.
Движущаяся средняя Хулла (англ. Hull moving average) - индикатор тренда, разработанный американским фьючерсным трейдером Аланом Хуллом (Alan Hull).
ATR означает средний истинный диапазон. Он отражает амплитуду ежедневных колебаний цен. Когда волатильность увеличивается, ATR повышается; когда волатильность снижается, ATR падает. Стратегия устанавливает такие параметры, как atrLength и atrSmoothing, чтобы контролировать расчет ATR. А ATR изображается на графике как один из этапов для записей.
В частности, логика стратегии заключается:
Преимущества этой стратегии:
Некоторые риски этой стратегии:
Решения:
Есть еще много возможностей для оптимизации:
Эта стратегия объединяет потенциал Hull MA и способность ATR оценивать температуру. Она входит в позиции, когда тренд подтверждается и волатильность повышается, чтобы отфильтровать некоторые недействительные сигналы. Дальнейшее улучшение может быть достигнуто путем оптимизации параметров и лучшего управления рисками.
/*backtest start: 2024-01-07 00:00:00 end: 2024-01-14 00:00:00 period: 10m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 // Hull cross and ATR strategy("Hull cross and ATR", shorttitle="H&ATR", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_order_fills=true, calc_on_every_tick=true, pyramiding=0) keh=input(title="Hull Length",defval=50) length = input(title="ATR Length", defval=50, minval=1) smoothing = input(title="ATR Smoothing", defval="RMA", options=["RMA", "SMA", "EMA", "WMA"]) p=input(ohlc4,title="Price data") n2ma=2*wma(p,round(keh/2)) nma=wma(p,keh) diff=n2ma-nma sqn=round(sqrt(keh)) n2ma1=2*wma(p[1],round(keh/2)) nma1=wma(p[1],keh) diff1=n2ma1-nma1 sqn1=round(sqrt(keh)) n1=wma(diff,sqn) n2=wma(diff1,sqn) ma_function(source, length) => if smoothing == "RMA" rma(p, length) else if smoothing == "SMA" sma(p, length) else if smoothing == "EMA" ema(p, length) else wma(p, length) plot(ma_function(tr(true), length), title = "ATR", color=black, transp=50) closelong = n1<n2 if (closelong) strategy.close("buy") closeshort = n1>n2 if (closeshort) strategy.close("sell") if (ma_function(tr(true), length)<p and p>p[length] and n1>n2) strategy.entry("buy", strategy.long, comment="BUY") if (ma_function(tr(true), length)>p and p<p[length] and n1<n2) strategy.entry("sell", strategy.short, comment="SELL")