Stratégie de trading de capture d'inversion de l'indicateur de momentum RSI


Date de création: 2024-01-03 12:09:48 Dernière modification: 2024-01-03 12:09:48
Copier: 1 Nombre de clics: 661
1
Suivre
1621
Abonnés

Stratégie de trading de capture d’inversion de l’indicateur de momentum RSI

Aperçu

Cette stratégie commence par calculer les ADX et les SMA sur les périodes de temps élevées pour identifier les tendances et les changements de tendance. Ensuite, elle calcule le RSI sur les périodes de temps basses pour identifier les phénomènes d’achat et de vente excessive, formant un signal de transaction.

Principe de stratégie

  1. Calculer la force de la tendance sur une période de temps élevée. Une augmentation de l’ADX représente un renforcement de la tendance.

  2. Le calcul de la direction de la tendance est effectué sur une période de temps élevée. Une augmentation de la SMA représente une augmentation du prix, une baisse de la SMA représente une baisse du prix.

  3. Le RSI est calculé sur une période de temps basse pour juger de l’excédent d’achat et de la survente. Un RSI supérieur à la marge signifie un excédent d’achat et un RSI inférieur à la marge signifie un excédent de vente.

  4. Lorsque l’ADX est en hausse, le SMA en hausse et le RSI du basse-course est en hausse, il est possible de faire une pause.

  5. Lorsque l’ADX est en hausse, la SMA est en baisse et le RSI du basse-cour est en survente, on peut faire plus en pensant que la tendance est en train de se renforcer vers le bas.

Analyse des avantages

  1. La combinaison d’un jugement de tendance et d’une négociation de revers permet de saisir les occasions de revers dans les grandes tendances.

  2. L’utilisation d’une combinaison d’indicateurs sur différentes périodes peut améliorer la fiabilité du signal.

  3. La stratégie RSI est simple, facile à comprendre et à mettre en œuvre.

Analyse des risques

  1. Il est possible que le RSI produise de faux signaux, ce qui entraîne des pertes de transactions. La probabilité de faux signaux peut être réduite par l’optimisation des paramètres.

  2. Le jugement de la tendance macro-cyclique peut être erroné, ce qui rend la stratégie inappropriée pour l’environnement du marché. Il est possible d’envisager de combiner plus d’indicateurs pour juger de la tendance.

  3. La fréquence des transactions peut être trop élevée et le coût des transactions peut affecter la rentabilité. Les paramètres RSI peuvent être ajustés de manière appropriée pour réduire le nombre de transactions.

Direction d’optimisation

  1. Testez plus de combinaisons de paramètres pour trouver la meilleure correspondance entre les paramètres RSI et les paramètres ADX, SMA.

  2. Le système de coupe-perte est renforcé pour contrôler les pertes individuelles.

  3. Considérez la possibilité de réduire votre position lorsque la volatilité est faible, combinée à des indicateurs de volatilité.

  4. Optimiser les prix d’entrée et de sortie spécifiques, par exemple, le prix le plus élevé de la ligne K précédente est entré dans la zone de couverture.

Résumer

Cette stratégie intègre le jugement de la tendance et les signaux de trading de revers, pour trouver des opportunités de revers locaux dans les grandes tendances cycliques. Comparé à l’utilisation du seul RSI, il est plus fiable et évite d’être piégé.

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

//@version=3
strategy("RSI scalping", overlay=true)

CustSession 	= input(defval=true,title= "Custom Resolution / TF ? ",type=bool)
SessionTF0	= input(title="Custom Resolution / TF", defval="180")
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
length = input(7, title= "RSI length")
overSold = input( 28, title= "RSI oversold" )
overBought = input( 68, title= "RSI overbought" )

RSI = rsi(close, 7)

res		=	CustSession ? SessionTF0 : period

o = request.security(syminfo.tickerid, res, open)
c = request.security(syminfo.tickerid, res, close)
l = request.security(syminfo.tickerid, res, low)
h = request.security(syminfo.tickerid, res, high)

 // ADX higher time frame
dirmov(len) =>
	up = change(h)
	down = -change(l)
	plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
    minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
    truer = request.security(syminfo.tickerid, res, tr)
	truerange = rma(truer, len)
	plus = fixnan(100 * rma(plusDM, len) / truerange)
	minus = fixnan(100 * rma(minusDM, len) / truerange)
	[plus, minus]

adx(dilen, adxlen) =>
	[plus, minus] = dirmov(dilen)
	sum = plus + minus
	adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)

sig = adx(dilen, adxlen)

// SMA higher time frame
len = input(20, minval=1, title="SMA HTF Length")
smma = 0.0
smma := na(smma[1]) ? sma(c, len) : (smma[1] * (len - 1) + c) / len

ADXrising = (sig > sig[1]) and (sig[1] > sig[2]) and (sig[2]  > sig[3]) and (sig > 15)
SMAdrop= (smma < smma[1]) and (smma[1] < smma[2]) and (smma[2] < smma[3])
SMArising = (smma > smma[1]) and (smma[1] > smma[2]) and (smma[2] > smma[3])
longCondition = crossover(RSI, overBought) and ADXrising and SMArising
shortCondition = crossunder(RSI, overSold) and SMAdrop and ADXrising 

if (longCondition)
    strategy.entry("Long entry", strategy.long)

if (shortCondition)
    strategy.entry("Short Entry", strategy.short)