Stratégie du système de moyenne mobile à inversion oscillante


Date de création: 2023-10-18 12:23:13 Dernière modification: 2023-10-18 12:23:13
Copier: 2 Nombre de clics: 620
1
Suivre
1617
Abonnés

Stratégie du système de moyenne mobile à inversion oscillante

Aperçu

Cette stratégie utilise un système de courbe uniforme pour déterminer la direction de la tendance et, combinée à des indicateurs de volatilité, évite les marchés volatiles à faible volatilité et utilise des arrêts de choc pour la gestion des transactions.

Le principe

La stratégie juge la direction de la tendance en comparant la relation de position entre la moyenne rapide et la moyenne lente. Lorsque la moyenne rapide traverse la moyenne lente, regardez plus, regardez en bas. Afin d’éviter les marchés en tremblement, la stratégie a également introduit l’indicateur de la bande de blur. En calculant le taux de variation de la largeur de la bande de blur, une transaction est générée lorsque le taux de variation dépasse la barre définie.

La logique de négociation de la stratégie est la suivante:

  1. Calculer la moyenne rapide (default 20 jours) et la moyenne lente (default 50 jours)

  2. Calculer le taux de variation de la largeur de la bande de Brin (défaut de 40 jours, 2 fois l’écart standard).

  3. Lorsque la moyenne rapide traverse la moyenne lente, et que le taux de variation de la bande passante de Brin est supérieur au seuil de réglage (default 9%), un signal multiconducteur est généré.

  4. Lorsque la moyenne rapide traverse la moyenne lente, et que le taux de variation de la bande passante de Brin est supérieur au seuil de réglage (default 9%), un signal de tête vide est généré.

  5. Calculer le canal de vide de Chandelier comme point d’arrêt.

  6. Le stop multiple est le prix maximal - ATR*Le nombre de fois, le stop loss est le prix minimum + ATR*Le double.

Les avantages

  1. L’utilisation d’un système linéaire pour déterminer la direction de la tendance permet de suivre efficacement les tendances.

  2. L’introduction du taux de variation de la bande passante Brin éviterait les chocs sur le marché et réduirait les transactions inutiles.

  3. L’utilisation d’un arrêt de secousse permet d’arrêter les dégâts en temps opportun et d’éviter d’être pris dans les secousses.

  4. Il est possible d’ajuster plusieurs paramètres et d’optimiser pour différents marchés.

  5. La logique de la stratégie est claire et compréhensible, ce qui facilite l’apprentissage.

Les risques

  1. Le système linéaire est en retard et risque de manquer l’occasion d’un retour rapide.

  2. Une mauvaise configuration des paramètres de la bande de Bryn peut filtrer les signaux de transaction valides.

  3. Les stops de choc trop sensibles peuvent entraîner des transactions trop fréquentes.

  4. L’optimisation des paramètres peut entraîner un risque de détention.

  5. Le gouvernement n’est pas en mesure de s’adapter aux changements radicaux du marché causés par des événements majeurs.

Direction d’optimisation

  1. Il est possible de tester des combinaisons linéaires moyennes de différents paramètres pour trouver le paramètre optimal.

  2. Il est possible de tester les paramètres de la bande de Bryn sur différentes périodes pour trouver le meilleur effet de filtrage des ondes.

  3. La qualité du signal peut être améliorée par la combinaison d’autres indicateurs pour la confirmation d’entrée.

  4. La stratégie de stop loss dynamique peut être introduite pour mieux suivre le marché.

  5. Les paramètres d’optimisation automatique peuvent être combinés avec les technologies d’apprentissage automatique pour s’adapter aux changements du marché.

Résumer

La stratégie intègre le système de linéaire uniforme, l’indicateur de la ceinture de Brin et la technologie de stop-loss oscillation, formant un système de suivi de tendance relativement stable. Les paramètres d’optimisation permettent d’obtenir de bons effets stratégiques. Cependant, il faut rester vigilant contre le risque de revirement de tendance et de choc du marché, et des technologies telles que l’apprentissage automatique peuvent encore améliorer la stabilité de la stratégie.

Code source de la stratégie
/*backtest
start: 2022-10-11 00:00:00
end: 2023-10-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © juanchez

//@version=4
strategy("CHI", overlay = true, close_entries_rule = "ANY")

n = input(title= "highest high o lowest low period", defval= 22)
f= input(title= "multiplicador", defval= 4)
long = highest(high, n) - atr(n)*f
short= lowest(low, n) + atr(n)*f
plot(long, color= color.red)
plot(short, color= color.green)

//moving averages
period= input(title= "moving averages period", defval= 50)
period2= input(title= "moving averages period2", defval= 20)
type= input(title= "moving averages type", options= ["sma", "ema"], defval= "ema")

//moving average function
mo(p, t) =>
    if t == "sma"
        sma(close[barstate.islast ? 1: 0], p)
    else  if t== "ema"
        ema(close[barstate.islast ? 1: 0], p)

m= mo(period, type)
m2= mo(period2, type)

trend= m2 > m 

plot(m, color = color.maroon, linewidth = 3)
plot(m2, linewidth= 3)


//BOLLINGER BANDS ENTRIES
bb1_period= input(title= "Bollinger bands 1 period", defval=40, minval=1)
bb1_source=input(title="Bollinger band 1 source", defval=close)
bb1_multi=input(title="Bollinger Bands 1 factor", defval=2, minval=1, step=0.1)
show_bb1= input(title="Show Bollinger bands 1", defval=false)
//BOLLINGER BANDS
_bb(src, lenght, multi)=>
    float moving_avg= sma(src[barstate.islast? 1: 0], lenght)
    float deviation= stdev(src[barstate.islast? 1: 0], lenght)
    float lowerband = moving_avg - deviation*multi
    float upperband = moving_avg + deviation*multi
    
    [moving_avg, lowerband, upperband]
    
[bb1, lowerband1, upperband1]= _bb(bb1_source,  bb1_period, bb1_multi)

//FIRST BAND    
plot(show_bb1? bb1 : na, title="BB1 Moving average", linewidth= 3, color= color.fuchsia)
plot(show_bb1? upperband1 : na, title="BB1 Upper Band", linewidth= 3, color= color.green)
plot(show_bb1? lowerband1 : na, title="BB1 Lower Band", linewidth= 3, color= color.red)

//BB's Width threshold 
thresh= input(title= "widen %", defval= 9, minval = 0, step = 1, maxval= 100)

widht= (upperband1 - lowerband1)/bb1
roc= change(widht)/widht[1]*100
cross=crossover(roc, thresh)

// entry
//long
elong= input(true, title= "enable long")
longcondition= m2 > m and cross and elong

//short
eshort= input(true, title= "enable short")
shortcondition= m2 < m and cross and eshort


plotshape(longcondition? true: false , location= location.belowbar, style= shape.labelup, size= size.small, color= color.green, text= "Buy", textcolor= color.white)
plotshape(shortcondition? true: false , location= location.abovebar, style= shape.labeldown, size= size.small, color= color.red, text= "Sell", textcolor= color.white)

out= crossunder(close, long)
outt= crossover(close, short)

strategy.entry("long", strategy.long, when = longcondition)
strategy.close("long", when = out)

strategy.entry("short", strategy.short, when = shortcondition)
strategy.close("short", when = outt)