Oscillating Long-Short RSI Crypto Switching Strategy adalah strategi perdagangan kuantitatif yang dirancang untuk mata uang kripto. Ini menggabungkan indikator teknis RSI dengan indikator ICHIMOKU untuk mengidentifikasi sinyal panjang dan pendek selama osilasi harga dan mencapai pembelian rendah dan penjualan tinggi.
Strategi ini terutama didasarkan pada indikator dan aturan berikut:
Indikator ICHIMOKU
Indikator RSI
Aturan Masuk
Entry panjang: Tenkan cross di atas Kijun (golden cross) dan price breaks melalui Senkou A & B Lines, dengan RSI di atas 50 pada saat yang sama
Entry singkat: Tenkan cross di bawah Kijun (death cross) dan harga turun Senkou A & B Lines, dengan RSI di bawah 50 pada saat yang sama
Peraturan Keluar
Keluar dengan sinyal berlawanan
Strategi ini memperhitungkan tren jangka menengah hingga panjang, arus modal jangka pendek dan kondisi overbought/oversold untuk menangkap peluang pembalikan selama osilasi.
1. Penghakiman berdasarkan beberapa indikator menjamin kepastian yang tinggi
Strategi ini mempertimbangkan tren dan penilaian support/resistance ICHIMOKU, kondisi RSI overbought/oversold, serta arus modal berdasarkan arah tubuh lilin. Hal ini memastikan sinyal yang dapat diandalkan.
2. Cocok untuk osilasi, sering mengambil keuntungan
Pasar cryptocurrency memiliki fluktuasi besar. Strategi ini dapat sepenuhnya menangkap peluang pembalikan selama osilasi dan mencapai sering membeli rendah dan menjual tinggi.
3. Mencegah mengejar naik dan mengalahkan mundur, risiko terkendali
Strategi ini secara komprehensif mempertimbangkan tren jangka menengah dan panjang dan situasi jangka pendek untuk menghindari risiko mengejar kenaikan dan mengalahkan penurunan.
1. Mungkin melewatkan beberapa peluang tren
Strategi ini terutama berfokus pada pembalikan, yang dapat menyebabkan seringnya whipsaws selama fase tren yang berkepanjangan.
2. Simbol tunggal, tidak dapat mendiversifikasi risiko
Strategi hanya memperdagangkan satu simbol dan tidak dapat melakukan diversifikasi terhadap risiko pasar yang sistematis.
3. Stop loss yang dipicu selama gerakan ekstrem
Selama kondisi pasar yang ekstrim seperti gap atau lonjakan, stop loss dapat dipicu memaksa keluar.
1. Tambahkan stop loss untuk kerugian tunggal yang lebih rendah
Stop loss bergerak atau persentase stop loss dapat digunakan untuk mengunci keuntungan dan mencegah retracement penuh.
2. Berkorélasi dengan indeks untuk mendiversifikasi risiko pasar
Carilah peluang perdagangan di antara simbol yang berkorelasi tinggi untuk mendiversifikasi risiko pasar sistematis.
3. Filter tambahan untuk mengurangi perdagangan yang tidak sah
Filter seperti volatilitas harga atau perubahan volume dapat ditambahkan untuk menghindari sinyal pembalikan yang tidak valid dan meningkatkan tingkat profitabilitas.
Strategi Crypto Switching RSI Oscillating Long-Short menggabungkan indikator ICHIMOKU dan RSI untuk mengidentifikasi titik pembalikan untuk mata uang kripto, yang cocok untuk membeli rendah dan menjual keuntungan tinggi selama osilasi.
/*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)