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.
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))
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
Menghasilkan sinyal jual: MACD diff turun di bawah 0 dan harga penutupan di bawah EMA.
sell_entry = close<ema and delta<0
Pembalikan perdagangan ketika RSI mencapai tingkat overbought atau oversold.
if (rsi > 70 or rsi < 30)
reversal := true
Solusi:
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