Strategi Switching Crypto Long-Short RSI adalah strategi perdagangan kuantitatif yang direka untuk mata wang kripto. Ia menggabungkan penunjuk teknikal RSI dengan penunjuk ICHIMOKU untuk mengenal pasti isyarat panjang dan pendek semasa goyah harga dan mencapai membeli rendah dan menjual tinggi. Ia sesuai untuk jangka masa sederhana hingga panjang seperti 3-4 jam atau lebih lama.
Strategi ini terutamanya berdasarkan petunjuk dan peraturan berikut:
Indikator ICHIMOKU
Indikator RSI
Peraturan kemasukan
Pendaftaran panjang: Tenkan melintasi Kijun (salib emas) dan harga pecah melalui Senkou A & B Lines, dengan RSI di atas 50 pada masa yang sama
Entry pendek: Tenkan cross di bawah Kijun (death cross) dan harga merosot Senkou A & B Lines, dengan RSI di bawah 50 pada masa yang sama
Peraturan Keluar
Keluar dengan isyarat bertentangan
Strategi ini mengambil kira trend jangka sederhana hingga jangka panjang, aliran modal jangka pendek dan keadaan overbought / oversold untuk menangkap peluang pembalikan semasa osilasi.
1. Penghakiman berdasarkan pelbagai penunjuk memastikan kepastian yang tinggi
Strategi ini mengambil kira trend dan penilaian sokongan / rintangan ICHIMOKU, keadaan RSI overbought / oversold, serta aliran modal berdasarkan arah badan lilin. Ini memastikan isyarat yang boleh dipercayai.
2. Sesuai untuk goyangan, sering mengambil keuntungan
Pasaran cryptocurrency mempunyai turun naik yang besar. Strategi ini dapat sepenuhnya menangkap peluang pembalikan semasa goyangan dan mencapai pembelian rendah yang kerap dan menjual tinggi.
3. Elakkan mengejar naik dan mengalahkan mundur, risiko terkawal
Strategi ini secara komprehensif mempertimbangkan trend jangka sederhana dan jangka panjang dan situasi jangka pendek untuk mengelakkan risiko mengejar kenaikan dan mengalahkan kemunduran.
1. Mungkin terlepas beberapa peluang tren
Strategi ini memberi tumpuan terutamanya kepada pembalikan, yang boleh membawa kepada whipsaws yang kerap semasa fasa trend yang berpanjangan.
2. Simbol tunggal, tidak dapat mempelbagaikan risiko
Strategi ini hanya berdagang satu simbol dan tidak dapat mempelbagaikan terhadap risiko pasaran yang sistematik.
3. Stop loss yang dicetuskan semasa pergerakan melampau
Semasa keadaan pasaran yang melampau seperti jurang atau lonjakan, stop loss boleh dicetuskan memaksa keluar.
1. Tambah stop loss untuk kerugian tunggal yang lebih rendah
Memindahkan stop loss atau peratusan stop loss boleh digunakan untuk mengunci keuntungan dan mengelakkan retracement penuh.
2. Berkaitan dengan indeks untuk mempelbagaikan risiko pasaran
Cari peluang perdagangan di antara simbol yang sangat berkaitan untuk mempelbagaikan risiko pasaran yang sistematik.
3. Penapis tambahan untuk mengurangkan perdagangan yang tidak sah
Penapis seperti turun naik harga atau perubahan jumlah boleh ditambah untuk mengelakkan isyarat pembalikan yang tidak sah dan meningkatkan kadar keuntungan.
Strategi Switching Crypto Long-Short RSI menggabungkan penunjuk ICHIMOKU dan RSI untuk mengenal pasti titik pembalikan untuk mata wang kripto, sesuai untuk membeli rendah dan menjual keuntungan tinggi semasa osilasi. Ia juga menetapkan peraturan stop loss untuk mengawal risiko. Strategi ini boleh ditingkatkan lagi dengan mengoptimumkan mekanisme stop loss, mempelbagaikan risiko melalui korelasi dan menambahkan penapis bersyarat, yang bernilai diuji secara langsung.
/*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)