Strategi ini menggabungkan indikator momentum MACD dan indikator overbought overbought RSI untuk memverifikasi apakah RSI juga telah menyelesaikan pembalikan touch bottom / touch top yang sesuai saat MACD terjadi, sehingga menghasilkan sinyal perdagangan yang lebih andal.
Hitung DIFF, DEA, dan kolom MACD dari indikator MACD. Ketika DIFF di atas melewati DEA menghasilkan sinyal golden fork, dan ketika di bawah melewati sinyal dead fork.
Hitung indikator RSI untuk menentukan apakah titik bawah telah bangkit atau titik atas telah kembali. Dan atur jendela mundur untuk menentukan apakah titik bawah atau titik atas telah terjadi pada tahap terakhir.
Ketika MACD Gold Forks, jika RSI menyelesaikan rebound di jendela, maka akan muncul sinyal look over. Ketika MACD Dead Forks, jika RSI menyelesaikan rebound, maka akan muncul sinyal look over.
Setelah masuk, atur titik stop loss untuk mengontrol risiko.
MACD menilai perubahan tren dengan waktu yang sensitif. RSI menilai kondisi overbought dan oversold dengan efektif.
Selain itu, token MACD dan RSI juga dapat divalidasi untuk memfilter sinyal palsu.
Lihat kembali ke jendela untuk menilai keandalan sinyal tambahan.
Pengaturan Stop Loss membantu dalam manajemen risiko.
MACD dan RSI berada di belakang dan mungkin kehilangan titik masuk yang optimal.
Pada saat yang sama menunggu dua sinyal indikator muncul lebih kecil probabilitas, sinyal lebih sedikit.
Tidak memperhatikan arah tren skala besar, mudah dibodohkan.
Pengaturan stop loss yang tidak tepat mungkin terlalu longgar atau terlalu ketat.
Solusi yang sesuai:
Mengatur MACD dan RSI parameter untuk mengurangi probabilitas lag.
Untuk memberikan sinyal yang lebih banyak, perlu memperluas rentang efektif indikator.
Menambahkan filter tren untuk menghindari terjadinya reversal.
Uji berbagai pengaturan parameter stop loss untuk menemukan yang terbaik.
Uji efek dari SMA dan lain-lain
Meningkatkan Stop Loss Mobile untuk membuat Stop Loss lebih fleksibel.
Selain itu, ada juga beberapa indikator tren yang bisa digunakan untuk menilai keunggulan dan kelemahan dari sebuah program.
Memperkenalkan pembelajaran mesin untuk memprediksi pergerakan indikator.
Adapun faktor-faktor lain yang mengoptimalkan pilihan waktu masuk.
Strategi ini menggunakan kombinasi dari dua indikator MACD dan RSI, masuk setelah memilih sinyal reversal yang andal. Strategi ini memiliki pemikiran yang jelas, parameter yang disesuaikan dengan fleksibilitas, dapat diperluas dari pilihan indikator, penilaian tren, dan metode stop loss, untuk mendapatkan lebih banyak peluang perdagangan dengan menjaga dasar yang stabil.
/*backtest
start: 2023-08-24 00:00:00
end: 2023-09-23 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
//based on Range Strat - MACD/RSI
// strategy("MACD/RSI - edited",
// overlay=true,
// default_qty_type=strategy.percent_of_equity,
// default_qty_value=10, precision=2, initial_capital=100000,
// pyramiding=2,
// commission_value=0.05)
//Backtest date range
StartDate = input(timestamp("13 Jun 2022"), title="Start Date")
EndDate = input(timestamp("13 Jun 2024"), title="Start Date")
inDateRange = true
// RSI Input Settings
rsisrc = input(title="RSI Source", defval=close, group="RSI Settings")
length = input(title="Length", defval=14, group="RSI Settings" )
overSold = input(title="Over Sold Threshold", defval=30, group="RSI Settings" )
overBought = input(title="Over Bought Threshold", defval=70, group="RSI Settings" )
rsi_lookback = input(title="RSI cross lookback period", defval=7, group="RSI Settings")
// Calculating RSI
vrsi = ta.rsi(rsisrc, length)
co = ta.crossover(vrsi, overSold)
cu = ta.crossunder(vrsi, overBought)
// Function looking for a happened condition during lookback period
f_somethingHappened(_cond, _lookback) =>
bool _crossed = false
for i = 1 to _lookback
if _cond[i]
_crossed := true
_crossed
coCheck = f_somethingHappened(co, rsi_lookback)
cuCheck = f_somethingHappened(cu, rsi_lookback)
// MACD Input Settings
macdsrc = input(title="MACD Source", defval=close, group="MACD Settings")
fast_length = input(title="Fast Length", defval=12, group="MACD Settings")
slow_length = input(title="Slow Length", defval=26, group="MACD Settings")
signal_length = input.int(title="Signal Smoothing", minval = 1, maxval = 50, defval = 9, group="MACD Settings")
sma_source = input.string(title="Oscillator MA Type", defval="EMA", options=["SMA", "EMA"], group="MACD Settings")
sma_signal = input.string(title="Signal Line MA Type", defval="EMA", options=["SMA", "EMA"], group="MACD Settings")
// Calculating MACD
fast_ma = sma_source == "SMA" ? ta.sma(macdsrc, fast_length) : ta.ema(macdsrc, fast_length)
slow_ma = sma_source == "SMA" ? ta.sma(macdsrc, slow_length) : ta.ema(macdsrc, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length)
delta = macd - signal
MACDcrossover = ta.crossover(delta, 0)
MACDcrossunder = ta.crossunder(delta, 0)
// Stop Loss Input Settings
longLossPerc = input(title="Long Stop Loss (%)", defval=15, group="Stop Loss Settings") * 0.01
shortLossPerc = input(title="Short Stop Loss (%)", defval=15, group="Stop Loss Settings") * 0.01
// Calculating Stop Loss
longStopPrice = strategy.position_avg_price * (1 - longLossPerc)
shortStopPrice = strategy.position_avg_price * (1 + shortLossPerc)
// Strategy Entry
if (not na(vrsi))
if (inDateRange and MACDcrossover and coCheck)
strategy.entry("LONG", strategy.long, comment="LONG")
if (inDateRange and MACDcrossunder and cuCheck)
strategy.entry("SHORT", strategy.short, comment="SHORT")
// Submit exit orders based on calculated stop loss price
if (strategy.position_size > 0)
strategy.exit(id="LONG STOP", stop=longStopPrice)
if (strategy.position_size < 0)
strategy.exit(id="SHORT STOP", stop=shortStopPrice)