
Die Strategie ermöglicht mehrere Durchbrüche des Preises, indem sie die Parameter des RSI-Indikators mehrmals einstellt, was zu einem genaueren Einstiegs- und Ausstiegssignal führt.
Die Strategie setzt zwei Arten von RSI-Parametern ein: RSI-Zyklen mit 7 und RSI-Zyklen mit 14, die auf 25 begrenzt sind. Ein Über- oder Unterkurs wird ausgeführt, wenn der Preis die Grenzen eines beliebigen RSI-Satzes überschreitet.
Die Strategie berechnet zunächst die Werte der beiden RSI-Indikatoren und entscheidet dann, ob der Preis die Obergrenze oder die Untergrenze des RSI überschreitet. Wenn die Obergrenze überschritten wird, wird ein Mehr-Signal erzeugt, und wenn die Untergrenze überschritten wird, wird ein Fehlsignal erzeugt.
Wenn bereits eine Position gehalten wird, wird weiterhin beurteilt, ob der aktuelle RSI im Normalbereich liegt. Wenn der RSI normal ist und die Einheit gleichzeitig die Hälfte der Mittellinie durchbricht, wird ein Ausstiegssignal erzeugt.
Die Strategie nutzt auch die Martingale-Lagerung. Nach jedem Verlust verdoppelt sich der Umsatz beim nächsten Handel.
Die Verwendung von zwei Sätzen von RSI-Indikatoren ermöglicht eine genauere Beurteilung von Durchbruchsignalen und verhindert falsche Durchbrüche.
Es ist wichtig, dass die Banken die Eintrittsverluste überprüfen, um falsche Transaktionen während der Erschütterung zu vermeiden.
Mit der Martingale-Aufstockung kann man nach einem Verlust schnell aufhören.
Anpassbare RSI-Parameterkombinationen zur Optimierung der Aufnahmechancen.
Es ist möglich, die Zeit der Transaktionen zu begrenzen, um die Auswirkungen von Großereignissen zu vermeiden.
Der Doppel-RSI ist nicht in der Lage, einen Falschbruch vollständig zu vermeiden.
Die Marginal-Positionen werden bei Verlusten erhöht und leicht ausgebrochen.
Die Auswirkungen der Transaktionskosten werden nicht berücksichtigt.
Es gibt viele Parameter, die optimiert werden können, und es wird eine Menge Tests benötigt, um die optimale Kombination von Parametern zu finden.
Es ist möglich, einen Stop-Loss einzurichten, um die Verluste zu begrenzen; die RSI-Parameterpalette zu optimieren; Kostenüberlegungen hinzuzufügen; und die Breakout-Bestimmung entsprechend zu lockern.
Der Einstieg in die Stop-Loss-Regelung kann die maximale Verlustquote begrenzen.
Optimierung der RSI-Parameterkombination, um die optimalen Parameter zu finden, um falsche Durchbrüche zu reduzieren.
Berücksichtigen Sie die Auswirkungen der Transaktionskosten und vermeiden Sie zu häufige Transaktionen.
Die Einführung von Breakout-Beschlüssen für Unternehmen und die Erweiterung der Handelsmöglichkeiten.
Es gibt auch eine Reihe von Filtern, die auf andere Indikatoren angewendet werden können, um zu verhindern, dass sie eingeschlossen werden.
Die Strategie nutzt die Doppel-RSI-Anzeige, um Preis-Breakouts zu ermitteln, und fügt die Entität Breakouts zu vermeiden, um in einem bewegten Markt eingeschlossen zu werden. Die Strategie nutzt auch die Martingale-Positionierung, um schnelle Verluste zu stoppen. Die Strategie kann durch Parameteroptimierung und das Hinzufügen von mehr Indikatorfiltern ein genaueres Handelssignal erhalten.
/*backtest
start: 2023-10-30 00:00:00
end: 2023-11-06 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Noro
//2018
//@version=2
strategy(title = "Noro's Fast RSI Strategy v2.0", shorttitle = "Fast RSI str 2.0", overlay = true)
//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
usemar = input(false, defval = false, title = "Use Martingale")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
usersi1 = input(true, defval = true, title = "Use RSI #1")
rsiperiod1 = input(7, defval = 7, minval = 2, maxval = 50, title = "#1 RSI Period")
rsilimit1 = input(25, defval = 25, minval = 1, maxval = 100, title = "#1 RSI limit")
usersi2 = input(true, defval = true, title = "Use RSI #2")
rsiperiod2 = input(14, defval = 14, minval = 2, maxval = 50, title = "#2 RSI Period")
rsilimit2 = input(25, defval = 25, minval = 1, maxval = 100, title = "#2 RSI limit")
showarr = input(false, defval = false, title = "Show Arrows")
fromyear = input(2018, defval = 2018, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")
//RSI #1
uprsi1 = rma(max(change(close), 0), rsiperiod1)
dnrsi1 = rma(-min(change(close), 0), rsiperiod1)
rsi1 = dnrsi1 == 0 ? 100 : uprsi1 == 0 ? 0 : 100 - (100 / (1 + uprsi1 / dnrsi1))
uplimit1 = 100 - rsilimit1
dnlimit1 = rsilimit1
//RSI #2
uprsi2 = rma(max(change(close), 0), rsiperiod2)
dnrsi2 = rma(-min(change(close), 0), rsiperiod2)
rsi2 = dnrsi2 == 0 ? 100 : uprsi2 == 0 ? 0 : 100 - (100 / (1 + uprsi2 / dnrsi2))
uplimit2 = 100 - rsilimit2
dnlimit2 = rsilimit2
//Body
body = abs(close - open)
abody = sma(body, 10)
//Signals
bar = close > open ? 1 : close < open ? -1 : 0
up1 = bar == -1 and (strategy.position_size == 0 or close < strategy.position_avg_price) and rsi1 < dnlimit1 and body > abody / 5 and usersi1
dn1 = bar == 1 and (strategy.position_size == 0 or close > strategy.position_avg_price) and rsi1 > uplimit1 and body > abody / 5 and usersi1
up2 = bar == -1 and (strategy.position_size == 0 or close < strategy.position_avg_price) and rsi2 < dnlimit2 and body > abody / 5 and usersi2
dn2 = bar == 1 and (strategy.position_size == 0 or close > strategy.position_avg_price) and rsi2 > uplimit2 and body > abody / 5 and usersi2
norma = rsi1 > dnlimit1 and rsi1 < uplimit1 and rsi2 > dnlimit2 and rsi2 < uplimit2
exit = (((strategy.position_size > 0 and bar == 1 and norma) or (strategy.position_size < 0 and bar == -1 and norma)) and body > abody / 2)
//Arrows
col = exit ? black : up1 or dn1 ? blue : up2 or dn2 ? red : na
needup = up1 or up2
needdn = dn1 or dn2
needexitup = exit and strategy.position_size < 0
needexitdn = exit and strategy.position_size > 0
plotarrow(showarr and needup ? 1 : na, colorup = blue, colordown = blue, transp = 0)
plotarrow(showarr and needdn ? -1 : na, colorup = blue, colordown = blue, transp = 0)
plotarrow(showarr and needexitup ? 1 : na, colorup = black, colordown = black, transp = 0)
plotarrow(showarr and needexitdn ? -1 : na, colorup = black, colordown = black, transp = 0)
//Trading
profit = exit ? ((strategy.position_size > 0 and close > strategy.position_avg_price) or (strategy.position_size < 0 and close < strategy.position_avg_price)) ? 1 : -1 : profit[1]
mult = usemar ? exit ? profit == -1 ? mult[1] * 2 : 1 : mult[1] : 1
lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 * mult : lot[1]
if up1 or up2
if strategy.position_size < 0
strategy.close_all()
strategy.entry("Long", strategy.long, needlong == false ? 0 : lot)
if dn1 or dn2
if strategy.position_size > 0
strategy.close_all()
strategy.entry("Short", strategy.short, needshort == false ? 0 : lot)
if exit
strategy.close_all()