Stratégie de croisement de moyenne mobile de Larry Williams

Auteur:ChaoZhang est là., Date: 2023-12-26 15h03 et 16h
Les étiquettes:

img

Résumé

Il s'agit d'une stratégie simple et classique de croisement des moyennes mobiles créée par le célèbre trader Larry Williams. La stratégie utilise la moyenne mobile simple de 9 jours comme ligne rapide et la moyenne mobile exponentielle de 21 jours comme ligne lente. Elle va long lorsque le prix dépasse la ligne de 9 jours et court lorsque le prix dépasse la ligne de 9 jours. Pour filtrer les fausses ruptures, la ligne de 21 jours est également utilisée pour confirmer la tendance.

La logique de la stratégie

La stratégie est basée sur le croisement doré et le croisement mortel des moyennes mobiles pour déterminer les opportunités longues et courtes. Lorsque la ligne rapide dépasse la ligne lente par le bas, c'est un croisement doré, indiquant un changement vers une tendance haussière. Une telle rupture est utilisée pour aller long. Lorsque la ligne rapide dépasse la ligne lente par le haut, c'est un croisement mortel, indiquant un changement vers une tendance baissière. Une telle rupture est utilisée pour aller court.

Pour éviter de fausses ruptures conduisant à des pertes virtuelles, la ligne de 21 jours est également utilisée pour déterminer la tendance majeure.

Plus précisément, le signal long est déclenché lorsque: la ligne rapide dépasse le plus haut d'hier et dépasse la ligne de 21 jours. Le signal court est déclenché lorsque: la ligne rapide dépasse le plus bas d'hier et dépasse la ligne de 21 jours.

Analyse des avantages

Les principaux avantages de cette stratégie sont les suivants:

  1. L'idée de stratégie est simple et facile à comprendre et à mettre en œuvre.
  2. La technique des moyennes mobiles est mature et largement utilisée.
  3. L'introduction de la ligne de 21 jours filtre efficacement les fausses éruptions.
  4. Utiliser les points extrêmes d'hier pour entrer dans des positions peut éviter d'être pris au piège.
  5. Les paramètres stratégiques sont relativement robustes sans trop facilement être adaptés.

Analyse des risques

Les principaux risques de cette stratégie sont les suivants:

  1. Dans les marchés volatils, les moyennes mobiles sont à la traîne et peuvent manquer les meilleurs points d'entrée.
  2. Dans les marchés à fourchette avec une évolution latérale des prix, de petites pertes peuvent se produire fréquemment.
  3. Il ne peut pas réagir efficacement à des événements soudains et à des changements significatifs de tendance.

Pour faire face à ces risques, des optimisations peuvent être apportées dans les aspects suivants:

  1. Introduire l'indicateur MACD pour plus de signaux en temps réel.
  2. Augmenter les paramètres de la période de mise en marché afin de réduire la fréquence des transactions.
  3. Ajouter des stratégies de stop loss pour contrôler le montant de la perte d'une seule transaction.

Directions d'optimisation

Les principales orientations d'optimisation de cette stratégie sont les suivantes:

  1. Optimisation des paramètres: des méthodes plus systématiques peuvent être utilisées pour tester différentes combinaisons de périodes de MA afin de trouver de meilleurs paramètres.

  2. Ajoutez un stop loss. définissez un stop loss en mouvement approprié, un stop loss en pourcentage, etc. pour contrôler efficacement la perte d'un seul trade.

  3. Combiner d'autres indicateurs, introduire des signaux du MACD, de l'ATR, du KD, etc. pour obtenir plus de dimensions de confirmation et améliorer la stabilité de la stratégie.

  4. Optimiser les mécanismes de sortie. Rechercher différents types de méthodes de sortie telles que les sorties de signaux d'inversion, les sorties de prise de profit en mouvement, etc.

Conclusion

En résumé, cette stratégie de croisement des moyennes mobiles est une stratégie de suivi de tendance très typique et pratique. Elle a l'avantage d'être facile à comprendre et à mettre en œuvre, et a également des possibilités d'amélioration.


// @_benac
//@version=5
strategy('Larry', overlay=true , initial_capital=1000 )


////////////////////////////////////////////////////////
//                                                    //
//                                                    //
//                 Codigo Operacional                 //
//                                                    //
//                                                    //
////////////////////////////////////////////////////////

// Usage for Stocks , or Criptos with value bigger then 1, cuz of 0.01 ´pip.
// Daily timeframe
//Observation Point
start     = timestamp(2020, 00, 00, 00, 00)         // backtest start window
finish    = timestamp(2022, 01, 07, 23, 59)        // backtest finish window
window()  => true // create function "within window of time"  

if time < start 
    strategy.close_all("Closing All")

// Take infos from inputs. 
inp_mmshort = input.int(defval = 9, title = "Media Curta"  )
inp_mminter = input.int(defval = 21, title = "Media Curta"  )

// Risk Manager, here define max and min 
inp_max = input.int(defval = 15, title = "Percentual Ganho"  )
inp_min = input.int(defval = 5, title = "Percental  Perda"  )

// Converting the input to % 
pmax = (inp_max / 100 )
pmin =  (inp_min / 100)

// Infos From Moving Average
mm_short = ta.sma(close , inp_mmshort)
mm_inter = ta.ema(close , inp_mminter)


// Trend Logic
//Long Condition 

//Setup do Larry Willians Bem Simples , media virou para cima e rompeu a maxima de referencia, compra. 
tendencia_alta = mm_short[2] > mm_short[1] and mm_short > mm_short[1] and close > high[1] and close > mm_short and mm_short > mm_inter
tendencia_baixa = mm_short[2] < mm_short[1] and mm_short < mm_short[1] and close > low[1] and close < mm_short and mm_short < mm_inter

// Creating the entry
if tendencia_alta 
    strategy.entry("Compra" , strategy.long , stop = low - 0.01  )
    stop_inst = low - 0.01 
if tendencia_baixa 
    strategy.entry("Venda" , strategy.short , stop= high + 0.01  )
    stop_inst = high + 0.01


// TrailingStop Creation

// Sell Position
if strategy.position_size < 0 
    gain_p = strategy.opentrades.entry_price(0) - (strategy.opentrades.entry_price(0) * pmax) 
    stop_p = strategy.opentrades.entry_price(0) + (strategy.opentrades.entry_price(0) * pmin) 
    // Managing the position
    if close < gain_p 
        strategy.close_all(comment = " 1 - Ganho : " + str.tostring( gain_p) + " Perda : " + str.tostring( stop_p)  )
    if close > stop_p 
        strategy.close_all(comment = " 2 - Ganho : " + str.tostring( gain_p) + " Perda : " + str.tostring( stop_p)  )
    
    if  high > mm_short[1]
        strategy.close_all(comment = " 3 - Ganho : " + str.tostring( gain_p) + " Perda : " + str.tostring( stop_p)  )
      

// Buy Position    
if strategy.position_size > 0
    gain_p = strategy.opentrades.entry_price(0) + (strategy.opentrades.entry_price(0) * pmax) 
    stop_p = strategy.opentrades.entry_price(0) - (strategy.opentrades.entry_price(0) * pmin) 
    // Managing the position
    if close > gain_p 
        strategy.close_all(comment = " 1- Ganho : " + str.tostring( gain_p) + " Perda : " + str.tostring( stop_p)  )
    if close < stop_p 
        strategy.close_all(comment = " 2 -Ganho : " + str.tostring( gain_p) + " Perda : " + str.tostring( stop_p)  )
    if low < mm_short[1]
        strategy.close_all(comment = " 3 -Ganho : " + str.tostring( gain_p) + " Perda : " + str.tostring( stop_p)  )
        



Plus de