Basé sur la stratégie de croisement des moyennes mobiles rapides et lentes


Date de création: 2023-11-22 16:38:26 Dernière modification: 2023-11-22 16:38:26
Copier: 0 Nombre de clics: 624
1
Suivre
1621
Abonnés

Basé sur la stratégie de croisement des moyennes mobiles rapides et lentes

Aperçu

La stratégie de croisement des moyennes mobiles est une stratégie de négociation quantitative simple et efficace basée sur les moyennes mobiles. Elle utilise les croisements des moyennes mobiles rapides et des moyennes mobiles lentes comme signaux d’achat et de vente. Elle génère un signal d’achat lorsque la ligne rapide franchit la ligne lente à partir du bas et un signal de vente lorsque la ligne rapide franchit la ligne lente à partir du haut.

Principe de stratégie

La logique centrale de cette stratégie est d’utiliser les moyennes mobiles pour juger de la tendance du marché. Les moyennes mobiles ont en elles-mêmes la fonction d’influencer le bruit du marché au hasard. Les moyennes mobiles rapides sont plus rapides pour répondre aux changements de prix et refléter les tendances les plus récentes, tandis que les moyennes mobiles lentes sont plus lentes pour répondre aux changements de prix les plus récents et représentent les tendances à moyen et long terme.

Plus précisément, la stratégie définit d’abord une moyenne mobile rapide sig1 et une moyenne mobile lente sig2 ≠ puis juge le point d’achat et de vente en fonction de la relation croisée entre sig1 et sig2 ≠ génère un signal d’achat longCondition lorsque sig1 dépasse sig2 par le bas; génère un signal de vente shortCondition lorsque sig1 dépasse sig2 par le haut ≠ la stratégie ensuite commande des ordres lorsque les conditions d’achat et de vente sont remplies, et définit des ordres stop-loss et stop-exit

Analyse des avantages

Les avantages de cette stratégie sont évidents:

  1. La logique est simple, facile à comprendre et à mettre en œuvre
  2. Adaptation des paramètres avec souplesse et adaptation aux différentes conditions du marché
  3. Peut être combiné avec d’autres indicateurs pour améliorer la stabilité des signaux filtrés
  4. La combinaison EMA15-EMA30 a un taux de victoire de 83% sur les données de jour EURCHF

Analyse des risques

Cette stratégie comporte aussi des risques:

  1. Les effets de la scie à fouet sont graves et les paramètres de stop-loss sont importants.
  2. Les effets négatifs de la crise boursière
  3. Les variétés et les cycles doivent être testés et calibrés à plusieurs reprises.

Les mesures d’optimisation:

  1. Ajouter d’autres indicateurs de jugement et éviter le whipsaw
  2. Adaptation des types et des paramètres des moyennes mobiles aux différentes variétés
  3. Optimiser le ratio de stop loss et de stop loss pour maîtriser les risques

Résumer

La stratégie de croisement des moyennes mobiles est une stratégie de quantification logiquement simple et pratique. Grâce à l’ajustement des paramètres et à l’optimisation appropriée, elle permet de maintenir des profits stables dans une variété d’environnements de marché.

Code source de la stratégie
/*backtest
start: 2023-11-14 00:00:00
end: 2023-11-16 04:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
// Simple yet effective MA cross strategy.
// You'll have to tune the parameters to get an optimal win ratio.
// If JPY or XAU or any other currency with pips defined as the 
// second decimal digit are involved, do not forget to set the respective flag on.
//
// Created by vitelot/yanez/Vts, who's the same fellow with different user names
// December 2018 -- Merry Xmas
//
strategy("MA cross strategy Vts", overlay=true, initial_capital=1000, currency="EUR", pyramiding=0)

yr  = input(2016, title="Starting year to analyse")
src = input(close, title="Source")
maType = input( defval="EMA", title="MA Type", options=["SMA","EMA","HMA","McG","WMA"])
//
isJPY = input(false, title="Is JPY or XAU involved?") // JPY and Gold have the pips defined as the 2 decimal digit

maPar1 = input(26, minval=1, title="MA fast period")
maPar2 = input(51, minval=2, title="MA slow period")

atrPar = input(14,minval=1, title="ATR period")
atrMulSL = input(1.5, title="SL ATR multiplicator")
atrMulTP = input(1.0, title="TP ATR multiplicator")

hma(sig, n) => // Hull moving average definition
    wma( 2*wma(sig,round(n/2))-wma(sig,n), round(sqrt(n)))

mcg(sig,length) => // Mc Ginley MA definition
    mg = 0.0
    mg := na(mg[1]) ? ema(sig, length) : mg[1] + (sig - mg[1]) / (length * pow(sig/mg[1], 4))

ma(t,sig,len) =>
    if t =="SMA"
        sma(sig,len)
    else
        if t == "EMA"
            ema(sig,len)
        else
            if t == "HMA"
                hma(sig,len)
            else
                if t == "McG" // Mc Ginley
                    mcg(sig,len)
                else
                    wma(sig,len)
                    
        
sig1 = ma(maType, src, maPar1)
sig2 = ma(maType, src, maPar2)

tickFactor = isJPY? 1e3: 1e5
sl = atrMulSL*atr(atrPar)*tickFactor
tp = atrMulTP*atr(atrPar)*tickFactor

plot(sig1, color=aqua, title="MA1", linewidth=2)
plot(sig2, color=orange, title="MA2", linewidth=2)

longCondition = crossunder(sig2, sig1) and year>=yr // change the >= to == if you like exact years not a range
if (longCondition)
    strategy.entry("Long", strategy.long, qty=1) // exit trade when SL and TP are hit
    strategy.exit("Exit Long", "Long", loss=sl, profit=tp)
if (crossunder(sig1, sig2)) // or when the short condition is met
    strategy.close("Long")

shortCondition = crossover(sig2,sig1) and year>=yr // change the >= to == if you like exact years not a range
if (shortCondition)
    strategy.entry("Short", strategy.short, qty=1)
    strategy.exit("Exit Short", "Short", loss=sl, profit=tp)
if (crossover(sig1,sig2))
    strategy.close("Short")