
Strategi ini menggunakan kedua-dua penunjuk kekuatan, iaitu penunjuk pergerakan purata berkumpul (MACD) dan penunjuk kekuatan relatif (RSI), untuk menetapkan syarat membeli dan menjual untuk menangkap peluang untuk membalikkan harga saham.
Hitung indikator MACD, termasuk garis cepat, garis perlahan dan garis isyarat. Garis cepat dan garis perlahan bersilang sebagai isyarat jual beli.
Mengira RSI, menetapkan titik terendah di kawasan overbought dan oversold. RSI dapat menentukan keadaan overbought dan oversold.
Dengan menggabungkan isyarat Forex MACD dengan isyarat RSI, keputusan zona overbought dan oversold untuk membuat syarat untuk membeli dan menjual:
Syarat beli: MACD berhadapan dengan garis cepat untuk membentuk garpu emas, sementara RSI baru sahaja turun dari kawasan oversold, dengan isyarat pembalikan;
Syarat jual: MACD melalui garisan perlahan di bawah garisan pantas untuk membentuk garisan mati, sementara RSI memasuki kawasan overbought, dengan isyarat pembalikan.
Indeks MACD dapat menentukan trend harga saham dan masa untuk membeli dan menjual. Indeks RSI dapat menentukan keadaan overbought dan oversold. Gabungan kedua-duanya dapat meningkatkan ketepatan pembelian dan penjualan.
Dengan menggunakan dua penunjuk penapis pada masa yang sama, anda boleh mengelakkan isyarat palsu yang dihasilkan oleh satu penunjuk.
MACD digabungkan dengan RSI untuk membeli sebelum titik balik dan menjual selepas titik balik untuk menangkap peluang untuk berbalik.
Strategi ini beroperasi dengan frekuensi sederhana, boleh menjejaki trend dan menangkap pembalikan, dan fleksibel.
Penunjuk MACD mudah menghasilkan isyarat palsu dalam keadaan goyah. Tetapan parameter penunjuk RSI perlu dioptimumkan, jika tidak, isyarat palsu juga akan muncul.
Harga saham boleh berubah-ubah dalam jangka masa pendek, dan titik hentian yang jatuh dari strategi menyebabkan kerugian.
Anda perlu mengoptimumkan parameter RSI dan MACD, jika tidak, anda mungkin mempunyai terlalu banyak atau kurang isyarat.
Perdagangan dalam talian memerlukan pengurusan dana dan kawalan risiko yang ketat.
Mengoptimumkan tetapan rata-rata MACD parameter untuk mencari kombinasi parameter terbaik.
Mengoptimumkan paras RSI untuk mengelakkan isyarat palsu.
Menyertai mekanisme halangan kerugian untuk mengawal kerugian tunggal.
Anda boleh mempertimbangkan untuk menambah penapis berganda dengan penunjuk lain, seperti pita Brin, KDJ dan sebagainya.
Anda boleh menguji pelbagai strategi jual beli, seperti strategi penembusan, strategi trend-following dan sebagainya.
Strategi ini menggunakan kedua-dua penunjuk kekuatan MACD dan RSI pada masa yang sama, membeli dan menjual pada titik balik, mempunyai nilai yang kuat dalam kehidupan nyata. Tetapi perlu terus mengoptimumkan parameter dan melakukan pengurusan dana yang ketat, untuk mencapai kesan yang baik dalam kehidupan nyata.
/*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)