Stratégie de suivi des tendances de la moyenne mobile

Auteur:ChaoZhang est là., Date: 2023-11-23 17:13:06 Je vous en prie.
Les étiquettes:

img

Résumé

La stratégie de suivi des tendances est une stratégie automatisée de trading d'actions qui utilise à la fois l'analyse des tendances et les indicateurs de survente.

La logique de la stratégie

La stratégie est composée de trois parties principales:

  1. Jugement de tendance: Calcule la tendance à long terme avec une moyenne mobile simple de 200 jours et la tendance à court terme avec des moyennes mobiles simples de 30 jours et 50 jours.

  2. L'analyse de l'indicateur RSI de 14 jours: L'indicateur RSI supérieur à 80 est la zone de surachat et inférieur à 20 est la zone de survente.

  3. Entrée et sortie: Lorsque des signaux de surachat ou de survente sont identifiés, si la direction est conforme à l'analyse de tendance, des positions longues/courtes seront ouvertes.

Avec cette stratégie, il est possible d'entrer sur le marché en temps opportun lorsque les prix s'inversent, tout en filtrant certaines transactions bruyantes en incorporant une analyse de tendance, avec un contrôle de la baisse relativement excellent.

Analyse des avantages

La stratégie présente les avantages suivants:

  1. Combiner l'analyse des tendances et les indicateurs de surachat pour filtrer le bruit et identifier les changements sur le marché.
  2. Considérant les tendances à long terme et à court terme pour des jugements plus précis.
  3. Utiliser des moyennes mobiles comme méthodes de stop loss afin que les points de stop loss puissent être fixés en fonction de la volatilité du marché.
  4. Des conditions d'entrée strictes permettent d'éviter efficacement de fausses fuites.

Risques et solutions

Cette stratégie comporte également certains risques:

  1. Des transactions fréquentes et insignifiantes peuvent se produire si le marché reste dans la fourchette pendant une période prolongée.
  2. Il y a un certain risque de décalage temporel, qui peut être atténué en raccourcissant les paramètres de la moyenne mobile.
  3. Les signaux RSI peuvent être influencés par les actions et les marchés. Plus de facteurs tels que les modèles de chandeliers devraient être combinés pour juger de l'efficacité.

Directions d'optimisation

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

  1. Ajouter plus de filtres comme le volume, les motifs de chandeliers pour améliorer encore la qualité du signal.
  2. Optimisation des paramètres de la moyenne mobile et du cycle RSI pour qu'ils correspondent aux différentes caractéristiques des stocks.
  3. Construire des moyennes mobiles dynamiques pour ajuster automatiquement les paramètres en fonction de la volatilité du marché et de l'appétit pour le risque.
  4. Utiliser des techniques plus avancées comme l'apprentissage automatique pour déterminer les tendances du marché avec une plus grande précision.

Résumé

En général, la stratégie de suivi des tendances est une idée de stratégie très pratique, filtrant le bruit du marché dans une certaine mesure en combinant l'analyse des tendances et les indicateurs de surachat et de survente, rendant les signaux de trading plus précis et valides.


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

//@version=4
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © mattehalen

// INPUT per TIMEFRAME
// 5min     = Legnth = 9, Source = ohlc4,MaxLoss = 1000 TrendMA = 200, ShortMA = 4, LongMA = 10
// 30min    = Legnth = 7, Source = ohlc4,MaxLoss = 1000 TrendMA = 200, ShortMA = 10, LongMA = 20

strategy("Mathias & Christer Timeframe RSI", shorttitle="M&C_RSI",overlay=true, process_orders_on_close = true, default_qty_type =  strategy.percent_of_equity, default_qty_value = 100)
len = input(9, title="Length", type=input.integer)
src = input(ohlc4, title="Source", type=input.source)
//show4h = input(true, title="show 4h", type=input.bool)
maxLoss = input(3000)

rsiCurrent = rsi(src, len)
//rsi4h = security(syminfo.ticker, "240", rsi(src, len))
rsi4h   = rsi(src, len)

//--------------------------------------------------
//MA
trendMAInput = input(200, title="trendMA", type=input.integer)
shortMAInput = input(30, title="shortMA", type=input.integer)
longMAInput = input(50, title="longMA", type=input.integer)

trendMA = ema(close,trendMAInput)
shortMA = ema(close,shortMAInput)
longMA  = ema(close,longMAInput)
plot(trendMA, color=color.black, linewidth=5)
plot(shortMA, color=color.red, linewidth=2)
plot(longMA, color=color.green, linewidth=2)
bgcolor(crossunder(shortMA,longMA) ? color.black : na, transp=10)

//--------------------------------------------------
//RSI
BuySignalBarssince = barssince(rsi4h[1]<rsi4h[0] and rsi4h[1]<20)
BuySignal       = (rsi4h[1]<rsi4h[0] and rsi4h[1]<20 and BuySignalBarssince[1]>10)
BuySignalOut   = crossunder(longMA[1],shortMA[1])
bgcolor(BuySignal ? color.green : na, transp=70)
bgcolor(BuySignalOut ? color.green : na, transp=10)



SellSignalBarssince = barssince(rsi4h[1]>rsi4h[0] and rsi4h[1]>80)
SellSignal      = (rsi4h[1]>rsi4h[0] and rsi4h[1]>80 and SellSignalBarssince[1]>10)
SellSignalOut   = crossunder(shortMA[1],longMA[1])
bgcolor(SellSignal ? color.red : na, transp=70)
bgcolor(SellSignalOut ? color.red : na, transp=10)


if BuySignal
    strategy.close("short", comment = "Exit short")
    strategy.entry("long", true)
    strategy.exit("Max Loss", "long", loss = maxLoss)

if BuySignalOut
    strategy.close("long", comment = "Exit Long")
if SellSignal
    // Enter trade and issue exit order on max loss.
    strategy.close("long", comment = "Exit Long")
    strategy.entry("short", false)
    strategy.exit("Max Loss", "short", loss = maxLoss)
if SellSignalOut
    // Force trade exit.
    strategy.close("short", comment = "Exit short")
    
//--------------------------------------------------
//ATR
MyAtr = atr(10)
AtrFactor = 10
mySLBuy  = close[BuySignalBarssince]
mySLSell = close[SellSignalBarssince]

plotchar(BuySignal, "BuySignal", "⬆", location.belowbar, color.lime,size =size.huge )
plotchar(BuySignalOut, "BuySignalOut", "█", location.belowbar, color.lime,size =size.small)
plotchar(SellSignal, "SellSignal", "⬇", location.abovebar ,color.red,size =size.huge)
plotchar(SellSignalOut, "SellSignalOut", "█", location.abovebar, color.red,size =size.small)




Plus de