Stratégie de trading à double piste avec moyenne mobile


Date de création: 2024-02-29 14:54:25 Dernière modification: 2024-02-29 14:54:25
Copier: 1 Nombre de clics: 668
1
Suivre
1617
Abonnés

Stratégie de trading à double piste avec moyenne mobile

Aperçu

La stratégie de trading à double voie sur les moyennes mobiles est une stratégie de trading de tendance qui suit les signaux de croisement des moyennes mobiles doubles. La stratégie utilise à la fois les moyennes mobiles indicielles ((EMA) et les moyennes mobiles pondérées ((WMA) comme indicateurs de signaux de trading.

Principe de stratégie

Les signaux de trading de cette stratégie proviennent d’une fourche dorée avec une courte EMA de 10 cycles et une longue WMA de 20 cycles. Lorsque la courte EMA traverse la longue WMA, cela signifie que la tendance est inversée de bas en haut, faisant plus; lorsque la courte EMA traverse la longue WMA, cela signifie que la tendance est inversée de haut en bas, faisant moins.

La stratégie commence par déterminer la direction de la transaction, puis définit un stop-loss situé au-dessous ou au-dessus du prix d’entrée à une distance de 1 cycle ATR, tout en définissant deux positions de stop-loss, le premier stop-loss situé au-dessus ou au-dessous du prix d’entrée à une distance de 1 ATR, le second stop-loss situé au-dessus ou au-dessous des 2 ATR. Lorsque le premier stop-loss est déclenché, le reste de la position est réglé avec le deuxième stop-loss et le stop-loss mobile.

La logique du stop-loss mobile est que, dès que le prix le plus élevé ou le prix le plus bas touche le premier stop-loss, le stop-loss est déplacé entre le maximum de profit et le prix d’entrée, afin de bloquer les profits.

Les avantages

La stratégie utilise la fonction de dénoyau de doubles glissades des moyennes mobiles pour éliminer efficacement les fluctuations aléatoires de la situation, identifier les signaux de tendance de la ligne médiane et longue et éviter d’être piégé. La mise en place de deux arrêts par lots simultanément augmente la marge bénéficiaire de la stratégie et permet de maximiser les bénéfices. Le mécanisme de stop-loss mobile permet également à la stratégie de bloquer les bénéfices et de réduire les pertes.

Les risques

Les moyennes mobiles elles-mêmes sont très retardées et peuvent générer un risque de signal manqué. La croisée de deux moyennes mobiles peut générer de nombreux faux signaux dans certains marchés et entraîner des pertes. Le paramétrage des arrêts de perte est un élément important de la stratégie.

En outre, la suspension mobile peut ne pas être une bonne protection dans les moments de forte volatilité.

Direction d’optimisation

  1. Il est possible de tester différents paramètres EMA et WMA pour trouver la meilleure combinaison de paramètres. Une EMA trop courte ou une WMA trop longue peuvent affecter la performance de la stratégie.

  2. Le multiplicateur ATR ou le stop-loss à points fixes peuvent être choisis en fonction des caractéristiques de la variété et du style de négociation.

  3. Il est possible de tester l’effet d’un stop-loss partiel et d’un stop-loss total.

  4. Il est possible d’améliorer la qualité du signal en introduisant d’autres indicateurs pour juger du signal filtré, en complément de l’EMA et du WMA.

Résumer

Les stratégies de négociation de deux voies sur des moyennes mobiles sont globalement plus robustes et fonctionnent mieux dans des conditions de tendance. Les performances de la stratégie sur le terrain peuvent être encore améliorées grâce à l’optimisation des paramètres, à l’optimisation des arrêts de perte et à l’amélioration de la qualité du signal. C’est une idée de stratégie potentielle qui mérite d’être approfondie et mise en pratique sur le terrain.

Code source de la stratégie
/*backtest
start: 2024-01-29 00:00:00
end: 2024-02-28 00:00:00
period: 3h
basePeriod: 15m
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/
// © gpadihar

//@version=4
strategy("SL1 Pips after TP1 (MA)", commission_type=strategy.commission.cash_per_order, overlay=true)

// Strategy
Buy  = input(true)
Sell = input(true)

// Date Range
start_year    = input(title='Start year'   ,defval=2020)
start_month   = input(title='Start month'  ,defval=1)
start_day     = input(title='Start day'    ,defval=1)
start_hour    = input(title='Start hour'   ,defval=0)
start_minute  = input(title='Start minute' ,defval=0)
end_time      = input(title='set end time?',defval=false)
end_year      = input(title='end year'     ,defval=3019)
end_month     = input(title='end month'    ,defval=12)
end_day       = input(title='end day'      ,defval=31)
end_hour      = input(title='end hour'     ,defval=23)
end_minute    = input(title='end minute'   ,defval=59)

// MA
ema_period = input(title='EMA period',defval=10)
wma_period = input(title='WMA period',defval=20)
ema        = ema(close,ema_period)
wma        = wma(close,wma_period)

// Entry Condition
buy =
 crossover(ema,wma) and
 nz(strategy.position_size) == 0 and Buy and
 time > timestamp(start_year, start_month, start_day, start_hour, start_minute) and
 (end_time?(time < timestamp(end_year, end_month, end_day, end_hour, end_minute)):true)
 
sell =
 crossunder(ema,wma) and
 nz(strategy.position_size) == 0 and Sell and
 time > timestamp(start_year, start_month, start_day, start_hour, start_minute) and
 (end_time?(time < timestamp(end_year, end_month, end_day, end_hour, end_minute)):true)

// Pips
pip = input(20)*10*syminfo.mintick

// Trading parameters //
var bool  LS  = na
var bool  SS  = na
var float EP  = na
var float TVL = na
var float TVS = na
var float TSL = na
var float TSS = na
var float TP1 = na
var float TP2 = na
var float SL1 = na
var float SL2 = na

if buy or sell and strategy.position_size == 0
    EP  := close
    SL1 := EP - pip     * (sell?-1:1)
    SL2 := EP - pip     * (sell?-1:1)
    TP1 := EP + pip     * (sell?-1:1)
    TP2 := EP + pip * 2 * (sell?-1:1) 
   
// current trade direction    
LS := buy  or strategy.position_size > 0
SS := sell or strategy.position_size < 0

// adjust trade parameters and trailing stop calculations
TVL := max(TP1,open) - pip[1]
TVS := min(TP1,open) + pip[1]
TSL := open[1] > TSL[1] ? max(TVL,TSL[1]):TVL 
TSS := open[1] < TSS[1] ? min(TVS,TSS[1]):TVS

if LS and high > TP1
    if open <= TP1
        SL2:=min(EP,TSL)
    
if SS and low < TP1
    if open >= TP1
        SL2:=max(EP,TSS)

// Closing conditions
close_long  = LS and open < SL2
close_short = SS and open > SL2

// Buy
strategy.entry("buy"  , strategy.long, when=buy and not SS)
strategy.exit ("exit1", from_entry="buy", stop=SL1, limit=TP1, qty_percent=50)
strategy.exit ("exit2", from_entry="buy", stop=SL2, limit=TP2)

// Sell
strategy.entry("sell" , strategy.short, when=sell and not LS)
strategy.exit ("exit3", from_entry="sell", stop=SL1, limit=TP1, qty_percent=50)
strategy.exit ("exit4", from_entry="sell", stop=SL2, limit=TP2)

// Plots
a=plot(strategy.position_size >  0 ? SL1 : na, color=#dc143c, style=plot.style_linebr)
b=plot(strategy.position_size <  0 ? SL1 : na, color=#dc143c, style=plot.style_linebr) 
c=plot(strategy.position_size >  0 ? TP1 : na, color=#00ced1, style=plot.style_linebr) 
d=plot(strategy.position_size <  0 ? TP1 : na, color=#00ced1, style=plot.style_linebr) 
e=plot(strategy.position_size >  0 ? TP2 : na, color=#00ced1, style=plot.style_linebr) 
f=plot(strategy.position_size <  0 ? TP2 : na, color=#00ced1, style=plot.style_linebr) 
g=plot(strategy.position_size >= 0 ? na  : EP, color=#ffffff, style=plot.style_linebr) 
h=plot(strategy.position_size <= 0 ? na  : EP, color=#ffffff, style=plot.style_linebr) 

plot(ema,title="ema",color=#fff176)
plot(wma,title="wma",color=#00ced1)