
Die RSI-Linienkreuzung ist eine Strategie, die für den Handel mit Kryptowährungen angewendet wird. Die Strategie verwendet einen beweglichen Durchschnitt auf den RSI-Indikator und gibt ein Kauf- und Verkaufssignal an, wenn der RSI mit seinem beweglichen Durchschnitt gekreuzt wird.
Die Strategie berechnet zunächst den RSI. Der RSI basiert auf den Veränderungen der Kursbewegungen innerhalb eines bestimmten Zeitraums und spiegelt die Stärke der Preise wider. Der RSI ist über 70 als Überkaufzone und unter 30 als Überverkaufzone.
Die Strategie wendet dann einen Moving Average an, der auf dem RSI-Indikator basiert. Der Moving Average kann zufällige Schwankungen filtern, um die Richtung des Trends zu bestimmen. Hier wird ein RSI Moving Average mit 10 Zyklen festgelegt.
Wenn der RSI seinen Moving Average überschreitet, gilt dies als Kaufsignal; wenn der RSI seinen Moving Average unterschreitet, gilt dies als Verkaufssignal. Händeln Sie nach diesen beiden Signalen.
In dem Code wird zunächst der RSI-Indikator für die Länge berechnet. Dann wird der Moving Average für die 10-Zyklus-RSI ma berechnet. Wenn ma über rsi geht, wird gekauft; wenn ma unter rsi geht, wird verkauft.
Darüber hinaus zeichnet der Code die Linienbilder rsi, ma und rsi-ma sowie die Kolonnenbilder rsi=70, rsi=30 und die entsprechenden Signalpfeile auf dem Diagramm bei Kauf und Verkauf.
Die Parameter können an das Risiko angepasst werden, um die Wirkung des Indikators zu optimieren, die Positionen angemessen zu verkürzen, die Stop-Loss-Linie einzurichten und die Signalfilter mit der Trendanalyse zu kombinieren.
Die RSI-Linienkreuzstrategie kombiniert die Vorzüge von Trendindikatoren und Filterindikatoren und ist vergleichsweise ausgereift und zuverlässig. Die Strategie ist einfach zu verstehen, der Code ist vollständig implementiert und ist insgesamt eine gute Kryptowährungs-Handelsstrategie. Jede Strategie muss jedoch optimiert werden.
/*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)
////////////////////////////////////////////////////////////////////////////////