Die Oscillating Long-Short RSI Crypto Switching Strategie ist eine quantitative Handelsstrategie, die für Kryptowährungen entwickelt wurde. Sie kombiniert den technischen Indikator RSI mit dem ICHIMOKU-Indikator, um lange und kurze Signale während der Preisschwankungen zu identifizieren und niedrige und hohe Kauf- und Verkaufswerte zu erreichen. Sie eignet sich für mittelfristige bis langfristige Zeitrahmen wie 3-4 Stunden oder länger.
Die Strategie stützt sich hauptsächlich auf folgende Indikatoren und Regeln:
ICHIMOKU-Anzeiger
RSI-Indikator
Eintrittsregeln
Langer Eintrag: Tenkan-Kreuz über Kijun (goldenes Kreuz) und Preisbruch durch Senkou A & B Lines, mit RSI gleichzeitig über 50
Kurzer Eintrag: Tenkan-Kreuz unter Kijun (Todeskreuz) und Preisbruch Senkou A & B Lines, mit RSI unter 50 zur gleichen Zeit
Ausgangsregeln
Ausgang mit entgegengesetztem Signal
Die Strategie berücksichtigt den mittelfristigen bis langfristigen Trend, den kurzfristigen Kapitalfluss und die Überkauf-/Überverkaufsbedingungen, um Umkehrchancen während der Schwankungen zu erfassen.
1. Ein Urteil auf der Grundlage mehrerer Indikatoren gewährleistet eine hohe Sicherheit
Die Strategie berücksichtigt ICHIMOKU
2. Geeignet für Schwankungen, häufige Gewinnentnahme
Der Kryptowährungsmarkt hat große Schwankungen. Diese Strategie kann Umkehrmöglichkeiten während Schwankungen vollständig erfassen und häufige Kaufniedrig- und Verkaufshöhe erreichen.
3. Verhinderung der Verfolgung von Steigerungen und Schlagen von Rückzügen, kontrollierbares Risiko
Die Strategie berücksichtigt umfassend mittelfristige und langfristige Trends und kurzfristige Situationen, um das Risiko zu vermeiden, Anstiege zu verfolgen und Rückgänge zu übertreffen.
1. Manche Chancen verpassen
Die Strategie konzentriert sich hauptsächlich auf die Umkehrung, die zu häufigen Whipsaws während längerer Trendphasen führen kann.
2. Einheitliches Symbol, das kein Risiko diversifizieren kann
Die Strategie handelt nur mit einem einzigen Symbol und kann nicht gegen systematisches Marktrisiko diversifiziert werden.
3. Stopp-Loss während extremer Bewegungen ausgelöst
Während extremer Marktbedingungen wie Gap oder Spikes kann ein Stop Loss ausgelöst werden, der den Ausstieg zwingt.
1. Hinzufügen von Stop Loss für einen geringeren Einzelverlust
Bewegliche Stop-Loss- oder Prozentsatz-Stop-Loss-Einstellungen können verwendet werden, um Gewinne zu erzielen und eine vollständige Rückkehr zu verhindern.
2. Korrelation mit Indizes zur Diversifizierung des Marktrisikos
Suchen Sie nach Handelsmöglichkeiten zwischen stark korrelierten Symbolen, um das systematische Marktrisiko zu diversifizieren.
3. Zusätzliche Filter zur Verringerung ungültiger Geschäfte
Es können Filter wie Preisvolatilität oder Volumenänderungen hinzugefügt werden, um ungültige Umkehrsignale zu vermeiden und die Rentabilität zu verbessern.
Die Oscillating Long-Short RSI Crypto Switching Strategie kombiniert ICHIMOKU und RSI Indikatoren, um Umkehrpunkte für Kryptowährungen zu identifizieren, die für den Kauf von niedrigem und Verkauf von hohem Gewinn während der Schwingungen geeignet sind. Sie legt auch Stop-Loss-Regeln fest, um das Risiko zu kontrollieren. Die Strategie kann weiter verbessert werden, indem der Stop-Loss-Mechanismus optimiert, Risiken durch Korrelation diversifiziert und bedingte Filter hinzugefügt werden.
/*backtest start: 2023-12-17 00:00:00 end: 2023-12-24 00:00:00 period: 3m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © exlux99 //@version=4 strategy(title="Ichimoku + RSI Crypto trending strategy", overlay=true, initial_capital = 1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.1, pyramiding=1 ) UseHAcandles = input(true, title="Use Heikin Ashi Candles in Algo Calculations") // // === /INPUTS === // === BASE FUNCTIONS === haClose = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, close) : close haOpen = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, open) : open haHigh = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, high) : high haLow = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, low) : low //Inputs ts_bars = input(20, minval=1, title="Tenkan-Sen Bars") ks_bars = input(50, minval=1, title="Kijun-Sen Bars") ssb_bars = input(120, minval=1, title="Senkou-Span B Bars") cs_offset = input(30, minval=1, title="Chikou-Span Offset") ss_offset = input(30, minval=1, title="Senkou-Span Offset") long_entry = input(true, title="Long Entry") short_entry = input(true, title="Short Entry") //Volatility //vollength = input(defval=1, title="VolLength") //voltarget = input(defval=0., type=input.float, step=0.1, title="Volatility Target") //Difference = abs((haClose - haOpen)/((haClose + haOpen)/2) * 100) //MovingAverage = sma(Difference, vollength) //highvolatility = MovingAverage > voltarget //////////////////////////////////////////////////////////////////////////////// // BACKTESTING RANGE // From Date Inputs fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) fromYear = input(defval = 2019, title = "From Year", minval = 1970) // To Date Inputs toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31) toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12) toYear = input(defval = 2021, title = "To Year", minval = 1970) // Calculate start/end date and time condition startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00) finishDate = timestamp(toYear, toMonth, toDay, 00, 00) time_cond = true //////////////////////////////////////////////////////////////////////////////// middle(len) => avg(lowest(len), highest(len)) // Ichimoku Components tenkan = middle(ts_bars) kijun = middle(ks_bars) senkouA = avg(tenkan, kijun) senkouB = middle(ssb_bars) //RSI change = change(haClose) gain = change >= 0 ? change : 0.0 loss = change < 0 ? (-1) * change : 0.0 avgGain = rma(gain, 14) avgLoss = rma(loss, 14) rs = avgGain / avgLoss rsi = 100 - (100 / (1 + rs)) ss_high = max(senkouA[ss_offset-1], senkouB[ss_offset-1]) ss_low = min(senkouA[ss_offset-1], senkouB[ss_offset-1]) // Entry/Exit Signals tk_cross_bull = tenkan > kijun tk_cross_bear = tenkan < kijun cs_cross_bull = mom(haClose, cs_offset-1) > 0 cs_cross_bear = mom(haClose, cs_offset-1) < 0 price_above_kumo = haClose > ss_high price_below_kumo = haClose < ss_low rsi_bullish = rsi > 50 rsi_bearish = rs < 50 bullish = tk_cross_bull and cs_cross_bull and price_above_kumo and rsi_bullish //and highvolatility bearish = tk_cross_bear and cs_cross_bear and price_below_kumo and rsi_bearish //and highvolatility strategy.entry("Long", strategy.long, when=bullish and long_entry and time_cond) strategy.entry("Short", strategy.short, when=bearish and short_entry and time_cond) strategy.close("Long", when=bearish and not short_entry and time_cond) strategy.close("Short", when=bullish and not long_entry and time_cond)