Strategi ini menggabungkan penunjuk MACD, EMA dan RSI untuk melaksanakan perdagangan trend berikut dan pembalikan. Ia menghasilkan isyarat beli apabila MACD naik melalui garis isyarat dan harga penutupan di atas EMA; dan isyarat jual apabila MACD jatuh di bawah garis isyarat dan harga penutupan di bawah EMA untuk menangkap trend. Sementara itu, ia berdagang pembalikan apabila RSI mencapai tahap overbought atau oversold.
Mengira perbezaan MACD dan EMA.
fastMA = ema(close, fast)
slowMA = ema(close, slow)
macd = fastMA - slowMA
signal = sma(macd, 9)
ema = ema(close, input(200))
Menghasilkan isyarat beli: MACD diff (macd - isyarat) berada di atas 0 dan harga penutupan berada di atas EMA.
delta = macd - signal
buy_entry= close>ema and delta > 0
Menghasilkan isyarat jual: Diff MACD turun di bawah 0 dan harga penutupan di bawah EMA.
sell_entry = close<ema and delta<0
Pembalikan perdagangan apabila RSI mencapai tahap overbought atau oversold.
if (rsi > 70 or rsi < 30)
reversal := true
Penyelesaian:
Strategi ini menggabungkan MACD, EMA dan RSI untuk melaksanakan perdagangan trend berikut dan pembalikan secara organik. MACD menilai arah trend, EMA menapis bunyi bising, dan RSI menangkap titik pembalikan. Gabungan pelbagai penunjuk sedemikian dapat menentukan pergerakan pasaran dengan lebih baik, meningkatkan keuntungan sambil mengurangkan isyarat palsu. Pengoptimuman parameter dan pengurusan stop loss dapat ditingkatkan lagi untuk mengurangkan kerugian yang tidak perlu. Secara keseluruhan, ini adalah rangka kerja strategi yang kukuh 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