Strategi Perdagangan Bitcoin Harian Berbilang Penunjuk

Penulis:ChaoZhang, Tarikh: 2023-10-30 10:37:58
Tag:

img

Ringkasan

Strategi ini menggabungkan beberapa penunjuk untuk mengenal pasti peluang perdagangan dalam jangka masa harian untuk Bitcoin. Ia terutamanya menggunakan penunjuk seperti MACD, RSI, Stoch RSI, bersama dengan arah purata bergerak untuk menentukan arah trend semasa untuk menjana isyarat beli dan jual.

Logika Strategi

Strategi ini menggunakan penunjuk utama berikut:

  1. MACD (Fast MA - Slow MA) dan garis isyaratnya.

  2. RSI (Relative Strength Index). RSI melintasi sempadan memberi isyarat beli.

  3. RSI stok. RSI stok menunjukkan tahap overbought / oversold RSI. RSI stok di bawah ambang memberi isyarat beli, sementara di atas ambang memberi isyarat jual.

  4. Arah purata bergerak. Penembusan harga di bawah MA memberi isyarat jual.

Menurut penunjuk ini, isyarat dagangan adalah:

Beli Isyarat: Bila(Stoch RSI < Threshold) AND (MACD crossing above threshold OR RSI crossing above threshold)

Jual Isyarat: Bila(MACD crossing below 0) AND (Close below MA OR Stoch RSI > Threshold)

Menggunakan beberapa penunjuk bersama-sama dapat menentukan arah trend semasa dengan lebih baik dan mengenal pasti titik pembalikan trend untuk memasuki perdagangan.

Kelebihan

  1. Menggabungkan beberapa penunjuk meningkatkan ketepatan dan mengelakkan isyarat palsu dari satu penunjuk.

  2. MACD menunjukkan arah trend dan kekuatan. RSI mencerminkan tahap overbought / oversold. RSI saham menentukan overbought / oversold RSI. MA menunjukkan arah trend. Indikator ini saling mengesahkan.

  3. Isyarat beli/jual memerlukan gabungan beberapa penunjuk, menapis beberapa isyarat palsu dan mengelakkan perdagangan yang tidak perlu.

  4. Backtest bermula dari 2017/1/1, merangkumi kenaikan besar Bitcoin pada akhir tahun 2017.

  5. Stop loss ditetapkan untuk mengawal kerugian dalam perdagangan tunggal.

Risiko

  1. Walaupun menggunakan beberapa penunjuk meningkatkan ketepatan, perbezaan di antara mereka masih boleh membawa kepada beberapa isyarat yang salah.

  2. Tahap stop loss yang dioptimumkan mungkin memerlukan penyesuaian untuk situasi pasaran yang berbeza.

  3. Jangka masa harian menghalang operasi terperinci dalam jangka masa yang lebih pendek.

  4. Strategi ini hanya diuji semula pada data sejarah yang terhad. Risiko overfit wujud. Memerlukan ujian lanjut dalam jangka masa yang lebih lama dan lebih banyak pasaran.

Peluang Peningkatan

  1. Uji lebih banyak kombinasi penunjuk untuk mencari strategi multi-penunjuk yang optimum.

  2. Mengoptimumkan parameter penunjuk untuk nilai yang lebih baik.

  3. Uji tahap stop loss yang berbeza untuk mencari nisbah risiko / ganjaran yang optimum.

  4. Melakukan backtest ke atas data sejarah yang lebih lama untuk mengelakkan overfit.

  5. Terokai penerapan logik strategi dalam jangka masa frekuensi yang lebih tinggi untuk perdagangan yang lebih kerap.

Kesimpulan

Strategi ini menggabungkan MACD, RSI, Stoch RSI dan penunjuk lain untuk menentukan arah trend harian bitcoin dan mengenal pasti pembalikan trend untuk kemasukan perdagangan. Stop loss ditetapkan untuk mengawal risiko perdagangan. Ujian belakang menunjukkan hasil positif tetapi masih memerlukan pengesahan lanjut dalam jangka masa yang lebih lama dan lebih banyak pasaran untuk mengelakkan risiko overfit. Pengoptimuman lanjut pada parameter penunjuk dan paras stop loss / take profit dapat meningkatkan hasil. Strategi ini memberikan idea awal pendekatan gabungan pelbagai penunjuk yang bernilai penerokaan dan peningkatan yang lebih mendalam.


/*backtest
start: 2022-10-23 00:00:00
end: 2023-10-29 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// Original code is from CredibleHulk and modified by bennef
strategy("BTC Daily Strategy BF", overlay=false, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.075)

/////////////// Time Frame ///////////////
testStartYear = input(2017, "Backtest Start Year") 
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay, 0, 0)

testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay, 0, 0)

testPeriod() => true

/////////////// Input Params /////////////// 
rsi_threshold = input(30)
rsi_length = input(4)
srsi_length = input(8)
srsi_smooth = input(4)
srsi_sell_threshold = input(57)
length = input(14)
dma_signal_threshold = input(-1)
fastLength = input(11)
slowlength = input(18)
MACDLength = input(6)
MACD_signal_threshold = input(-2)
short_loss_tol = input(5)
long_loss_tol = input(5)

stop_level_long = strategy.position_avg_price * (1 - long_loss_tol / 100.0)
stop_level_short = strategy.position_avg_price * (1 + short_loss_tol / 100.0)
    
///////////////  Signal generation ///////////////
// MACD 
MACD = ema(close, fastLength) - ema(close, slowlength)
aMACD = ema(MACD, MACDLength)
delta = MACD - aMACD

// RSI and Stochastic RSI 
rs = rsi(close, rsi_length)
k = sma(stoch(rs, rs, rs, srsi_length), srsi_smooth)

// SMA 
norm = sma(ohlc4, length)
threshold = close - norm   

/////////////// Strategy ///////////////
long = ((crossover(delta, MACD_signal_threshold) or crossover(rs, rsi_threshold)) and k < srsi_sell_threshold)
short = (crossunder(delta, 0) or (crossunder(threshold, dma_signal_threshold) and k > srsi_sell_threshold))

if testPeriod()
    strategy.entry("L", strategy.long, when = long)
    strategy.entry("S", strategy.short, when = short)
    strategy.exit("stop loss L", from_entry = "L", stop = stop_level_long)
    strategy.exit("stop loss S", from_entry = "S", stop = stop_level_short)

/////////////// Plotting ///////////////
// MACD
plot(delta, color = delta > MACD_signal_threshold ? color.lime : delta < 0 ? color.red : color.yellow)
MACD_signal_threshold_line = hline(MACD_signal_threshold, color = color.yellow, title = "MACD Signal Threshold")

// RSI
plot(rs, color = rs > rsi_threshold ? color.lime : color.fuchsia)
rsi_threshold_line = hline(rsi_threshold, color = color.fuchsia, title = "RSI Threshold")

// Stochastic RSI 
plot(k, color = k > srsi_sell_threshold ? color.lime : color.red)
srsi_sell_threshold_line = hline(srsi_sell_threshold, color = color.white, title = "Stoch RSI Threshold")

// SMA
plot(threshold / 100, color = threshold < dma_signal_threshold ? color.red : color.blue)
dma_signal_threshold_line = hline (dma_signal_threshold, color = color.blue, title = "DMA Signal Threshold")

bgcolor(long ? color.lime : short ? color.red : na, transp=50)

Lebih lanjut