Double tendance à la moyenne mobile selon la stratégie

Auteur:ChaoZhang est là., Date: 2024-03-22 13:56:44 Je vous en prie.
Les étiquettes:

img

Résumé

Cette stratégie utilise le croisement de deux moyennes mobiles pour déterminer les changements dans les tendances du marché et prend des décisions d'achat/vente en fonction de la direction de la tendance.

Principe de stratégie

Le noyau de cette stratégie est constitué de deux moyennes mobiles: un MA rapide (période de défaut 32) et un MA lent (également période de défaut 32, réglable via des paramètres). Lorsque le prix de clôture traverse au-dessus/en dessous du canal formé par ces deux MA, il indique un renversement de tendance et la stratégie génère des signaux d'achat/vente en conséquence:

  • Lorsque le MA rapide traverse au-dessus du MA lent, aller long
  • Lorsque le MA rapide passe sous le MA lent, allez court
  • Lorsqu'il détient déjà une position longue, si le MA rapide passe sous le MA lent, fermer long et passer court
  • Lorsqu'il détient déjà une position courte, si le MA rapide dépasse le MA lent, fermer court et aller long

Grâce à cette méthode de croisement MA, la stratégie peut suivre la tendance, en détenant des positions longues dans les tendances haussières et des positions courtes dans les tendances baissières, jusqu'à ce qu'un signal d'inversion apparaisse.

Analyse des avantages

  1. Suivi des tendances: en utilisant des croisements de MA pour identifier les tendances, la stratégie peut capturer et suivre efficacement les principales tendances du marché.
  2. Simple et facile à utiliser: la logique de la stratégie est claire, utilisant seulement deux MA. Les paramètres sont simples et faciles à comprendre et à maîtriser.
  3. Large application: la stratégie est largement applicable à différents instruments et délais et peut être utilisée sur différents marchés.
  4. Stop-loss rapide: lorsque la tendance s'inverse, la stratégie peut fermer rapidement les positions pour contrôler les pertes.

Analyse des risques

  1. Faibles performances sur les marchés à fourchette: lorsque le marché est dans une tendance latérale, des signaux croisés fréquents entraîneront des transactions et des pertes excessives.
  2. Réaction insuffisante aux mouvements extrêmes: la stratégie peut réagir trop lentement aux situations extrêmes (telles que des surtensions ou des chutes rapides), entraînant de grosses pertes.
  3. Difficulté d'optimisation des paramètres: l'optimisation des paramètres MA nécessite une grande quantité de données historiques et de backtesting.

Pour faire face à ces risques, il peut être envisagé d'ajouter des filtres appropriés, tels que les filtres ATR ou de la plage réelle moyenne, afin de réduire le surtrading sur les marchés de plage; de fixer des stop-loss raisonnables pour contrôler les pertes d'un seul commerce; et d'optimiser continuellement les paramètres pour s'adapter au marché.

Direction de l'optimisation

  1. Confirmation de tendance: après avoir généré un signal de négociation, des indicateurs de confirmation de tendance supplémentaires tels que MACD ou DMI peuvent être incorporés pour filtrer davantage les signaux.
  2. L'indicateur ATR est utilisé pour définir des niveaux dynamiques d'arrêt-perte au lieu de pourcentages fixes ou d'arrêts de prix, afin de mieux contrôler les risques.
  3. Taille des positions: ajustez dynamiquement la taille des positions en fonction de la force de la tendance, de la volatilité et d'autres indicateurs.
  4. Analyse sur plusieurs périodes: envisager un système d'AM sur plusieurs périodes, tel que la combinaison d'AM quotidiens et de 4 heures, pour filtrer et confirmer les uns les autres et améliorer la précision de l'identification des tendances.
  5. Paramètres adaptatifs: introduire des méthodes d'optimisation adaptative des paramètres, telles que des algorithmes génétiques, pour permettre aux paramètres de stratégie de s'adapter aux différentes conditions du marché.

Les optimisations ci-dessus peuvent améliorer la capacité de la stratégie à gérer des marchés complexes, mais il faut veiller à éviter une optimisation excessive qui peut entraîner un ajustement de la courbe et de mauvaises performances futures.

Résumé

La double MA tendance suivant la stratégie capture les tendances à travers les croisements MA. Il est simple, facile à utiliser et largement applicable. Cependant, il fonctionne mal sur les marchés variés, répond de manière inadéquate aux mouvements extrêmes et fait face à des difficultés dans l'optimisation des paramètres.

La stratégie peut être optimisée en introduisant plus d'indicateurs de filtrage, de stop-losses dynamiques, de dimensionnement des positions, d'analyse sur plusieurs délais et de paramètres adaptatifs.

Dans l'ensemble, cette stratégie peut servir de stratégie de base de suivi des tendances, mais elle est difficile à mettre en œuvre seule et convient mieux à un ensemble de stratégies.


/*backtest
start: 2023-03-16 00:00:00
end: 2024-03-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5

//study(title="Demo - SSL Basic", shorttitle="Demo - SSL Basic", overlay=true)
strategy(title='Demo - SSL Basic', shorttitle='Demo - SSL Basic', overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=100, commission_value=0.15)

// Backtest Date Range
start_date_long = input(title='Backtest Long Start Date', defval=timestamp('01 Jan 2018 00:00 +0530'))
end_date_long = input(title='Backtest Long End Date', defval=timestamp('25 Jan 2030 00:00 +0530'))
backtest_range = true

// Inputs
maType = input.string(title='SSL MA Type', options=['SMA', 'EMA', 'WMA'], defval='SMA')
sslLen = input(title='SSL Length', defval=32)
showCross = input(title='Show Crossover?', defval=true)
showEntry = input(title='Show Entry?', defval=true)
showTrend = input(title='Show Trend Colors?', defval=true)

// Calc MA for SSL Channel
calc_ma(close, len, type) =>
    float result = 0
    if type == 'SMA'  // Simple
        result := ta.sma(close, len)
        result
    if type == 'EMA'  // Exponential
        result := ta.ema(close, len)
        result
    if type == 'WMA'  // Weighted
        result := ta.wma(close, len)
        result    
    result

// Add SSL Channel
maHigh = calc_ma(high, sslLen, maType)
maLow = calc_ma(low, sslLen, maType)
Hlv = int(na)
Hlv := close > maHigh ? 1 : close < maLow ? -1 : Hlv[1]
sslDown = Hlv < 0 ? maHigh : maLow
sslUp = Hlv < 0 ? maLow : maHigh
ss1 = plot(sslDown, title='Down SSL', linewidth=2, color=showTrend ? na : color.red)
ss2 = plot(sslUp, title='Up SSL', linewidth=2, color=showTrend ? na : color.lime)

// Conditions
longCondition = ta.crossover(sslUp, sslDown)
shortCondition = ta.crossover(sslDown, sslUp)

// Strategy
if shortCondition
    strategy.close('Long', comment='Long Exit', alert_message='JSON')

if longCondition
    strategy.close('Short', comment='Short Exit', alert_message='JSON')

if backtest_range and longCondition
    strategy.entry('Long', strategy.long, comment='Long Entry', alert_message='JSON')

if backtest_range and shortCondition
    strategy.entry('Short', strategy.short, comment= 'Short Entry', alert_message='JSON')


// Plots
fill(ss1, ss2, color=showTrend ? sslDown < sslUp ? color.new(color.lime, transp=75) : color.new(color.red, transp=75) : na, title='Trend Colors')


Plus de