
Cette stratégie utilise le croisement de l’indicateur RSI avec sa ligne moyenne comme signal de négociation et fait partie de la stratégie d’indicateur dynamique courante. Son principe central est de suivre le différentiel entre l’indicateur RSI et la moyenne mobile simple SMA_RSI du RSI, puis de calculer sur ce différentiel la moyenne mobile simple SMA_RSI2, en faisant plus lorsque le SMA_RSI2 est dépassé et en plaçant la position lorsque le SMA_RSI2 est dépassé.
La stratégie utilise trois paramètres pour calculer la moyenne mobile simple de l’indicateur RSI avec ses deux périodes différentes. Tout d’abord, l’indicateur RSI classique, dont la période est la longueur.
Ainsi, il constitue un signal de stratégie de négociation basé sur le croisement de la moyenne de l’indicateur RSI. Comme SMA_RSI2 est la moyenne du delta de la différence, il est capable de refléter la dynamique et la tendance des changements de l’indicateur RSI, capturant l’essence de l’indicateur RSI lui-même.
Cette stratégie combine les avantages de l’indicateur RSI et de son alignement, permettant de suivre la tendance des prix et d’éviter d’être induit en erreur par le bruit. L’utilisation d’une logique de delta de différence plus lisse rend les signaux de négociation plus clairs.
Les avantages sont les suivants:
Cette stratégie comporte aussi des risques, principalement:
Il y a plusieurs points à améliorer:
Cette stratégie est globalement simple et générique, elle augmente la praticité de l’indicateur RSI lui-même par le biais de l’opération de la différence, elle utilise le croisement de la ligne moyenne pour le jugement, la capacité de contrôle de rétraction est forte, c’est une stratégie d’indicateur de dynamique très pratique.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy ("RSI&SMA", overlay=false )
startP = timestamp(input(2017, "Start Year"), input(12, "Month"), input(17, "Day"), 0, 0)
end = timestamp((9999), (1), (1), 0, 0)
_testPeriod() => true
length = input(3, minval=1, title = "RSI period")
length2 = input(21, minval=1, title = "RSI SMA-1")
length3 = input(13, minval=1, title = "RSI SMA-2")
threshold = input(0,step=0.5, title="Threshold")
filter = input(false, title="Use filter?")
up = rma (max (change (close), 0), length)
down = rma (-min (change (close), 0), length)
RSI = down == 0? 100: up == 0? 0: 100-100 / (1 + up / down)
SMA_RSI = sma(RSI, length2)
delta = RSI-SMA_RSI
SMA_RSI2 = sma(delta, length3)
Long = crossover(SMA_RSI2, threshold)
Short = crossunder(SMA_RSI2, threshold)
plot(threshold, color=color.silver)
plot(SMA_RSI2, color= SMA_RSI2 > 0 ? color.blue : color.purple)
//plot(SMA_RSI, color=color.green)
//plot(delta, color=color.red)
long_condition = Long and (filter ? close > ema(close, 200) : true) and _testPeriod()
strategy.entry('BUY', strategy.long, when=long_condition)
short_condition = Short
strategy.close('BUY', when=short_condition)