Strategi Pertukaran Crypto RSI Berosilasi Panjang-Pendek

Penulis:ChaoZhang, Tanggal: 2023-12-25 13:49:48
Tag:

img

Gambaran umum

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.

Logika Strategi

Strategi ini terutama didasarkan pada indikator dan aturan berikut:

Indikator ICHIMOKU

  • Garis Tenkan: Titik tengah dari harga tertinggi dan terendah dari 20 bar terakhir
  • Garis Kijun: Titik tengah dari harga tertinggi dan terendah dari 50 bar terakhir
  • Jalur Senkou A: Titik tengah Jalur Tenkan dan Kijun
  • Senkou B Line: Titik tengah dari harga tertinggi dan terendah dari 120 bar terakhir
  • Chikou Line: harga penutupan 30 bar lalu

Indikator RSI

  • Kisaran dari 0 sampai 100
  • Di atas 50 menunjukkan sinyal bullish, di bawah 50 menunjukkan sinyal bearish

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.

Analisis Keuntungan

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.

Analisis Risiko

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.

Arahan Optimasi

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.

Kesimpulan

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)




Lebih banyak