
Die Binäre RSI-Breakout-Strategie ist eine algorithmische Handelsstrategie, die den RSI-Indikator verwendet, um die Preiswendepunkte zu identifizieren. Sie vergleicht den RSI-Indikator mit den eingestellten Auf- und Abwärtswerten, um zu beurteilen, ob der Markt überkauft ist und ein Handelssignal auslöst.
Die RSI-Indikator basiert auf der Veränderung des Schlusskurses innerhalb eines bestimmten Zeitraums und spiegelt die Kaufkraft der Aktie wider. Wenn der RSI über die festgelegte Obergrenze (default 75) geht, bedeutet dies, dass die Aktie in die Überkaufzone gelangt ist. Wenn der RSI unter die festgelegte Untergrenze (default 25) geht, bedeutet dies, dass die Aktie in die Überverkaufszone gelangt ist.
Die Strategie-Regel:
Die Trading-Logik ist einfach und klar, die Referenzparameter sind vernünftig eingestellt, die Konfigurationsfläche ist groß und eignet sich für die Erfassung größerer Trends in der Marktlage.
Diese Strategie hat folgende Vorteile:
Insgesamt ist die Strategie Referenzparameter vernünftig eingestellt, einfach zu implementieren, kann durch den RSI-Indikator effektiv beurteilen, ob die Preise umgekehrt sind, ist geeignet für die mittlere und lange Linie, um große Trends zu erfassen, und ist eine leicht zu handhabende quantitative Strategie.
Obwohl die Strategie relativ einfach und zuverlässig ist, dürfen wir die potenziellen Risiken nicht ignorieren:
Um die Risiken zu kontrollieren, müssen wir folgende Punkte beachten:
Angesichts der Tatsache, dass die Strategie vor allem mit dem Risiko von Umkehrfehlern und Verlusten aus dem Konjunkturstadium konfrontiert ist, können wir Optimierungen in den folgenden Bereichen vornehmen:
Die zweiseitige RSI-Breakout-Strategie ist insgesamt eine einfache und praktische Quantifizierungsstrategie. Sie beurteilt die Preisumkehr durch den RSI-Indikator und ermöglicht eine einfache Trendverfolgung. Obwohl ein gewisses Risiko für Fehleinschätzungen besteht, kann sie durch Parameteranpassung und Signalfilterung optimiert werden und spielt eine wichtige Rolle bei der Erfassung von mittleren und langen Trends.
/*backtest
start: 2023-12-19 00:00:00
end: 2023-12-26 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("RSI Algo", overlay=true)
// Calculate start/end date and time condition
DST = 1 //day light saving for usa
//--- Europe
London = iff(DST==0,"0000-0900","0100-1000")
//--- America
NewYork = iff(DST==0,"0400-1500","0500-1600")
//--- Pacific
Sydney = iff(DST==0,"1300-2200","1400-2300")
//--- Asia
Tokyo = iff(DST==0,"1500-2400","1600-0100")
//-- Time In Range
timeinrange(res, sess) => time(res, sess) != 0
london = timeinrange(timeframe.period, London)
newyork = timeinrange(timeframe.period, NewYork)
time_cond = true
myPeriod = input(defval=14, type=input.integer, title="Period")
myThresholdUp = input(defval=75, type=input.float, title="Upper Threshold")
myThresholdDn = input(defval=25, type=input.float, title="Lower Threshold")
myAlgoFlipToggle = input(defval=false, type=input.bool, title="Imverse Algorthim")
myLineToggle = input(defval=true, type=input.bool, title="Show Lines")
myLabelToggle = input(defval=true, type=input.bool, title="Show Labels")
myRSI=rsi(close, myPeriod)
buy = myAlgoFlipToggle ? falling(myRSI,1) and cross(myRSI, myThresholdDn) : rising(myRSI, 1) and cross(myRSI,myThresholdUp) //and time_cond
sell = myAlgoFlipToggle ? rising(myRSI, 1) and cross(myRSI,myThresholdUp) : falling(myRSI,1) and cross(myRSI, myThresholdDn) //and time_cond
myPosition = 0
myPosition := buy==1 ? 0 : sell==1 or myPosition[1]==1 ? 1 : 0
trendColor = buy ? color.red : sell ? color.green : na
plot(myLineToggle ? buy and myPosition[1]==1 ? low - 0.004: sell and myPosition[1]==0 ? high + 0.004 : na : na, color=trendColor, style=plot.style_line, linewidth=4, editable=false)
plotshape(myLabelToggle ? buy and myPosition[1]==1 ? low - 0.005 : na : na, style=shape.labelup, location=location.absolute, text="Buy", transp=0, textcolor = color.white, color=color.black, editable=false)
plotshape(myLabelToggle ? sell and myPosition[1]==0 ? high + 0.005 : na : na, style=shape.labeldown, location=location.absolute, text="Sell", transp=0, textcolor = color.white, color=color.black, editable=false)
strategy.initial_capital = 50000
//Calculate the size of the next trade
balance = strategy.netprofit + strategy.initial_capital //current balance
floating = strategy.openprofit //floating profit/loss
risk = input(2,type=input.float,title="Risk %")/100 //risk % per trade
isTwoDigit = input(false,"Is this a 2 digit pair? (JPY, XAU, XPD...")
stop = input(250, title="stop loss pips")
tp = input(2500, title="take profit pips")
if(isTwoDigit)
stop := stop/100
temp01 = balance * risk //Risk in USD
temp02 = temp01/stop //Risk in lots
temp03 = temp02*100000 //Convert to contracts
size = 1
strategy.entry("long",1,size,when=buy and myPosition[1]==1 )
strategy.entry("short",0,size,when=sell and myPosition[1]==0)
strategy.exit("exit_long","long",loss=stop, profit=tp) //Long exit (stop loss)
strategy.exit("exit_short","short",loss=stop, profit=tp) //Short exit (stop loss)
//strategy.close_all(when= not time_cond)