Strategi Dagangan Berdasarkan Indikator RSI dan MACD

Penulis:ChaoZhang, Tarikh: 2024-01-31 16:07:31
Tag:

img

Ringkasan

Strategi ini menggabungkan Indeks Kekuatan Relatif (RSI) dan penunjuk Divergensi Convergensi Purata Bergerak (MACD) untuk mengenal pasti peluang perdagangan untuk BTC. Ia menjadi panjang apabila RSI di bawah 30 dan garis MACD di bawah garis isyarat dan histogram MACD kurang dari -100; ia menjadi pendek apabila RSI di atas 80 dan garis MACD di atas garis isyarat dan histogram MACD lebih besar daripada 250. Strategi ini juga menggunakan stop loss untuk mengunci keuntungan.

Logika Strategi

  1. Gunakan penunjuk RSI untuk menentukan sama ada pasaran terlalu banyak dijual atau terlalu banyak dibeli. RSI di bawah 30 dilihat sebagai isyarat terlalu banyak dijual, sementara di atas 80 dilihat sebagai isyarat terlalu banyak dibeli.

  2. Menggunakan garis MACD penunjuk dan garis isyarat persilangan untuk menentukan entri dan keluar. Apabila garis MACD melintasi di atas garis isyarat, ia adalah isyarat beli; apabila garis MACD melintasi di bawah garis isyarat, ia adalah isyarat jual.

  3. Gabungkan isyarat dari penunjuk RSI dan MACD untuk membentuk peraturan kemasukan untuk strategi ini.

  4. Menggunakan stop loss trailing untuk mengunci keuntungan. Stop loss trailing dikemas kini secara dinamik berdasarkan keuntungan / kerugian kedudukan terbuka, yang membolehkan kawalan risiko yang berkesan.

Analisis Kelebihan

  1. Menggabungkan penunjuk RSI dan MACD membantu menapis isyarat palsu dengan berkesan.

  2. RSI baik dalam mengesan keadaan pasaran terlalu banyak beli / terlalu banyak jual. MACD menangkap perubahan trend dengan baik. Menggunakan kedua-duanya mewujudkan strategi yang kuat.

  3. Mengikuti stop loss mengunci keuntungan mengikut pergerakan pasaran secara langsung, mengawal risiko.

  4. Strategi ini mempunyai beberapa parameter dan mudah dilaksanakan.

Analisis Risiko

  1. Risiko instrumen tunggal daripada perdagangan hanya BTC.

  2. RSI boleh menghasilkan isyarat palsu semasa senario pembalikan julat dan bawah. Osilator MACD juga boleh memberikan isyarat yang salah dalam pasaran bergolak.

  3. Hentikan kerugian boleh dipukul keras semasa perubahan pasaran yang besar, gagal mengawal risiko.

  4. Penyesuaian parameter yang tidak baik boleh membawa kepada overtrading atau perdagangan yang terlepas.

Peluang Peningkatan

  1. Pertimbangkan untuk menambah penunjuk lain seperti Bollinger Bands, KD dan lain-lain untuk melengkapkan isyarat perdagangan.

  2. Kaji korelasi antara pasaran antara instrumen yang berbeza, membina strategi pembalikan purata pelbagai pasangan.

  3. Mengoptimumkan mekanisme stop loss e.g. stop loss tepat pada masanya, stop loss purata dll.

  4. Menggabungkan pembelajaran mesin untuk pengoptimuman parameter pintar.

Ringkasan

Ini adalah strategi trend-mengikuti berdasarkan penunjuk RSI dan MACD untuk menentukan senario overbought / oversold. Ia menggabungkan kekuatan penunjuk teknikal dengan baik untuk menangkap perubahan trend di pasaran. Sementara itu, logik strategi adalah mudah dan mudah dilaksanakan. Pengoptimuman lanjut boleh memperluaskan aplikasinya.


/*backtest
start: 2023-01-24 00:00:00
end: 2024-01-30 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("BTC/USDT RSI and MACD Strategy", overlay = true)

// Define the RSI period
rsiPeriod = input(14, "RSI Period")

// Calculate the RSI
rsi = ta.rsi(close, rsiPeriod)

// Define the MACD parameters
macdShort = input(12, "MACD Short Period")
macdLong = input(26, "MACD Long Period")
macdSignal = input(9, "MACD Signal Period")

// Calculate the MACD
[macdLine, signalLine, _] = ta.macd(close, macdShort, macdLong, macdSignal)

// Define the trailing stop level
trailing_stop_loss_factor = input.float(2.50, "Trailing Stop Loss Factor", step = 0.01)

// Define the entry and exit conditions
enterLong = ta.crossover(rsi, 30) and macdLine < signalLine and macdLine < -100
enterShort = ta.crossunder(rsi, 83) and macdLine > signalLine and macdLine > 250

// Submit the orders
if (enterLong)
    strategy.entry("Long", strategy.long)
if (enterShort)
    strategy.entry("Short", strategy.short)

// Trailing Stop Loss
longTrailingStopLoss = strategy.position_avg_price * (1 - trailing_stop_loss_factor / 100)
shortTrailingStopLoss = strategy.position_avg_price * (1 + trailing_stop_loss_factor / 100)
if strategy.position_size > 0 
    strategy.exit("Exit Long", "Long", stop  = longTrailingStopLoss)
if strategy.position_size < 0 
    strategy.exit("Exit Short", "Short", stop = shortTrailingStopLoss)

// Plot the indicators
plot(rsi, "RSI", color=color.blue)
hline(20, "RSI Lower Level", color=color.green)
hline(80, "RSI Upper Level", color=color.red)
plot(macdLine - signalLine, "MACD Histogram", color=color.red, style=plot.style_histogram)
hline(0, "Zero", color=color.gray)

Lebih lanjut