Stratégie de suivi de tendance pour les croisements RSI et MA


Date de création: 2024-02-20 15:31:15 Dernière modification: 2024-02-20 15:31:15
Copier: 1 Nombre de clics: 850
1
Suivre
1617
Abonnés

Stratégie de suivi de tendance pour les croisements RSI et MA

Aperçu

La stratégie détermine la tendance du marché et le moment d’entrée en bourse en croisant l’indicateur RSI avec la moyenne des MA de deux périodes différentes. La stratégie ne fait plus que lorsque le RSI est supérieur à sa propre moyenne de 26 périodes et prend une position blanche lorsque le RSI est inférieur à sa propre moyenne de 26 périodes pour contrôler le risque.

Principe de stratégie

La stratégie utilise deux courbes moyennes MA de 12 cycles et de 26 cycles. Lorsque la courbe douze cycles traverse la courbe lente de 26 cycles, le marché est considéré comme entrant dans une tendance à la hausse; lorsque la courbe lente traverse la courbe rapide, le marché est considéré comme entrant dans une tendance à la baisse.

En même temps, la stratégie introduit l’indicateur RSI pour juger des zones de survente et de survente. La stratégie prend une position plus élevée lors d’une croix d’or sur la moyenne uniquement lorsque le RSI est supérieur à sa propre moyenne de 26 cycles. Elle prend une position vide lors d’une croix de mort sur la moyenne uniquement lorsque le RSI est inférieur à sa propre moyenne de 26 cycles.

Analyse des avantages

Cette stratégie combine la moyenne et l’indicateur RSI pour juger de la tendance et du moment d’entrée, ce qui permet de suivre efficacement la tendance. L’introduction de l’indicateur RSI comme condition de filtrage peut réduire le nombre d’ouvertures de position et éviter d’être piégé dans des situations de choc.

Analyse des risques

En l’absence d’arrêt, les pertes peuvent être amplifiées si le jugement est erroné. De plus, les conditions de filtrage du RSI peuvent être mal réglées et vous pouvez manquer une bonne opportunité d’entrée.

Vous pouvez envisager de régler un stop-loss pour contrôler la perte maximale. Vous pouvez ajuster les paramètres du RSI de manière appropriée pour rechercher de meilleures conditions de filtrage. Si les fluctuations sont importantes, vous pouvez ajuster les paramètres de la moyenne de manière appropriée, en utilisant une moyenne plus lente pour juger de la tendance.

Direction d’optimisation

Cette stratégie peut être optimisée dans les domaines suivants:

  1. Testez les combinaisons de lignes moyennes MA de différentes périodes pour trouver les paramètres de la ligne moyenne qui correspondent le mieux aux caractéristiques du marché actuel.

  2. Tester les différents paramètres de cycle du RSI, les différentes conditions de filtrage et optimiser le moment d’entrée.

  3. Ajout d’autres indicateurs ou conditions de filtrage pour améliorer la stabilité du système. Par exemple, ajout d’indicateurs de capacité, d’indicateurs de volume de transaction et autres indicateurs liés à la détermination de la tendance.

  4. Optimiser les stratégies de stop loss et contrôler les risques tout en suivant les tendances. Des stratégies de stop loss telles que le stop loss tracking, le stop loss percentage et le stop loss dynamique peuvent être testées.

Résumer

La stratégie est généralement simple et directe, elle permet de juger de la tendance en croisant les lignes de la même manière. Le RSI évite d’ouvrir des positions forcées, ce qui permet de suivre la tendance pour obtenir de meilleurs rendements. La stratégie peut être améliorée par l’optimisation des paramètres, l’ajout d’autres indicateurs, etc., afin de la rendre plus adaptée aux environnements de marché complexes et variables.

Code source de la stratégie
/*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)