Strategi ini menggabungkan indikator Moving Average Convergence Divergence (MACD) dan indikator Relative Strength Index (RSI) untuk menetapkan kondisi pembelian dan penjualan untuk menangkap peluang pembalikan.
Menghitung indikator MACD, termasuk garis cepat, garis lambat dan garis sinyal.
Menghitung indikator RSI dan menetapkan nilai ambang overbought dan oversold. indikator RSI dapat menentukan kondisi overbought dan oversold.
Gabungkan sinyal silang dari MACD dan pembacaan overbought/oversold dari RSI untuk merumuskan kondisi beli dan jual:
Kondisi beli: Garis cepat MACD melintasi di atas garis lambat (salib emas) sementara indikator RSI baru saja jatuh kembali dari zona overbought, menandakan pembalikan.
Kondisi jual: Garis cepat MACD melintasi di bawah garis lambat (death cross) sementara indikator RSI memasuki zona overbought, menandakan pembalikan.
Hal ini memungkinkan memanfaatkan kekuatan dari kedua indikator yang kuat untuk membeli dan menjual dengan akurat pada titik pembalikan.
MACD dapat mengidentifikasi tren dan peluang perdagangan. Indikator RSI mengukur kondisi overbought/oversold. Menggunakan keduanya meningkatkan akurasi.
Menggunakan dua indikator menyaring sinyal palsu yang dapat terjadi dengan satu indikator.
MACD dikombinasikan dengan RSI memungkinkan membeli sebelum pembalikan dan menjual setelah pembalikan untuk menangkap giliran.
Strategi ini memiliki frekuensi moderat, melacak tren dan menangkap pembalikan secara fleksibel.
MACD dapat memberikan sinyal palsu di pasar yang bergolak. Parameter RSI perlu dioptimalkan untuk menghindari sinyal palsu.
Volatilitas jangka pendek dapat menghentikan posisi, menyebabkan kerugian.
Parameter RSI dan MACD perlu dioptimalkan untuk menghindari terlalu banyak atau terlalu sedikit sinyal.
Manajemen risiko dan uang yang ketat sangat penting untuk perdagangan langsung.
Mengoptimalkan parameter garis cepat / lambat MACD untuk kombinasi terbaik.
Mengoptimalkan ambang RSI overbought/oversold untuk mencegah sinyal palsu.
Tambahkan stop loss untuk mengendalikan risiko perdagangan tunggal.
Pertimbangkan untuk menambahkan filter seperti Bollinger Bands atau KDJ untuk konfirmasi tambahan.
Uji berbagai strategi entry/exit seperti breakout atau trend following.
Strategi ini menggabungkan kekuatan MACD dan RSI untuk pembalikan. Tapi pengaturan parameter, kontrol risiko dan manajemen uang adalah kunci untuk kinerja langsung. Fleksibilitas membuatnya cocok untuk kondisi pasar yang berbeda dan layak untuk pengujian dan pelacakan langsung.
/*backtest start: 2022-11-13 00:00:00 end: 2023-11-19 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 // © sabirt strategy(title='MACD and RSI', overlay=true, shorttitle='MACD&RSI') //MACD Settings fastMA = input.int(title='Fast moving average', defval=12, minval=1) slowMA = input.int(title='Slow moving average', defval=26, minval=1) signalLength = input.int(9, minval=1) //RSI settings RSIOverSold = input.int(35, minval=1) RSIOverBought = input.int(80, minval=1) src = close len = input.int(14, minval=1, title='Length') up = ta.rma(math.max(ta.change(src), 0), len) down = ta.rma(-math.min(ta.change(src), 0), len) rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - 100 / (1 + up / down) wasOversold = rsi[0] <= RSIOverSold or rsi[1] <= RSIOverSold or rsi[2] <= RSIOverSold or rsi[3] <= RSIOverSold or rsi[4] <= RSIOverSold or rsi[5] <= RSIOverSold wasOverbought = rsi[0] >= RSIOverBought or rsi[1] >= RSIOverBought or rsi[2] >= RSIOverBought or rsi[3] >= RSIOverBought or rsi[4] >= RSIOverBought or rsi[5] >= RSIOverBought [currMacd, _, _] = ta.macd(close[0], fastMA, slowMA, signalLength) [prevMacd, _, _] = ta.macd(close[1], fastMA, slowMA, signalLength) signal = ta.ema(currMacd, signalLength) avg_1 = math.avg(currMacd, signal) crossoverBear = ta.cross(currMacd, signal) and currMacd < signal ? avg_1 : na avg_2 = math.avg(currMacd, signal) crossoverBull = ta.cross(currMacd, signal) and currMacd > signal ? avg_2 : na strategy.entry('buy', strategy.long, when=crossoverBull and wasOversold) strategy.close('buy', when=crossoverBear and wasOverbought)