Stratégie de croisement des moyennes mobiles RSI

Auteur:ChaoZhang est là., Date: 2023-11-07 15h35 et 58 min
Les étiquettes:

img

Résumé

La RSI Moving Average Crossover Strategy est une stratégie qui est principalement utilisée pour le trading de crypto-monnaie.

La logique de la stratégie

L'indicateur RSI reflète la force du prix basée sur les mouvements à la hausse et à la baisse sur une certaine période de temps.

Ensuite, la stratégie applique une moyenne mobile à l'indicateur RSI. La moyenne mobile peut filtrer les fluctuations aléatoires et déterminer la direction de la tendance.

Lorsque le RSI dépasse sa moyenne mobile, il est considéré comme un signal d'achat. Lorsque le RSI dépasse sa moyenne mobile, il est considéré comme un signal de vente.

Dans le code, l'indicateur RSI avec la durée de la période est calculé en premier. Ensuite, la moyenne mobile à 10 périodes ma de RSI est calculée. Lorsque ma traverse au-dessus de rsi, il achètera. Lorsque ma traverse en dessous de rsi, il vendra.

En outre, le code trace le graphique en lignes pour rsi et ma, ainsi que le graphique en colonnes pour rsi-ma. Les lignes de séparation pour rsi=70 et rsi=30 sont également tracées. Les flèches de signal correspondantes sont marquées sur le graphique lors de l'achat ou de la vente.

Analyse des avantages

  • Le RSI peut juger des conditions de surachat et de survente. La moyenne mobile peut filtrer les fluctuations aléatoires. La combinaison des deux peut identifier les points d'inversion de tendance.

  • Le croisement de la moyenne mobile RSI est une idée de stratégie de trading relativement mature qui peut filtrer certains faux signaux.

  • Le code de stratégie est simple et clair, facile à comprendre.

  • Cette stratégie fonctionne bien pour les crypto-monnaies avec des tendances relativement évidentes.

Analyse des risques

  • Les paramètres incorrects de l'indice de volatilité et de la moyenne mobile peuvent générer trop de mauvais signaux.

  • Il est nécessaire de combiner l'analyse des tendances.

  • Les coûts de négociation peuvent avoir une certaine incidence sur les bénéfices.

  • Il faut être vigilant pour éviter les pertes.

Pour faire face aux risques, les paramètres peuvent être ajustés afin d'optimiser les indicateurs, les positions peuvent être réduites, le stop loss peut être défini et l'analyse des tendances peut être utilisée pour filtrer les signaux.

Directions d'optimisation

  • Recherchez la combinaison optimale de RSI et de moyenne mobile sous différents paramètres de période.

  • Augmenter la taille de la position lorsque la tendance est forte, et réduire lorsque la tendance est floue.

  • Mettez un stop-loss dynamique pour suivre la tendance.

  • Explorez la combinaison de RSI avec d'autres indicateurs pour former de nouveaux signaux de trading.

  • Explorez des modèles d'apprentissage automatique basés sur cette stratégie pour améliorer le taux de réussite.

Résumé

La stratégie de croisement des moyennes mobiles du RSI combine les avantages des indicateurs de tendance et de filtrage, relativement matures et fiables. La logique de la stratégie est simple et claire, et la mise en œuvre du code est également assez complète. Dans l'ensemble, c'est une assez 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)

////////////////////////////////////////////////////////////////////////////////













Plus de