Sumber daya yang dimuat... Pemuatan...

Tren berdasarkan MACD dan RSI menyusul strategi pembalikan

Penulis:ChaoZhang, Tanggal: 2023-12-18 17:53:38
Tag:

img

Gambaran umum

Strategi ini menggabungkan indikator MACD, EMA dan RSI untuk menerapkan tren mengikuti dan pembalikan perdagangan. Ini menghasilkan sinyal beli ketika MACD naik melalui garis sinyal dan harga penutupan di atas EMA; dan sinyal jual ketika MACD jatuh di bawah garis sinyal dan harga penutupan di bawah EMA untuk menangkap tren. Sementara itu, perdagangan pembalikan ketika RSI mencapai tingkat overbought atau oversold.

Logika Strategi

  1. Menghitung perbedaan MACD dan EMA.

    fastMA = ema(close, fast)
    slowMA = ema(close, slow) 
    macd = fastMA - slowMA
    signal = sma(macd, 9)
    ema = ema(close, input(200))
    
  2. Menghasilkan sinyal beli: MACD diff (macd - sinyal) berada di atas 0 dan harga penutupan berada di atas EMA.

    delta = macd - signal
    buy_entry= close>ema and delta > 0 
    
  3. Menghasilkan sinyal jual: MACD diff turun di bawah 0 dan harga penutupan di bawah EMA.

    sell_entry = close<ema and delta<0
    
  4. Pembalikan perdagangan ketika RSI mencapai tingkat overbought atau oversold.

    if (rsi > 70 or rsi < 30)
        reversal := true
    

Analisis Keuntungan

  1. Gabungkan perdagangan mengikuti tren dan pembalikan untuk mendapatkan keuntungan dari kedua tren dan pembalikan.
  2. Menggunakan MACD untuk menilai arah tren dan menghindari pecah palsu.
  3. Menyaring kebisingan dengan EMA.
  4. Meningkatkan profitabilitas dengan RSI untuk perdagangan pembalikan.

Analisis Risiko

  1. Perdagangan reversal dapat menimbulkan kerugian di pasar dengan tren yang kuat.
  2. Pengaturan parameter yang tidak tepat dapat meningkatkan frekuensi perdagangan dan biaya slippage.
  3. Sinyal pembalikan mungkin memiliki beberapa keterlambatan, kehilangan harga masuk terbaik.

Solusi:

  1. Optimalkan parameter untuk menemukan kombinasi terbaik.
  2. Sesuaikan ambang RSI pembalikan dengan benar.
  3. Pertimbangkan untuk menambahkan stop loss ke kontrol loss.

Arahan Optimasi

  1. Uji panjang EMA.
  2. Mengoptimalkan parameter MACD.
  3. Uji ambang pembalikan RSI yang berbeda.
  4. Pertimbangkan untuk menggabungkan dengan indikator lain.

Ringkasan

Strategi ini menggabungkan MACD, EMA dan RSI untuk secara organik menerapkan tren mengikuti dan pembalikan perdagangan. MACD menilai arah tren, EMA menyaring kebisingan, dan RSI menangkap titik pembalikan. Kombinasi multi-indikator tersebut dapat lebih baik menentukan pergerakan pasar, meningkatkan profitabilitas sambil mengurangi sinyal palsu. Optimasi parameter dan manajemen stop loss dapat ditingkatkan lebih lanjut untuk mengurangi kerugian yang tidak perlu. Secara keseluruhan, ini adalah kerangka strategi yang solid dengan potensi keuntungan yang stabil.


/*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



Lebih banyak