Stratégie de suivi de la tendance croisée entre l'indice de croissance et l'indice de croissance

Auteur:ChaoZhang est là., Date: 2024-02-20 15h31 et 15h
Les étiquettes:

img

Résumé

Cette stratégie détermine les tendances du marché et les signaux d'entrée par le croisement de l'indicateur RSI et de deux moyennes mobiles (MA) de périodes différentes.

La logique de la stratégie

La stratégie utilise deux MA de 12 et 26 périodes. Lorsque la MA rapide de 12 périodes dépasse la MA lente de 26 périodes, elle signale une tendance à la hausse, et vice versa. La stratégie va long sur le croisement doré et court sur le croisement mortel des deux MA.

L'indicateur RSI est également utilisé pour déterminer les zones de surachat / survente. Seulement lorsque le RSI est supérieur à sa MA de 26 périodes, la stratégie ouvrira des positions longues sur le croisement doré. Et seulement lorsque le RSI est inférieur, il ouvrira des positions courtes sur le croisement de la mort. Cela évite les entrées forcées contre les situations de surachat / survente et contrôle donc les risques.

Analyse des avantages

En combinant les MAs et le RSI pour l'analyse des tendances et du timing, cette stratégie peut suivre efficacement les tendances.

Analyse des risques

Sans stop-loss, les pertes peuvent s'amplifier sur les mauvais signaux. De grands mouvements d'écart peuvent également entraîner de lourdes pertes. De plus, des filtres RSI mal réglés peuvent entraîner des signaux d'entrée manquants.

Considérez l'utilisation d'un stop loss pour contrôler les pertes maximales. Ajustez les paramètres du RSI pour de meilleurs filtres. Pour les marchés volatils, utilisez des MAs plus lents pour juger de la tendance.

Directions d'optimisation

La stratégie peut être améliorée dans les domaines suivants:

  1. Tester les combinaisons d'AM de différentes périodes pour trouver les paramètres les mieux adaptés aux conditions actuelles du marché.

  2. Optimiser les périodes RSI et les logiques de filtrage pour un meilleur timing d'entrée.

  3. Ajoutez d'autres indicateurs comme le volume pour une meilleure stabilité du système.

  4. Optimiser les stratégies de stop loss pour équilibrer le suivi de la tendance et le contrôle des risques, par exemple, le stop de suivi, le stop en pourcentage, le stop dynamique, etc.

Conclusion

La stratégie est relativement simple et directe, en utilisant des croisements MA pour déterminer les tendances et RSI pour éviter les entrées forcées, suivant ainsi les tendances pour de bons rendements.


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

//@version=2

strategy(title = "EMA Cross Strategy", shorttitle = "EMA Cross",calc_on_order_fills=true,calc_on_every_tick =true, initial_capital=21000,commission_value=.25,overlay = true,default_qty_type = strategy.percent_of_equity, default_qty_value = 100)
StartYear = input(2018, "Backtest Start Year")
StartMonth = input(1, "Backtest Start Month")
StartDay = input(1, "Backtest Start Day")
UseStopLoss = input(false,"UseStopLoss")
//rsiLong = true
rsi1 = rsi(close, 14)

window() => true

stopLoss = input(20, title = "Stop loss percentage(0.1%)")
//stopLoss = input(200, title = "Stop loss percentage(0.1%)")

maFastSource   = input(defval = open, title = "Fast MA Source")
maFastLength   = input(defval = 12, title = "Fast MA Period", minval = 1)
// long ma
maSlowSource   = input(defval = open, title = "Slow MA Source")
maSlowLength   = input(defval = 26, title = "Slow MA Period", minval = 1)

maFast = ema(maFastSource, maFastLength)
maSlow = ema(maSlowSource, maSlowLength)

//12 and 26=9%; 3 and8=2%; 26 and 55=2%; when selling on a cross under
//maFastRSI = ema(rsi1, 12)
//maSlowRSI = ema(rsi1, 26)

fast = plot(maFast, title = "Fast MA", color = #7a8598, linewidth = 2, style = line, transp = 50)
slow = plot(maSlow, title = "Slow MA", color = #e08937, linewidth = 2, style = line, transp = 50)


longEMA = crossover(maFast, maSlow)
exitLong = crossunder(maFast, maSlow) // 5% in 2018
//exitLong = crossunder(close, maFast) // 15% in 2018
//exitLong = crossunder(rsi1, maFastRSI) // 13%

shortEMA = crossover(maSlow, maFast)
exitShort = crossover(maFast, maSlow)

//if (rsi1 < ema(rsi1,7))
//rsiLong = false

//if (longEMA and (rsi1 >= highest(rsi1,10)))
//if (longEMA)
if (longEMA and (rsi1 > ema(rsi1,26)))  //RSI ema values optimal from 19 to 35
    strategy.entry("LongId", strategy.long, when=window())

//strategy.close_all(when = rsi1 > 60) // 80=26%, 90=n/a, 70=15%, 60=16% long only
//strategy.close_all(when = (shortEMA and (rsi1 <= ema(rsi1,26)))) //10% gain in 2018 long only
//strategy.close_all(when = (rsi1 <= ema(rsi1,120))) //26=17% 14=2% 42=15%
//strategy.close_all(when = (shortEMA)) // 5% gain in 2018 long only
//strategy.close_all(when = exitLong) 

//if (shortEMA and not(rsiLong))
//if (shortEMA)
if (shortEMA and (rsi1 <= ema(rsi1,26)))
    strategy.entry("ShortId", strategy.short, when=window())

if (UseStopLoss)
    strategy.exit("StopLoss", "LongId", loss = close * stopLoss / 1000 / syminfo.mintick)
    strategy.exit("StopLoss", "ShortId", loss = close * stopLoss / 1000 / syminfo.mintick)

Plus de