Strategi pembalikan mengikuti tren berdasarkan MACD dan RSI


Tanggal Pembuatan: 2023-12-18 17:53:38 Akhirnya memodifikasi: 2023-12-18 17:53:38
menyalin: 0 Jumlah klik: 660
1
fokus pada
1621
Pengikut

Strategi pembalikan mengikuti tren berdasarkan MACD dan RSI

Ringkasan

Strategi ini menggabungkan tiga indikator MACD, EMA, dan RSI untuk melakukan pelacakan tren dan perdagangan reversal. Ini menghasilkan sinyal beli ketika MACD naik melalui garis sinyal dan harga penutupan lebih tinggi dari rata-rata EMA. Ini menghasilkan sinyal jual ketika MACD turun dan harga penutupan lebih rendah dari rata-rata EMA, sehingga menangkap tren.

Prinsip Strategi

  1. Hitung MACDdiffs dan EMA
   fastMA = ema(close, fast)  
   slowMA = ema(close, slow)
   macd = fastMA - slowMA
   signal = sma(macd, 9)
   ema = ema(close, input(200))
  1. menghasilkan sinyal beli: MACD diferensial ((macd-signal) di atas sumbu 0 dan harga penutupan lebih tinggi dari garis rata-rata EMA.
   delta = macd - signal 
   buy_entry= close>ema and delta > 0
  1. Sinyal jual: MACD putus 0 dan harga tutup di bawah garis rata-rata EMA.
   sell_entry = close<ema and delta<0 
  1. Ketika RSI masuk ke zona overbought dan oversold, lakukan reversal trading.
   if (rsi > 70 or rsi < 30)
       reversal := true

Analisis Keunggulan

  1. Kombinasi trend tracking dan reversal trading memungkinkan Anda untuk melacak tren utama dan menghasilkan keuntungan di titik reversal.
  2. Menggunakan MACD untuk menentukan arah tren utama, menghindari terobosan palsu.
  3. EMA membantu memfilter beberapa suara.
  4. Indeks RSI menilai titik balik, meningkatkan ruang untuk keuntungan strategi.

Analisis risiko

  1. Dalam pasar tren besar, perdagangan terbalik dapat menyebabkan kerugian.
  2. Parameter yang tidak tepat akan meningkatkan frekuensi transaksi dan biaya slippage.
  3. Sinyal balik bisa mengalami penundaan, sehingga melewatkan waktu terbaik untuk masuk.

Solusi:

  1. Optimalkan parameter untuk menemukan kombinasi optimal.
  2. RSI threshold yang disesuaikan dengan trading inverse.
  3. Pertimbangkan untuk menambahkan stop loss untuk mengendalikan kerugian.

Arah optimasi

  1. Uji parameter rata-rata EMA dengan panjang yang berbeda.
  2. Optimalkan parameter MACD untuk menemukan kombinasi parameter yang optimal.
  3. Uji coba berbagai tipis RSI reversal.
  4. Pertimbangkan untuk menambahkan indikator lain untuk kombinasi combinatio.

Meringkaskan

Strategi ini menggunakan indikator MACD, EMA, dan RSI secara komprehensif, untuk mencapai kombinasi organik dari pelacakan tren dan perdagangan reversal. MACD menilai arah tren utama, EMA menggerakkan kebisingan, dan indikator RSI menangkap titik reversal. Kombinasi multi-indikator ini dapat menilai tren pasar dengan lebih akurat, sekaligus mengurangi perdagangan yang salah, meningkatkan probabilitas keuntungan.

Kode Sumber Strategi
/*backtest
start: 2023-11-17 00:00:00
end: 2023-12-17 00:00:00
period: 1h
basePeriod: 15m
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/
// © mbuthiacharles4

//Good with trending markets
//@version=4
strategy("CHARL MACD EMA RSI")

fast = 12, slow = 26
fastMA = ema(close, fast)
slowMA = ema(close, slow)
macd = fastMA - slowMA
signal = sma(macd, 9)

ema = ema(close, input(200))

rsi = rsi(close, input(14))
//when delta > 0  and close above ema buy

delta = macd - signal

buy_entry= close>ema and delta > 0
sell_entry = close<ema and delta<0 
var bought = false
var sold = false
var reversal = false
if (buy_entry and bought == false and rsi <= 70) 
    strategy.entry("Buy",true , when=buy_entry)
    bought := true
    
strategy.close("Buy",when= delta<0 or rsi > 70)
if (delta<0 and bought==true)
    bought := false

//handle sells

if (sell_entry and sold == false and rsi >= 30)
    strategy.entry("Sell",false , when=sell_entry)
    sold := true

strategy.close("Sell",when= delta>0 or rsi < 30)
if (delta>0 and sold==true)
    sold := false
    
if (rsi > 70 or rsi < 30)
    reversal := true
    placing = rsi > 70 ? high :low
    label.new(bar_index, placing, style=label.style_flag, color=color.blue, size=size.tiny)
if (reversal == true)
    if (rsi < 70 and sold == false and delta < 0)
        strategy.entry("Sell",false , when= delta < 0)
        sold := true
        reversal := false
    else if (rsi > 30 and bought == false and delta > 0)
        strategy.entry("Buy",true , when= delta > 0)
        bought := true
        reversal := false