Stratégie de tendance à bascule moyenne mobile

Auteur:ChaoZhang est là., Date: 2024-02-04 15:44:54 La date de sortie du jeu est le 24 avril.
Les étiquettes:

img

Résumé

La stratégie de moyenne mobile de tendance oscillante est un système de suivi de tendance qui utilise une moyenne mobile à long terme pour identifier la direction de la tendance combinée à la plage moyenne vraie pour filtrer les faux-bouts et limiter les retraits globaux.

La logique de la stratégie

La stratégie est conçue sur la base des principes suivants:

  1. Utilisez une moyenne mobile exponentielle pour déterminer la direction générale de la tendance.
  2. Calculer la moyenne de la plage vraie sur les 10 dernières barres.
  3. Lorsque le prix de clôture est supérieur à Moyenne mobile + Plage réelle moyenne, il est déterminé comme tendance haussière.
  4. Lorsque le prix de clôture est inférieur à Moyenne mobile - Plage moyenne réelle, il est déterminé comme tendance à la baisse.
  5. Allez long dans une tendance haussière et allez court dans une tendance baissière.
  6. Par défaut, la moyenne mobile est utilisée comme ligne de stop loss.

Analyse des avantages

La stratégie présente les avantages suivants:

  1. L'utilisation d'une moyenne mobile pour déterminer la tendance majeure peut filtrer efficacement le bruit du marché à court terme.
  2. L'ajout de la plage moyenne vraie comme condition de filtre évite de générer des signaux de négociation sur des marchés de plage, réduisant ainsi les pertes inutiles.
  3. La ligne de stop loss est proche de la moyenne mobile ou de sa fourchette inverse, ce qui permet de réduire les pertes de stop rapide pour réduire le tirage maximal.
  4. Des paramètres simples facilitent la compréhension et l'optimisation.

Analyse des risques

La stratégie comporte également des risques potentiels:

  1. L'inversion de tendance conduit généralement à un certain degré de baisse dans un système de moyenne mobile.
  2. Les paramètres des moyennes mobiles et de la plage moyenne réelle peuvent avoir un impact important sur les performances de la stratégie.
  3. La stratégie elle-même ne tient pas compte de la relation entre prix et volume.

Directions d'optimisation

La stratégie peut être optimisée dans les aspects suivants:

  1. Testez différents types de moyennes mobiles pour en trouver la plus appropriée pour des stocks ou des produits spécifiques.
  2. Optimiser le paramètre de la moyenne mobile de période pour le rendre plus adapté aux caractéristiques des stocks ou des produits négociés.
  3. Optimiser le paramètre Vrai intervalle moyen pour trouver la meilleure combinaison pour filtrer les marchés en gamme sans manquer de tendances.
  4. Ajoutez des règles de volume pour éviter les pannes non valides.
  5. Tester et comparer différentes méthodes de stop loss pour déterminer la solution optimale.

Conclusion

Dans l'ensemble, la Swing Trend Moving Average Strategy est une stratégie de suivi de tendance très simple et pratique. Elle a également un bon contrôle des risques. Bien que la stratégie ne prenne pas en considération de nombreux facteurs, des tests détaillés et une optimisation des paramètres et des méthodes de stop loss sont toujours nécessaires. Cependant, sa logique de trading simple et ses paramètres le rendent largement applicable à différents produits, particulièrement adaptés au trading de crypto-monnaies comme le Bitcoin.


/*backtest
start: 2023-01-28 00:00:00
end: 2024-02-03 00:00:00
period: 1d
basePeriod: 1h
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/
// © Inkedlau

//@version=5
strategy('Swing Trend Strategy', overlay=true, pyramiding=1, default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=1000, commission_value=0.1)

use_short = input.bool(false, 'Open Short Positions?')
exit_type = input.bool(true, 'Exit trade on Moving Average Cross?')
src = input.source(close, 'Source')
len = input.int(200, 'Trend Length')
ma_type = input.string('ema', 'Moving Average Type', options=['sma', 'ema', 'rma', 'wma', 'vwma'], tooltip='Select the type of Moving Average to use to calculate the Trend')
atr_multiplier = input.float(1., 'ATR Threshold', step=0.5, tooltip='Filter the ranging market using the Average True Range')

// ----------------------- DESCRIPTION -----------------------
// THIS SCRIPT IS A TREND FOLLOWING SYSTEM THAT USES A COMBINATION OF MOVING AVERAGE AND AVERAGE TRUE RANGE
// TO SPOT THE TRENDS AND ENTER THE MARKET ACCODINGLY.
// THE MARKET IS CONSIDERED IN AN UPTREND WHEN THE PRICE CLOSES ABOVE THE MOVING AVERAGE + THE AVERAGE TRUE RANGE OF THE LAST 10 PERIODS
// THE MARKET IS CONSIDERED IN AN DOWNTREND WHEN THE PRICE CLOSES BLOW THE MOVING AVERAGE - THE AVERAGE TRUE RANGE OF THE LAST 10 PERIODS
// BY DEFAULT, THE STRATEGY WILL ENTER LONG WHEN AN UPTREND IS SPOTTED, THEN CLOSES WHEN THE PRICE CLOSES BELOW THE MOVING AVERAGE
// THE STRATEGY WILL ENTER SHORT WHEN A DOWNTREND IS SPOTTED, THEN CLOSES WHEN THE PRICE CLOSES ABOVE THE MOVING AVERAGE

// ------------------ INDICATORS CALCULATION------------------
my_ma()=>
    ma = close
    if ma_type == 'sma'
        ma := ta.sma(src, len)
    if ma_type == 'ema'
        ma := ta.ema(src, len)
    if ma_type == 'rma'
        ma := ta.rma(src, len)
    if ma_type == 'wma'
        ma := ta.wma(src, len)
    if ma_type == 'vwma'
        ma := ta.vwma(src, len)
    ma

trend = my_ma()
atr = ta.atr(10)
uptrend = trend + atr * atr_multiplier
downtrend = trend - atr * atr_multiplier

// ---------------- ENTRY AND EXIT CONDITIONS ----------------

open_long = strategy.position_size == 0 and src > uptrend
close_long = exit_type ? strategy.position_size > 0 and src < trend : strategy.position_size > 0 and src < downtrend

open_short = use_short and strategy.position_size == 0 and src < downtrend
close_short = exit_type ? strategy.position_size < 0 and src > trend : strategy.position_size < 0 and src > uptrend

strategy.entry('long', strategy.long, when=open_long)
strategy.close('long', when=close_long)

strategy.entry('short', strategy.short, when=open_short)
strategy.close('short', when=close_short)


// ------------------ PLOTTING AND COLORING ------------------
tcolor = src > uptrend ? color.green : src < downtrend ? color.red : na

ptrend = plot(trend, color=color.blue, linewidth=1)
puptrend = plot(uptrend, color=color.green, linewidth=1)
pdowntrend = plot(downtrend, color=color.red, linewidth=1)
pclose = plot(close, color=na)

fill(puptrend, pclose, color=close > uptrend ? color.green : na, transp = 90)
fill(pdowntrend, pclose, color=close < downtrend ? color.red : na, transp = 90)



Plus de