Strategi ini menggabungkan RSI, MACD, Bollinger Bands dan faktor limit up/down untuk mengimplementasikan perdagangan rotasi momentum multi-faktor. Strategi pertama menilai apakah beberapa indikator teknis memberikan sinyal beli atau jual secara bersamaan. Jika demikian, operasi beli atau jual yang sesuai akan dilaksanakan. Sementara itu, strategi mengadopsi stop profit bergerak dan stop loss untuk mengunci keuntungan dan mengendalikan risiko.
Komponen utama dari strategi ini adalah:
Penghakiman faktor
Masuk dan keluar
Optimasi Strategi
Beberapa faktor meningkatkan akurasi entri
Strategi ini mempertimbangkan beberapa faktor seperti RSI dan MACD daripada hanya satu indikator. Ini mengurangi sinyal palsu dan meningkatkan akurasi entri.
Karakteristik momentum menangkap tren
Indikator seperti RSI dan MACD memiliki karakteristik momentum yang jelas, yang menangkap perubahan tren harga.
Mekanisme stop profit/loss mengendalikan risiko
Memindahkan stop profit dapat mengunci keuntungan secara dinamis mengikuti pasar.
Logika yang sederhana dan jelas
Strategi ini menggabungkan indikator teknis yang sama dan memiliki universalitas tertentu.
Kinerja yang buruk di pasar bull
Strategi ini berfokus pada perdagangan reversi rata-rata. Hal ini dapat memicu sering stop loss di pasar bull.
Frekuensi perdagangan yang terlalu tinggi
Jika parameter ditetapkan terlalu sensitif, frekuensi perdagangan mungkin terlalu tinggi, meningkatkan biaya dan slippage.
Risiko divergensi di antara indikator
Strategi ini bergantung pada sinyal yang konsisten di seluruh indikator, tetapi kadang-kadang divergensi dapat terjadi, menghasilkan sinyal yang salah.
Stop loss yang ditembus
Titik stop loss tetap dapat ditembus. Stop loss dinamis atau perubahan stok dapat membantu menghindari risiko ini.
Mengoptimalkan parameter untuk mengurangi frekuensi perdagangan
Uji parameter RSI dan periode MA untuk menemukan kombinasi dengan frekuensi perdagangan yang lebih rendah.
Tambahkan faktor statistik untuk meningkatkan efisiensi
Masukkan statistik khusus saham seperti volatilitas dan likuiditas untuk menetapkan parameter dan meningkatkan efisiensi.
Menggabungkan indikator tingkat pasar seperti VIX
Menyesuaikan parameter strategi berdasarkan indikator pasar panik seperti VIX untuk mengurangi frekuensi perdagangan selama kecelakaan pasar.
Uji periode penyimpanan yang berbeda
Uji kepemilikan jangka panjang versus rotasi jangka pendek untuk melihat dampaknya pada kinerja strategi.
Optimalkan dan uji stop profit/loss
Penelitian lebih canggih teknik stop profit / loss dinamis dan backtest mereka.
Strategi ini menggabungkan beberapa indikator teknis dan mengadopsi stop profit / loss bergerak untuk mengunci keuntungan dan mengendalikan risiko sambil memastikan akurasi entri yang tinggi. Logika sederhana dan jelas. Kinerja dapat ditingkatkan lebih lanjut melalui optimasi parameter dan pemilihan indikator. Tetapi strategi ini lebih cocok untuk pasar mean-reversor dan range-bound. Ini mungkin berkinerja buruk dalam tren naik yang persisten. Singkatnya, ini adalah strategi momentum mean-reversor multi-faktor yang khas yang memberikan ide dan referensi untuk perdagangan rotasi saham.
/*backtest start: 2023-09-24 00:00:00 end: 2023-10-24 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("RSI, TD Seq, MACD, BB Strategy - Calculation Trailing Profit",overlay=true) RSIDifference = input(-7, minval=-50, maxval=50, title="RSI Difference") TD = close > close[4] ?nz(TD[1])+1:0 TS = close < close[4] ?nz(TS[1])+1:0 TDUp = TD - valuewhen(TD < TD[1], TD , 1 ) TDDn = TS - valuewhen(TS < TS[1], TS , 1 ) TDcheckUP = iff(TD == 2, true, false) TDCheckDOWN = iff(TS == 2, true, false) [_, _, histLine] = macd(close, 12, 26, 9) MACDCheckDown = iff(histLine > 0 and histLine[1] > 0 and histLine[2] > 0 and histLine[3] > 0 and histLine[4] > 0, true, false) MACDCheckUp = iff(histLine < 0 and histLine[1] < 0 and histLine[2] < 0 and histLine[3] < 0 and histLine[4] < 0, true, false) RSICal = rsi(close, 14) RSICalNewUp = 50 + RSIDifference RSICalNewDown = 50 - RSIDifference RSICheckUp = iff(RSICal <= RSICalNewUp, true, false) RSICheckDown = iff(RSICal >= RSICalNewDown, true, false) basis = sma(close, 20) dev = 2 * stdev(close, 20) upperBB = basis + dev lowerBB = basis - dev BBCheckUp = iff(close > upperBB, true, false) BBCheckDown = iff(close < lowerBB, true, false) //BBCheckUp = false //BBCheckDown = false BuyCheck = iff(TDcheckUP == true and MACDCheckUp == true and RSICheckUp == true and BBCheckUp == false, true, false) SellCheck = iff(TDCheckDOWN == true and MACDCheckDown == true and RSICheckDown == true and BBCheckDown == false, true, false) ProfitStratA = input(50, minval=0, maxval=10000, title="Profit", step=0.5) ProfitTrailingA = input(10, minval=0, maxval=10000, title="Profit", step=0.5) useStopLoss = input(false, title="Use Stop Loss?") LossstratA = input(145, minval=0, maxval=10000, title="Stop Loss", step=0.5) colB = input(100, minval=0, maxval=100, title="0-show / 100-hide Strategy", step=100) ProfitStrat = ProfitStratA * 10 ProfitTrailing = ProfitTrailingA * 10 Lossstrat = useStopLoss ? LossstratA * 10 : 1000000 if (strategy.position_size > 0) strategy.exit("BuyClose", "Buy", trail_points=ProfitStrat, trail_offset=ProfitTrailing, loss=Lossstrat) if (strategy.position_size < 0) strategy.exit("SellClose", "Sell", trail_points=ProfitStrat, trail_offset=ProfitTrailing, loss=Lossstrat) if (BuyCheck == true and strategy.position_size == 0) strategy.entry("Buy", strategy.long, comment="Long Entry") if (SellCheck == true and strategy.position_size == 0) strategy.entry("Sell", strategy.short, comment="Short Entry") plotshape(BuyCheck, color=blue, transp=colB, style=shape.arrowup, text="Buy\n", location=location.belowbar) plotshape(SellCheck, color=orange, transp=colB, style=shape.arrowdown, text="Sell\n", location=location.abovebar)