
La stratégie de croisement de la moyenne du RSI est une stratégie utilisée dans le trading de crypto-monnaies. Elle applique la moyenne mobile à l’indicateur RSI et émet des signaux d’achat et de vente en fonction de la croisement du RSI avec sa moyenne mobile.
La stratégie commence par calculer l’indicateur RSI. L’indicateur RSI est basé sur les fluctuations à la baisse d’une période donnée, reflétant la force et la faiblesse des prix. Le RSI supérieur à 70 est une zone de survente et inférieur à 30 est une zone de survente.
Ensuite, la stratégie applique une moyenne mobile basée sur l’indicateur RSI. La moyenne mobile est capable de filtrer les fluctuations aléatoires et de déterminer la direction de la tendance.
Lorsque le RSI est au-dessus de sa moyenne mobile, il est considéré comme un signal d’achat; lorsque le RSI est en dessous de sa moyenne mobile, il est considéré comme un signal de vente. Traiter en fonction de ces deux signaux.
Dans le code, on commence par calculer l’indicateur RSI pour les cycles de longueur. On calcule ensuite la moyenne mobile des cycles de 10 RSI ma. On achète lorsque ma dépasse rsi; on vend lorsque ma dépasse rsi.
En outre, le code trace un diagramme linéaire de rsi, ma, et un diagramme colonnade de rsi-ma. Il trace une ligne de démarcation de rsi=70, rsi=30 et marque les flèches correspondantes sur le diagramme lors de l’achat et de la vente.
Il est possible d’ajuster les paramètres pour optimiser l’effet de l’indicateur en fonction du risque, de réduire les positions de manière appropriée, de définir une ligne de stop-loss et de filtrer les signaux en combinaison avec l’analyse des tendances.
La stratégie de croisement de la RSI, combinant les avantages de l’indicateur de tendance et de l’indicateur de filtrage, est relativement mature et fiable. La logique de la stratégie est simple et compréhensible, la mise en œuvre du code est complète et, dans l’ensemble, c’est une bonne stratégie de trading de crypto-monnaie.
/*backtest
start: 2022-10-31 00:00:00
end: 2023-11-06 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("RSI w MA Strategy", shorttitle="RSI w MA Strategy", overlay=false, initial_capital=10000, currency='USD',process_orders_on_close=true)
//TIME FRAME AND BACKGROUND CONTROL/////////////////////////////////////////////
testStartYear = input(2019, "Backtest Start Year")
testStartMonth = input(01, "Backtest Start Month")
testStartDay = input(01, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, 0, 0)
testStopYear = input(2022, "Backtest Stop Year")
testStopMonth = input(1, "Backtest Stop Month")
testStopDay = input(1, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0)
testPeriodBackground = input(title="Color Background?", type=input.bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and time >= testPeriodStart and time <= testPeriodStop ?
color.teal : na
//bgcolor(testPeriodBackgroundColor, transp=50)
testPeriod() => true
////////////////////////////////////////////////////////////////////////////////
src = close, len = input(27, minval=1, title="Length")
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
window = input(10, "RSI MA Window")
ma = sma(rsi,window)
plot(rsi, color=color.orange)
colorr= ma > rsi ? color.red : color.green
plot(ma,color=colorr)
band1 = hline(70)
band0 = hline(30)
fill(band1, band0, color=color.purple, transp=90)
diff = rsi - ma
plot(diff,style= plot.style_columns,transp=50,color = colorr)
plotshape(crossunder(rsi,ma)?rsi:na,title="top",style=shape.triangledown,location=location.absolute,size=size.tiny,color=color.red,transp=0)
plotshape(crossover(rsi,ma)?rsi:na,title="bottom",style=shape.triangleup,location=location.absolute,size=size.tiny,color=color.lime,transp=0)
buySignal = crossover(rsi,ma)
sellSignal = crossunder(rsi,ma)
//TRADE CONTROL/////////////////////////////////////////////////////////////////
if testPeriod()
if buySignal
strategy.close("Short", qty_percent = 100, comment = "Close Short")
strategy.entry("Long", strategy.long, qty=.1)
if sellSignal
strategy.close("Long", qty_percent = 100, comment = "Close Long")
strategy.entry("Short", strategy.short, qty=.1)
////////////////////////////////////////////////////////////////////////////////