La double moyenne mobile est une stratégie de trading de tendance qui suit les croisements entre les moyennes mobiles doubles. La stratégie utilise l'EMA et le WMA comme indicateurs de signaux de trading. Lorsque l'EMA à court terme dépasse la WMA à long terme, la stratégie va long. Lorsque l'EMA à court terme dépasse la WMA à long terme, la stratégie va court.
Les signaux de négociation de cette stratégie proviennent de la croix dorée et de la croix de la mort entre l'EMA à court terme de 10 périodes et l'EMA à long terme de 20 périodes. Lorsque l'EMA à court terme franchit au-dessus de l'EMA à long terme, cela indique que le marché est en train d'inverser vers le haut, donc aller long. Lorsque l'EMA à court terme franchit au-dessous de l'EMA à long terme, cela indique que le marché est en train d'inverser vers le bas, donc aller court.
Après avoir déterminé la direction du trading, la stratégie fixe le stop loss au-dessous ou au-dessus du prix d'entrée d'une période ATR, avec deux profits de prise - le premier profit de prise est fixé à 1 ATR au-dessus ou au-dessous du prix d'entrée, et le second profit de prise est fixé à 2 ATR au-dessus ou au-dessous du prix d'entrée. Lorsque le premier profit de prise est déclenché, 50% de la position sera fermée. La position restante continuera à courir vers le deuxième profit de prise ou avec un stop loss de trailing.
La logique de stop loss de suivi - elle sera activée une fois que le prix le plus élevé ou le prix le plus bas aura atteint le premier niveau de profit.
La stratégie utilise la double fonction de réduction du bruit de lissage des moyennes mobiles pour filtrer efficacement les fluctuations aléatoires sur le marché et identifier les signaux de tendance à moyen et long terme, évitant ainsi d'être pris dans des fouets.
Les moyennes mobiles elles-mêmes présentent un décalage plus important, ce qui présente le risque de manquer de signaux.
Le paramètre de stop loss est une composante importante de la stratégie. Si le stop loss est trop petit, il est susceptible d'être touché par le bruit du marché. Si le stop loss est trop grand, il peut ne pas contrôler efficacement les risques.
En outre, lorsque le marché fluctue violemment, l'arrêt de trailing peut ne pas fonctionner très bien en protection.
Testez les EMA et les WMA avec des paramètres différents pour trouver la combinaison optimale de paramètres.
Le montant de l'obligation de dépôt est calculé à partir de l'indice de dépôt.
Testez les effets de l'arrêt partiel et de l'arrêt complet.
Mettre en place d'autres indicateurs de filtrage des signaux pour aider l'EMA et la WMA afin d'améliorer la qualité des signaux.
En général, la stratégie de trading de canal de moyenne mobile double est relativement robuste et fonctionne bien sur les marchés en tendance. En optimisant les paramètres, les mécanismes de stop loss et en améliorant la qualité du signal, la performance de trading réelle de cette stratégie peut être encore améliorée.
/*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)