Sumber dimuat naik... memuat...

Strategi RSI dan MACD Bergabung Pendek Panjang

Penulis:ChaoZhang, Tarikh: 2024-05-17 11:04:03
Tag:RSIMACD

img

Ringkasan

Strategi ini menggabungkan dua penunjuk teknikal: Indeks Kekuatan Relatif (RSI) dan Divergensi Convergensi Purata Bergerak (MACD). Ia menggunakan RSI untuk menentukan keadaan overbought dan oversold, dan MACD untuk mengenal pasti arah trend, membentuk strategi panjang-pendek yang lengkap. Apabila RSI overbought, isyarat jual dihasilkan, dan kedudukan ditutup apabila garis pantas MACD melintasi di atas garis perlahan. Apabila RSI oversold, isyarat beli dihasilkan, dan kedudukan ditutup apabila garis pantas MACD melintasi di bawah garis perlahan. Titik stop-loss ditetapkan dengan mengira separuh daripada perubahan harga purata aset.

Prinsip Strategi

  1. Mengira penunjuk RSI untuk menentukan keadaan overbought dan oversold:
    • Apabila RSI melebihi 70 dan melintasi garis 70, isyarat jual dihasilkan
    • Apabila RSI di bawah 30 dan melintasi garis 30, isyarat beli dihasilkan
  2. Mengira penunjuk MACD untuk mengenal pasti arah trend:
    • Apabila garis cepat MACD melintasi di atas garis perlahan, isyarat untuk menutup kedudukan pendek dihasilkan
    • Apabila garis cepat MACD melintasi di bawah garis perlahan, isyarat untuk menutup kedudukan panjang dihasilkan
  3. Menetapkan titik stop-loss:
    • Mengira perubahan harga purata aset dan mengambil separuh daripadanya sebagai titik stop-loss

Dengan menggunakan RSI untuk menentukan keadaan overbought dan oversold, strategi memasuki pada permulaan pembalikan. Dengan menggunakan MACD untuk mengenal pasti arah trend, ia menutup kedudukan pada permulaan trend, dengan berkesan menangkap trend. Kedua-dua penunjuk saling melengkapi, membentuk sistem perdagangan yang lengkap.

Kelebihan Strategi

  1. Strategi ini menggabungkan pendekatan overbought/oversold dan trend-following, yang membolehkan ia memasuki pada permulaan pembalikan dan keluar dengan tepat pada masanya apabila trend terbentuk, dengan berkesan mengelakkan kerugian yang disebabkan oleh turun naik pasaran.
  2. Titik stop-loss ditetapkan berdasarkan ciri-ciri turun naik aset, membantu mengawal pengeluaran dan meningkatkan kecekapan modal.
  3. Logik kod jelas dan menggunakan pendekatan pengaturcaraan modular, menjadikannya mudah difahami dan dioptimumkan.

Risiko Strategi

  1. Pilihan parameter RSI dan MACD mempunyai kesan yang signifikan terhadap prestasi strategi, dan pengoptimuman parameter mungkin diperlukan untuk aset dan jangka masa yang berbeza.
  2. Semasa keadaan pasaran yang melampau, seperti perubahan pesat yang disebabkan oleh peristiwa yang tidak dijangka, strategi boleh mengalami penurunan yang ketara.
  3. Strategi mungkin tidak berfungsi dengan baik di pasaran yang terhad, mengakibatkan perdagangan yang kerap dan kos transaksi yang tinggi.

Arahan Pengoptimuman Strategi

  1. Mengoptimumkan parameter RSI dan MACD untuk mencari kombinasi yang paling sesuai untuk aset semasa dan jangka masa, meningkatkan kestabilan dan keuntungan strategi.
  2. Tambah lebih banyak keadaan penapisan, seperti penunjuk jumlah dan turun naik, untuk mengurangkan perdagangan yang kerap dan meningkatkan kualiti isyarat.
  3. Memperkenalkan modul pengurusan kedudukan untuk menyesuaikan kedudukan secara dinamik berdasarkan trend pasaran dan prestasi, mengawal pengeluaran.
  4. Gabungkan dengan strategi lain, seperti trend-mengikut dan pembalikan purata, untuk membentuk portfolio pelbagai strategi dan meningkatkan daya adaptasi.

Ringkasan

Strategi ini menggunakan RSI untuk menentukan keadaan overbought dan oversold dan MACD untuk mengenal pasti arah trend, membentuk sistem perdagangan panjang-pendek yang lengkap. Logik strategi jelas, dan kelebihan jelas, sementara terdapat juga risiko tertentu. Melalui pengoptimuman parameter, menambah keadaan penapisan, pengurusan kedudukan, dan menggabungkan dengan strategi lain, prestasi strategi ini dapat ditingkatkan lagi, menjadikannya strategi perdagangan yang kukuh.


/*backtest
start: 2024-04-01 00:00:00
end: 2024-04-30 23:59:59
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title="RSI & MACD Strategy", shorttitle="RSI & MACD", overlay=true)

// Définition des entrées
rsi_length = 14
rsi_overbought = 70
rsi_oversold = 30
macd_fast_length = 12
macd_slow_length = 26
macd_signal_length = 9

// Fonction pour calculer le RSI
calculate_rsi(source, length) =>
    price_change = ta.change(source)
    up = ta.rma(price_change > 0 ? price_change : 0, length)
    down = ta.rma(price_change < 0 ? -price_change : 0, length)
    rs = up / down
    rsi = 100 - (100 / (1 + rs))
    rsi

// Fonction pour calculer le MACD
calculate_macd(source, fast_length, slow_length, signal_length) =>
    fast_ma = ta.ema(source, fast_length)
    slow_ma = ta.ema(source, slow_length)
    macd = fast_ma - slow_ma
    signal = ta.ema(macd, signal_length)
    hist = macd - signal
    [macd, signal, hist]

// Calcul des indicateurs
rsi_value = calculate_rsi(close, rsi_length)
[macd_line, signal_line, _] = calculate_macd(close, macd_fast_length, macd_slow_length, macd_signal_length)

// Conditions d'entrée et de sortie
// Entrée en vente : RSI passe de >= 70 à < 70
sell_entry_condition = ta.crossunder(rsi_value, rsi_overbought)

// Sortie en vente : MACD fast MA croise au-dessus de slow MA
sell_exit_condition = ta.crossover(macd_line, signal_line)

// Entrée en achat : RSI passe de <= 30 à > 30
buy_entry_condition = ta.crossover(rsi_value, rsi_oversold)

// Sortie en achat : MACD fast MA croise en-dessous de slow MA
buy_exit_condition = ta.crossunder(macd_line, signal_line)

// Affichage des signaux sur le graphique
plotshape(series=sell_entry_condition, title="Sell Entry", location=location.belowbar, color=color.red, style=shape.triangleup, size=size.small)
plotshape(series=sell_exit_condition, title="Sell Exit", location=location.abovebar, color=color.green, style=shape.triangledown, size=size.small)
plotshape(series=buy_entry_condition, title="Buy Entry", location=location.abovebar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(series=buy_exit_condition, title="Buy Exit", location=location.belowbar, color=color.red, style=shape.triangledown, size=size.small)

// Entrées et sorties de la stratégie
if (sell_entry_condition)
    strategy.entry("Short", strategy.short)
    
if (sell_exit_condition)
    strategy.close("Short")

if (buy_entry_condition)
    strategy.entry("Long", strategy.long)
    
if (buy_exit_condition)
    strategy.close("Long")


Berkaitan

Lebih lanjut