Stratégie de bandes moyennes mobiles multiples


Date de création: 2023-12-18 12:29:19 Dernière modification: 2023-12-18 12:29:19
Copier: 1 Nombre de clics: 807
1
Suivre
1621
Abonnés

Stratégie de bandes moyennes mobiles multiples

Aperçu

Une stratégie de bande mobile est une stratégie de suivi de la tendance basée sur plusieurs moyennes mobiles. Elle surveille simultanément les moyennes mobiles rapides et les moyennes mobiles lentes et génère un signal de transaction lorsque le prix franchit la bande moyenne mobile.

Principe de stratégie

La stratégie utilise simultanément cinq moyennes mobiles rapides (lignes 5, 8, 13, 20, et 30) et quatre moyennes mobiles lentes (lignes 45, 70, 105, et 150), avec les moyennes mobiles internes constituées par les lignes rapides et les moyennes mobiles externes constituées par les lignes lentes. Un signal d’achat est généré lorsque le prix franchit la bande interne en haut et un signal de vente lorsque le prix franchit la bande interne en bas.

En outre, la stratégie juge également les tendances à long terme. Un signal d’achat n’est envisagé que si le prix est au-dessus de la moyenne mobile à 200 jours. Au contraire, un signal de vente n’est envisagé que si le prix est inférieur à la moyenne mobile à 200 jours.

Analyse des avantages

Cette stratégie présente les avantages suivants:

  1. La conception de multiples moyennes mobiles permet de déterminer avec précision la direction de la tendance. Les moyennes mobiles intérieures et extérieures combinées avec des moyennes rapides et lentes permettent de reconnaître les tendances de longue et moyenne durée.

  2. Le mécanisme de rupture continue permet de filtrer efficacement les fausses ruptures. En même temps, la plupart des ruptures rapides de la ligne moyenne sont requises, ce qui assure un changement de tendance.

  3. Il est préférable d’évaluer les tendances à long terme et d’éviter d’être pris en compte lors de la consolidation. En fonction du jugement de la ligne de 200 jours, il est préférable d’envisager la création d’une position uniquement lorsque la tendance est inversée.

  4. Le suivi de la tendance et le sur-achat et le sur-vente sont combinés. La moyenne mobile a une fonction de suivi de la tendance et un indicateur de sur-achat et de sur-vente pour définir un point d’arrêt et contrôler le risque.

Analyse des risques

La stratégie présente principalement les risques suivants:

  1. Le risque de rupture de la faille. Lorsque le prix a une fausse rupture, la stratégie n’est pas en mesure d’éviter complètement la production de pertes.

  2. Risque de perte en cas de tendance à la volatilité. Lorsque la situation est volatile sur une longue période, le point d’arrêt peut être fréquemment atteint, ce qui augmente les pertes.

  3. Les paramètres de l’optimisation des risques. Les paramètres de la moyenne mobile mal configurés peuvent également entraîner des erreurs dans les signaux de négociation, ce qui augmente les pertes.

La réponse:

  1. Laissez suffisamment d’espace au prix pour qu’il puisse fonctionner. Ou utilisez l’arrêt de ljetrail pour que la ligne de stop fonctionne avec le prix.

  2. Augmenter les indicateurs de jugement de tendance pour éviter de se positionner sans direction pendant les périodes de choc. Par exemple, filtrer avec des indicateurs tels que le DMI, le MACD.

  3. Choisir la meilleure combinaison de paramètres en utilisant le rétro-analyse historique et l’optimisation des paramètres. Suivre l’effet des paramètres sur le disque réel et effectuer une optimisation dynamique.

Direction d’optimisation

Cette stratégie peut être optimisée à partir des dimensions suivantes:

  1. Optimiser les paramètres des moyennes mobiles pour choisir le meilleur nombre de périodes. La meilleure combinaison de paramètres peut être trouvée en relançant les moyennes mobiles de différents nombres de périodes.

  2. Augmenter le filtrage des indicateurs de jugement de tendance. Par exemple, l’indicateur RSI pour juger de l’achat et de la vente excessive, la courbe de Brin pour juger de la rupture de la voie. Évitez de faire des positions aveugles lorsque la tendance est incertaine.

  3. Utilisation d’une moyenne mobile adaptative. Optimisation en temps réel des paramètres de la moyenne mobile en fonction des variations et des fluctuations du marché, afin de mieux s’adapter à la situation actuelle du marché.

  4. L’utilisation de modèles d’apprentissage automatique pour déterminer la probabilité de tendance. L’établissement de modèles de probabilité pour évaluer la probabilité de réussite de la percée et aider les systèmes de décision à déterminer le moment de l’entrée.

  5. Optimiser les stratégies de stop loss pour mieux suivre les prix. Par exemple, un stop loss traillig ou un stop loss automatique à l’échelle réduite, pour rendre la ligne de stop loss plus intelligente.

Résumer

La stratégie de la bande de moyenne mobile est l’une des stratégies de suivi de tendance les plus courantes. Elle combine à la fois la ligne rapide et la ligne lente pour juger de la tendance de la ligne moyenne longue et définit un mécanisme de filtrage de rupture en continu pour décider de l’entrée.

Code source de la stratégie
//@version=4
strategy(title="Moving Average Ribbon", shorttitle="MA Ribbon", overlay=true)
src = input(close, type=input.source, title="Source")
matype = input(title="Input one in lowercase: sma, ema, wma, trima, zlema, dema, tema, or hma", type=input.string, defval="trima")
// possible values: sma, ema, wma, trima, zlema, dema, tema, hma (hull ma)



trima(_src, _len) =>
    sma(sma(_src, _len), _len)
hma(_src, _len) =>
    wma(2 * wma(_src, _len / 2) - wma(_src, _len), round(sqrt(_len)))
dema(_src, _len) =>
    2 * ema(_src, _len) - ema(ema(_src, _len), _len)
tema(_src, _len) =>
    3 * ema(_src, _len) - 3 * ema(ema(_src, _len), _len) + 
       ema(ema(ema(_src, _len), _len), _len)
zlema(_src, _len) =>
    ema(_src, _len) + ema(_src, _len) - ema(ema(_src, _len), _len)

ma(_src, _len) =>
    hma__1 = hma(_src, _len)
    ema_1 = ema(_src, _len)
    sma_1 = sma(_src, _len)
    wma_1 = wma(_src, _len)
    trima__1 = trima(_src, _len)
    zlema__1 = zlema(_src, _len)
    dema__1 = dema(_src, _len)
    tema__1 = tema(_src, _len)
    matype == "hma" ? hma__1 : matype == "ema" ? ema_1 : matype == "sma" ? sma_1 : 
       matype == "wma" ? wma_1 : matype == "trima" ? trima__1 : 
       matype == "zlema" ? zlema__1 : matype == "dema" ? dema__1 : tema__1

ma05 = ma(src, 5)
ma08 = ma(src, 8)
ma13 = ma(src, 13)
ma20 = ma(src, 20)
ma30 = ma(src, 30)
ma45 = ma(src, 45)
ma70 = ma(src, 70)
ma105 = ma(src, 105)
ma150 = ma(src, 150)
ma200 = ma(src, 200)




maColor(ma, maRef) =>
    if change(ma) <= 0 and ma05 < maRef
        color.new(color.red, 20)
    else
        if change(ma) >= 0 and ma05 > maRef
            color.new(color.navy, 20)
        else
            if change(ma) < 0 and ma05 > maRef
                color.new(color.red, 20)
            else
                if change(ma) >= 0 and ma05 < maRef
                    color.new(color.navy, 20)
                else
                    color.gray


aboveConfirmed(x,maRef)=>
    above=true
    for i=1 to x
        if close[i]<maRef[i] and not (close[i]>ma200[i]*1.01) and not (ma05[i]>ma105[i]*1.015)
            above:=false
    above


aboveMost(x,len)=>
    above=0
    boolean=false
    if close[len]>ma05[len]
        above:=above+1
    if close[len]>ma08[len]
        above:=above+1
    if close[len]>ma13[len]
        above:=above+1
    if close[len]>ma20[len]
        above:=above+1
    if close[len]>ma30[len]
        above:=above+1
    if close[len]>ma45[len]
        above:=above+1
    if close[len]>ma70[len]
        above:=above+1
    if close[len]>ma105[len]
        above:=above+1
    if close[len]>ma150[len]
        above:=above+1
    if close[len]>ma200[len]
        above:=above+1
    if(above>=x)
        boolean:=true
    boolean
    
belowMost(x,len)=>
    above=0
    boolean=false
    if close[len]<ma05[len]
        above:=above+1
    if close[len]<ma08[len]
        above:=above+1
    if close[len]<ma13[len]
        above:=above+1
    if close[len]<ma20[len]
        above:=above+1
    if close[len]<ma30[len]
        above:=above+1
    if close[len]<ma45[len]
        above:=above+1
    if close[len]<ma70[len]
        above:=above+1
    if close[len]<ma105[len]
        above:=above+1
    if close[len]<ma150[len]
        above:=above+1
    if close[len]<ma200[len]
        above:=above+1
    if(above>=x)
        boolean:=true
    boolean
        
        
belowConfirmed(x,maRef)=>
    below=true
    for i=1 to x
        if close[i]>maRef[i] and not (close[i]<maRef[i]*0.99) and not (ma05[i]<ma105[i]*0.985)
            below:=false
    below
            
            
//plotshape(aboveConfirmed(5,ma150),color=color.navy,location=location.abovebar,style=shape.triangleup,size=size.large,title="above",text="above")
            
plot(ma05, color=maColor(ma05, ma150), style=plot.style_line, title="MMA05", linewidth=2)
plot(ma08, color=maColor(ma08, ma150), style=plot.style_line, title="MMA08", linewidth=1)
plot(ma13, color=maColor(ma13, ma150), style=plot.style_line, title="MMA13", linewidth=1)
plot(ma20, color=maColor(ma20, ma150), style=plot.style_line, title="MMA20", linewidth=1)
plot(ma30, color=maColor(ma30, ma150), style=plot.style_line, title="MMA30", linewidth=1)
plot(ma45, color=maColor(ma45, ma200), style=plot.style_line, title="MMA45", linewidth=1)
plot(ma70, color=maColor(ma70, ma200), style=plot.style_line, title="MMA70", linewidth=2)
plot(ma105, color=maColor(ma105, ma200), style=plot.style_line, title="MMA105", linewidth=2)
plot(ma150, color=maColor(ma150, ma200), style=plot.style_line, title="MMA150", linewidth=3)
plot(ma200, color=maColor(ma200, ma200), style=plot.style_line, title="MM200", linewidth=3)


closeLong=belowMost(6,1) and belowMost(6,2) and belowMost(6,3)
closeShort=aboveMost(6,1) and aboveMost(6,2) and aboveMost(6,3)

isAbove=aboveConfirmed(5,ma200)
strategy.entry("short", false, when=belowConfirmed(3,ma200) and belowMost(8,1) and belowMost(8,2) and belowMost(8,3))
strategy.entry("long", true, when=aboveConfirmed(3,ma200) and aboveMost(8,1) and aboveMost(8,2) and aboveMost(8,3))




strategy.close("long",when=closeLong)
strategy.close("short",when=closeShort)