Stratégie de combinaison RSI et MA

RSI MA EMA SMA HMA WMA STOCHRSI
Date de création: 2024-05-28 17:34:11 Dernière modification: 2024-05-28 17:34:11
Copier: 2 Nombre de clics: 1310
1
Suivre
1617
Abonnés

Stratégie de combinaison RSI et MA

Aperçu

La stratégie combine l’indicateur RSI avec une moyenne mobile ((MA) pour générer un signal de transaction. Le RSI est utilisé pour juger si le marché est en survente ou en survente, et la MA pour juger de la tendance des prix. Il génère un signal de vente lorsque le RSI est en survente et le prix est supérieur à la MA.

Principe de stratégie

  1. Calculer la valeur de l’indicateur RSI pour déterminer si le marché est en survente (<70) ou en survente (<30).
  2. Calculer la MA de cycle personnalisé, comprenant les quatre types d’EMA, SMA, HMA et WMA, et décider si elle apparaît sur le graphique en fonction du paramètre de réglage.
  3. Un signal d’achat est généré lorsque le RSI est en sur-achat et que le cours de clôture est supérieur à la MA; un signal de vente est généré lorsque le RSI est en survente ou que la MA génère une fourchette morte.
  4. L’introduction de l’indicateur StochRSI comme jugement auxiliaire marque un indice sur le graphique lorsque le StochRSI est surbouti (<70) ou survendu (<30), mais ne génère pas de signal de transaction réel.

Avantages stratégiques

  1. La combinaison organique des deux indicateurs classiques RSI et MA permet de mieux saisir le moment de la tendance et le moment où il est trop acheté ou trop vendu.
  2. Le type et les paramètres de l’AM peuvent être réglés librement, avec une grande flexibilité, et peuvent être ajustés en fonction des différentes caractéristiques du marché.
  3. L’introduction de l’indicateur StochRSI comme aide à la prise de décision et comme référence supplémentaire pour les décisions de négociation.
  4. La logique du code est claire, lisible, facile à comprendre et à utiliser.

Risque stratégique

  1. Le RSI et la MA sont des indicateurs en retard et peuvent générer plus de signaux trompeurs au début d’un renversement de tendance.
  2. Une mauvaise configuration des paramètres peut entraîner un signal trop tôt ou trop tard, affectant les gains globaux.
  3. Le manque de gestion des stops et des positions peut entraîner des risques importants en cas de forte volatilité.

Orientation de l’optimisation de la stratégie

  1. L’introduction d’indicateurs plus avancés tels que le taux de volatilité permet d’évaluer à l’avance les changements de tendance.
  2. Les signaux d’achat et de vente sont filtrés, comme si le RSI et le MA remplissaient simultanément certaines conditions pour générer un signal afin d’améliorer l’exactitude du signal.
  3. Ajout de modules de gestion des stop-loss et des positions dans la stratégie pour contrôler les risques individuels et les risques globaux.
  4. Optimiser les paramètres de la stratégie pour trouver la meilleure combinaison de paramètres.
  5. Envisagez d’inclure différents cycles ou plusieurs variétés, en tirant le meilleur parti des relations entre les variétés ou les cycles.

Résumer

La stratégie est simple et claire. L’idée générale est simple et claire. Cependant, la stratégie présente quelques lacunes, telles que le manque de mesures de contrôle des risques, l’amélioration de l’exactitude du signal, etc.

Code source de la stratégie
/*backtest
start: 2023-05-22 00:00:00
end: 2024-05-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("RSI Strategy with Customizable MA and StochRSI Alert", overlay=true)

// กำหนดค่า RSI สำหรับการเปิดสัญญาณซื้อและขาย
rsiOverbought = input(70, title="RSI Overbought Level")
rsiOversold = input(30, title="RSI Oversold Level")

// เลือกชนิดของเส้นค่าเฉลี่ยเคลื่อนที่
maType = input.string("EMA", title="MA Type", options=["EMA", "SMA", "HMA", "WMA"])

// กำหนดค่าเส้นค่าเฉลี่ยเคลื่อนที่
maShortLength = input(12, title="MA Short Length")
maLongLength = input(26, title="MA Long Length")

// เลือกการแสดงผลของเส้นค่าเฉลี่ยเคลื่อนที่
showShortMA = input(true, title="Show Short Moving Average")
showLongMA = input(true, title="Show Long Moving Average")

// ฟังก์ชันสำหรับเลือกชนิดของเส้นค่าเฉลี่ยเคลื่อนที่
f_ma(src, length, type) =>
    switch type
        "SMA" => ta.sma(src, length)
        "EMA" => ta.ema(src, length)
        "HMA" => ta.hma(src, length)
        "WMA" => ta.wma(src, length)

// คำนวณค่าเส้นค่าเฉลี่ยเคลื่อนที่
maShort = showShortMA ? f_ma(close, maShortLength, maType) : na
maLong = showLongMA ? f_ma(close, maLongLength, maType) : na

// คำนวณค่า RSI
rsiValue = ta.rsi(close, 14)

// สร้างสัญญาณซื้อและขาย
buySignal = (rsiValue > rsiOverbought and ((showShortMA and showLongMA and close > maShort and maShort > maLong) or (showShortMA and not showLongMA and close > maShort) or (showLongMA and not showShortMA and close > maLong)))
sellSignal = (showShortMA and showLongMA and ta.crossover(maLong, maShort)) or (showShortMA and not showLongMA and ta.crossover(maShort, close)) or (showLongMA and not showShortMA and ta.crossover(maLong, close))

// แสดงค่าเส้นค่าเฉลี่ยเคลื่อนที่บนกราฟ
plot(maShort, color=color.red, title="MA Short")
plot(maLong, color=color.green, title="MA Long")

// คำนวณค่า Stochastic RSI
smoothK = 3
smoothD = 3
RSIlen = 14
STOlen = 14
SRsrc = close
OSlevel = 30
OBlevel = 70

rsi1 = ta.rsi(SRsrc, RSIlen)
k = ta.sma(ta.stoch(rsi1, rsi1, rsi1, STOlen), smoothK)
d = ta.sma(k, smoothD)

stochRSIOverbought = OBlevel
stochRSIOversold = OSlevel

stochRSIBuyAlert = ta.crossover(k, stochRSIOversold)
stochRSISellAlert = ta.crossunder(k, stochRSIOverbought)

// สร้างคำสั่งซื้อและขายเมื่อมีสัญญาณจาก RSI และ MA เท่านั้น
if (buySignal)
    strategy.entry("Buy", strategy.long)
if (sellSignal)
    strategy.close("Buy")

// แสดงสัญญาณเตือนจาก Stochastic RSI บนกราฟ
plotshape(series=stochRSIBuyAlert, location=location.belowbar, color=color.green, style=shape.labelup, title="StochRSI Buy Alert")
plotshape(series=stochRSISellAlert, location=location.abovebar, color=color.red, style=shape.labeldown, title="StochRSI Sell Alert")

// แสดงสัญญาณซื้อและขายจาก RSI และ MA บนกราฟ
plotshape(series=buySignal, location=location.top, color=color.green, style=shape.triangleup, title="RSI>70")
plotshape(series=sellSignal, location=location.top, color=color.red, style=shape.triangledown, title="MA crossoverDown")