Stratégie de suivi de tendance basée sur la moyenne mobile de Hull et le true range


Date de création: 2024-01-15 15:26:08 Dernière modification: 2024-01-15 15:26:08
Copier: 0 Nombre de clics: 775
1
Suivre
1617
Abonnés

Stratégie de suivi de tendance basée sur la moyenne mobile de Hull et le true range

Aperçu

L’idée centrale de cette stratégie est d’identifier la direction de la tendance du marché en combinant la ligne moyenne de Hull et l’amplitude réelle de la vague (ATR) et d’entrer après la confirmation de la direction de la tendance. Plus précisément, il s’agit de calculer la différence entre la ligne moyenne de Hull d’un certain cycle et la ligne moyenne de Hull du cycle précédent.

Principe de stratégie

Cette stratégie est basée principalement sur deux types d’indicateurs: la ligne moyenne de la coque et l’ATR.

La Hull Average est un indicateur de suivi de tendance développé par le trader américain Alan Hull. La Hull Average est similaire à la moyenne mobile, mais elle est plus sensible et permet de capturer plus rapidement les tendances des changements de prix. La stratégie dispose d’un paramètre réglable, hullLength, pour contrôler la longueur du cycle de la Hull Average, afin de déterminer la direction de la tendance actuelle des prix en calculant la différence entre le cycle actuel et le cycle précédent.

ATR signifie Average True Range, c’est-à-dire l’amplitude réelle. Il reflète l’amplitude des fluctuations quotidiennes des prix. Lorsque les fluctuations augmentent, l’amplitude réelle augmente; lorsque les fluctuations diminuent, l’amplitude réelle diminue.

La logique de la stratégie est la suivante:

  1. Calculer la moyenne de la coque de la période actuelle (configuration HullLength) et la moyenne de la période précédente
  2. Calculer la différence entre les deux hullDiff = currentHullMA - previousHullMA
  3. Quand hullDiff > 0 est jugé comme une tendance à plusieurs têtes; quand hullDiff < 0 est jugé comme une tendance à tête nue
  4. En même temps, on calcule la valeur ATR pour une période donnée (à l’intérieur du paramètre atLength), qui sert d’indicateur de l’amplitude de la tendance
  5. Faire plus lorsque jugé comme une tendance à plusieurs têtes, et l’ATR est plus grand que le prix et le prix est plus grand que le prix avant la période de atrLength; Faire court lorsque jugé comme une tendance à vide, et l’ATR est moins que le prix et le prix est moins que le prix avant la période de atrLength
  6. Les signaux de péréquation sont jugés par le différentiel positif-négatif de hullDiff

Analyse des forces stratégiques

Cette stratégie présente les avantages suivants:

  1. En combinant le jugement de la tendance et les indicateurs de volatilité, on peut choisir d’entrer en bourse lorsque la tendance des prix est claire et que la volatilité augmente, pour éviter d’être piégé dans un marché en crise.
  2. La ligne moyenne de Hull est plus sensible aux changements de prix et peut rapidement déterminer la direction des nouvelles tendances.
  3. L’ATR peut refléter la volatilité et la chaleur du marché et servir de base pour le choix du moment d’entrée.
  4. Il y a plus de paramètres modifiables, qui peuvent être optimisés pour obtenir la meilleure combinaison de paramètres.

Analyse des risques

Cette stratégie présente aussi des risques:

  1. La ligne moyenne de la coque et l’ATR ne peuvent pas éviter complètement le problème de fausse percée, et il est toujours possible d’être piégé.
  2. Une mauvaise configuration des paramètres peut entraîner des transactions fréquentes ou insuffisamment sensibles, ce qui affecte l’efficacité de la stratégie.
  3. L’incapacité à faire face efficacement à des événements extrêmes, tels que la montée rapide, la percée ou la chute.

La réponse:

  1. La détente est nécessaire pour éviter d’être pris au piège.
  2. Optimiser les paramètres en les testant à plusieurs reprises pour les rendre plus adaptés aux différents environnements du marché.
  3. La stratégie de suspension est appliquée en cas d’urgence.

Direction d’optimisation

Il y a encore beaucoup à améliorer dans cette stratégie, principalement en ce qui concerne les points suivants:

  1. Testez différents paramètres de cycle de la ligne moyenne de Hull pour trouver le réglage de cycle le mieux adapté à l’environnement de marché actuel.
  2. Testez différentes combinaisons de paramètres ATR pour trouver le cycle qui capte le mieux la chaleur du marché.
  3. Essayez différents types de réglage ATR (RMA, SMA, EMA, etc.) pour voir ce qui fonctionne le mieux.
  4. Optimiser les conditions d’ouverture de position, par exemple en combinant les indicateurs de volatilité Reaction et ATR.
  5. Optimiser la méthode d’arrêt des pertes, en assouplissant la portée des pertes de manière appropriée, afin d’éviter d’être piégé.

Résumer

Cette stratégie intègre la capacité de suivi des tendances de la ligne moyenne de Hull et la capacité de jugement des indicateurs de chaleur de l’ATR, afin de filtrer certains signaux inefficaces. L’optimisation des paramètres de l’indicateur et l’utilisation des outils de gestion des risques peuvent encore renforcer l’efficacité de la stratégie.

Code source de la stratégie
/*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")