Strategi ini menghasilkan isyarat dagangan dengan mengira persimpangan penunjuk MACD dan RSI. Ia menghasilkan isyarat beli dan jual apabila RSI terlalu banyak dibeli atau terlalu banyak dijual dan persimpangan MACD berlaku. Strategi ini menggabungkan kelebihan dua jenis penunjuk yang berbeza, mempertimbangkan kedua-dua trend harga dan situasi terlalu banyak dibeli / terlalu banyak dijual, dengan itu meningkatkan keberkesanan strategi.
Strategi ini terutamanya menggunakan gabungan penunjuk MACD dan RSI untuk menjana isyarat perdagangan. MACD biasanya digunakan untuk menentukan trend harga dan perubahan momentum, sementara RSI digunakan untuk menentukan keadaan overbought / oversold.
Strategi ini mula-mula mengira garis pantas, garis perlahan dan garis isyarat MACD. Apabila garis pantas lebih besar daripada garis perlahan, isyarat salib emas dihasilkan. Apabila garis pantas kurang daripada garis perlahan, isyarat salib kematian dihasilkan. Ini menunjukkan bahawa trend harga dan momentum berubah.
Pada masa yang sama, strategi ini mengira penunjuk RSI dan menetapkan garis overbought dan oversold. Apabila RSI lebih rendah daripada garis oversold, ia menunjukkan overselling. Apabila RSI lebih tinggi daripada garis overbought, ia menunjukkan overbuying.
Apabila RSI overbought/oversold berlaku, strategi menghasilkan isyarat beli apabila MACD golden cross berlaku, dan menghasilkan isyarat jual apabila MACD death cross berlaku. Itulah apabila trend harga terbalik, penunjuk MACD digunakan untuk menangkap titik perubahan kerana sensitiviti.
Strategi ini menggabungkan kelebihan penunjuk MACD dan RSI untuk meningkatkan keberkesanannya:
MACD dapat menangkap perubahan harga dengan sensitif, sementara RSI mempertimbangkan keadaan overbought / oversold, saling melengkapi.
Menggabungkan kedua-dua penunjuk boleh menapis beberapa isyarat perdagangan yang bising dan mengurangkan perdagangan yang tidak perlu.
MACD mengukur perbezaan antara purata bergerak, manakala RSI mengukur bahagian perubahan harga, kedua-dua kaedah boleh mengesahkan satu sama lain.
MACD bertindak balas dengan cepat terhadap perubahan harga, manakala RSI overbought/oversold divergences adalah jelas, kesan combo yang baik.
Terdapat juga risiko tertentu dalam strategi ini:
Kedua-dua MACD dan RSI terdedah kepada peristiwa tiba-tiba, yang boleh menghasilkan isyarat yang salah. Parameter boleh diselaraskan untuk menapis isyarat.
Kesan pada stok individu mungkin tidak ideal, indeks atau portfolio boleh dipertimbangkan.
Menyenangkan kedua-dua persimpangan MACD dan RSI overbought/oversold mungkin kehilangan beberapa peluang.
Strategi ini juga boleh dioptimumkan dalam aspek berikut:
Mengoptimumkan parameter MACD dan RSI agar sesuai dengan pelbagai jenis dagangan.
Tambah strategi stop loss untuk menghentikan kerugian tepat pada masanya apabila kerugian mencapai peratusan tertentu.
Gabungkan dengan penunjuk lain seperti Bollinger Bands dan KDJ untuk menetapkan syarat isyarat perdagangan yang lebih ketat.
Jalankan strategi pada data frekuensi tinggi untuk memanfaatkan sifat cepat / perlahan MACD dan meningkatkan prestasi strategi.
Mengikut keputusan backtest, sesuaikan garis RSI yang terlalu banyak dibeli/terlalu banyak dijual untuk mencari kombinasi parameter yang terbaik.
Strategi persilangan MACD dan RSI menggabungkan trend berikut dan pertimbangan overbought / oversold, yang secara berkesan dapat menangkap titik pembalikan harga dan meningkatkan prestasi strategi. Tetapi masih ada beberapa batasan, yang memerlukan ujian dan pengoptimuman berterusan mengikut keadaan pasaran untuk mencapai prestasi maksimum.
/*backtest start: 2023-01-16 00:00:00 end: 2024-01-22 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)