L'idée de base de cette stratégie est d'identifier les directions de tendance du marché en combinant la moyenne mobile de Hull et la plage moyenne réelle (ATR), et d'entrer en position après la confirmation de la direction de la tendance. Plus précisément, elle calcule la différence entre les moyennes mobiles de Hull d'une certaine période et la période précédente. Lorsque la différence augmente, elle indique une tendance haussière; lorsque la différence diminue, elle indique une tendance baissière. En même temps, l'indice ATR est utilisé pour déterminer l'amplitude.
Cette stratégie repose principalement sur deux types d'indicateurs: la moyenne mobile de la coque et l'ATR.
La moyenne mobile de Hull est un indicateur de suivi des tendances développé par le trader américain Alan Hull. À l'instar des moyennes mobiles, la moyenne mobile de Hull a une sensibilité plus élevée et peut capturer les changements de prix et les tendances plus rapidement.
L'ATR est l'abréviation de Average True Range. Il reflète l'amplitude des fluctuations quotidiennes des prix. Lorsque la volatilité augmente, l'ATR augmente; lorsque la volatilité diminue, l'ATR diminue. La stratégie définit des paramètres tels que atrLength et atrSmoothing pour contrôler le calcul de l'ATR.
Plus précisément, la logique de la stratégie est la suivante:
Les avantages de cette stratégie:
Quelques risques de cette stratégie:
Les solutions:
Il y a encore beaucoup de place pour l'optimisation:
Cette stratégie intègre la capacité de suivi de la tendance de Hull MA et la capacité de jugement de la chaleur d'ATR. Elle entre en position lorsque la tendance est confirmée et que la volatilité augmente pour filtrer certains signaux invalides. Une amélioration supplémentaire peut être obtenue par l'optimisation des paramètres et une meilleure gestion des risques. En résumé, cette stratégie combine plusieurs facteurs de suivi de la tendance et de jugement de la chaleur. Lorsque les paramètres sont affinés, elle peut fournir de bons résultats.
/*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")