Tendance des canaux de moyenne mobile triple suivant la stratégie

Auteur:ChaoZhang est là., Date: 2023-11-06 16:58:57 Je suis désolé
Les étiquettes:

img

Résumé

Cette stratégie utilise une triple combinaison de moyennes mobiles pour déterminer la direction de la tendance en fonction de l'ordre des moyennes mobiles, afin d'obtenir un suivi de la tendance.

Principe de stratégie

La stratégie utilise trois moyennes mobiles avec des périodes différentes, y compris une moyenne mobile rapide, une moyenne mobile moyenne et une moyenne mobile lente.

Conditions d'entrée:

  1. Long: lorsque l'AM rapide > l'AM moyen > l'AM lent, le marché est considéré comme étant en hausse, aller long.
  2. Short: lorsque le marché est en tendance à la baisse, le marché est considéré comme en tendance à la baisse.

Conditions de sortie:

  1. Exit MA: position de clôture lorsque l'ordre des trois moyennes mobiles est inversé.
  2. Exit TP/SL: Fixer des points de prise de profit et de stop-loss fixes, tels que 12% pour TP et 1% pour SL, sortir lorsque le prix atteint TP ou SL.

La stratégie est simple et directe, utilisant trois moyennes mobiles pour déterminer la direction de la tendance du marché pour la tendance suivant la négociation, adaptée aux marchés à forte tendance.

Analyse des avantages

  • Utilisez trois moyennes mobiles pour déterminer la tendance et filtrer le bruit du marché.
  • Les moyennes mobiles de différentes périodes permettent de déterminer plus précisément les points d'inversion de tendance.
  • Combiner les indicateurs de moyenne mobile et le TP/SL fixe pour gérer le risque de capital.
  • La logique de la stratégie est simple et intuitive, facile à comprendre et à mettre en œuvre.
  • Les paramètres de la période d'AM peuvent être facilement optimisés pour s'adapter aux conditions du marché de différents cycles.

Risques et améliorations

  • Dans les marchés à long cycle, les moyennes mobiles peuvent avoir plus de faux signaux, conduisant à des pertes inutiles.
  • Envisagez d'ajouter d'autres indicateurs ou filtres pour améliorer la rentabilité.
  • Optimiser la combinaison des paramètres de la moyenne mobile de période pour s'adapter à des conditions de marché plus étendues.
  • Combinez avec les indicateurs de la force de la tendance pour éviter d'acheter des sommets et de vendre des fonds.
  • Ajoutez des arrêts automatiques pour éviter d'augmenter les pertes.

Conclusion

La stratégie de suivi de la tendance de la moyenne mobile triple a une logique claire et facile à comprendre, utilisant des moyennes mobiles pour déterminer la direction de la tendance pour une tendance simple après le trading. L'avantage est qu'il est facile à mettre en œuvre et que l'ajustement des paramètres de la période de MA peut s'adapter aux conditions du marché de différents cycles. Cependant, il existe également certains risques de faux signaux, qui peuvent être améliorés en ajoutant d'autres indicateurs ou conditions pour réduire les pertes inutiles et améliorer la rentabilité de la stratégie.


/*backtest
start: 2023-10-06 00:00:00
end: 2023-11-05 00:00:00
period: 1h
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/
// © Jompatan

//@version=5
strategy('Strategy Triple Moving Average', overlay=true, initial_capital = 1000, commission_value=0.04, max_labels_count=200)

//INPUTS
mov_ave = input.string(defval="EMA", title='Moving Average type:', options= ["EMA", "SMA"])

period_1 = input.int(9,  title='Period 1', inline="1", group= "============== Moving Average Inputs ==============")
period_2 = input.int(21, title='Period 2', inline="2", group= "============== Moving Average Inputs ==============")
period_3 = input.int(50, title='Period 3', inline="3", group= "============== Moving Average Inputs ==============")

source_1 = input.source(close, title='Source 1', inline="1", group= "============== Moving Average Inputs ==============")
source_2 = input.source(close, title='Source 2', inline="2", group= "============== Moving Average Inputs ==============")
source_3 = input.source(close, title='Source 3', inline="3", group= "============== Moving Average Inputs ==============")


//EXIT CONDITIONS
exit_ma   = input.bool(true, title= "Exit by Moving average condition", group="================ EXIT CONDITIONS ================")
exit_TPSL = input.bool(false, title= "Exit by Take Profit and StopLoss", group="================ EXIT CONDITIONS ================")
TP        = input.int(12, title='Take Profit', step=1, group="================ EXIT CONDITIONS ================")
SL        = input.int(1, title='Stop Loss', step=1, group="================ EXIT CONDITIONS ================")
plot_TPSL = input.bool(false, title='Show TP/SL lines', group="================ EXIT CONDITIONS ================")


//Date filters
desde = input(defval= timestamp("01 Jan 2023 00:00 -3000"), title="From", inline="12", group= "============= DATE FILTERS =============")
hasta = input(defval= timestamp("01 Oct 2099 00:00 -3000"), title="To  ", inline="13", group= "============= DATE FILTERS =============")
enRango = true

//COMMENTS
//entry_long_comment  = input.string(defval=" ", title="Entry Long comment: ", inline="14", group="============= COMMENTS =============")
//exit_long_comment   = input.string(defval=" ", title="Exit Long comment:  ", inline="15", group="============= COMMENTS =============")
//entry_short_comment = input.string(defval=" ", title="Entry Short comment:", inline="16", group="============= COMMENTS =============")
//exit_short_comment  = input.string(defval=" ", title="Exit Short comment: ", inline="17", group="============= COMMENTS =============")

//============================================================

//Selecting Moving average type
ma1 = mov_ave == "EMA" ? ta.ema(source_1, period_1) : ta.sma(source_1, period_1)
ma2 = mov_ave == "EMA" ? ta.ema(source_2, period_2) : ta.sma(source_2, period_2)
ma3 = mov_ave == "EMA" ? ta.ema(source_3, period_3) : ta.sma(source_3, period_3)

//============================================================
//Entry Long condition: Grouped Moving average from: (ma fast > ma middle > ma slow)
long_condition = (ma1 > ma2) and (ma2 > ma3)

//Entry Short condition: Grouped Moving average from: (ma fast < ma middle < ma slow)
short_condition = (ma1 < ma2) and (ma2 < ma3)

//============================================================

cantidad       = strategy.equity / close
comprado_long  = strategy.position_size > 0
comprado_short = strategy.position_size < 0

var long_profit_price  = 0.0
var long_stop_price    = 0.0
var short_profit_price = 0.0
var short_stop_price   = 0.0

//============================================================

//ENTRY LONG
if not comprado_long and not comprado_short and long_condition and not long_condition[1] and enRango
    strategy.entry('Long', strategy.long, qty=cantidad, comment= "Entry Long")
    if exit_TPSL
        long_profit_price := close * (1 + TP/100)
        long_stop_price   := close * (1 - SL/100)
    else
        long_profit_price := na
        long_stop_price   := na
//============================================================


//ENTRY SHORT
if not comprado_long and not comprado_short and short_condition and not short_condition[1] and enRango
    strategy.entry('Short', strategy.short, qty=cantidad, comment= "Entry Short")
    if exit_TPSL
        short_profit_price := close * (1 - TP/100)
        short_stop_price   := close * (1 + SL/100)
    else
        short_profit_price := na
        short_stop_price   := na
//============================================================


//EXIT LONG 
if comprado_long and exit_ma and long_condition[1] and not long_condition
    strategy.close('Long', comment='Exit-Long(MA)')
if comprado_long and exit_TPSL
    strategy.exit('Long', limit=long_profit_price, stop=long_stop_price, comment='Exit-Long(TP/SL)')
//============================================================


//EXIT SHORT 
if comprado_short and exit_ma and short_condition[1] and not short_condition
    strategy.close('Short', comment='Exit-Short(MA)')
if comprado_short and exit_TPSL
    strategy.exit('Short', limit=short_profit_price, stop=short_stop_price, comment='Exit-Short(TP/SL)')
//============================================================



//PLOTS
plot(ma1, linewidth=2, color=color.rgb(255, 255, 255))
plot(ma2, linewidth=2, color=color.rgb(144, 255, 252))
plot(ma3, linewidth=2, color=color.rgb(49, 167, 255))
//Plot Take Profit line
plot(plot_TPSL ? comprado_long  ? long_profit_price : comprado_short ? short_profit_price : na : na, color=color.new(color.lime, 30), style= plot.style_linebr)
//Plot StopLoss line
plot(plot_TPSL ? comprado_long ? long_stop_price : comprado_short ? short_stop_price : na : na, color=color.new(color.red, 30), style= plot.style_linebr)









Plus de