Strategi ini menggabungkan RSI, MACD, Bollinger Bands dan faktor batas ke atas / ke bawah untuk melaksanakan perdagangan putaran momentum pelbagai faktor. Strategi pertama menilai sama ada beberapa penunjuk teknikal memberikan isyarat beli atau jual secara serentak. Jika ya, operasi beli atau jual yang sepadan akan dilaksanakan. Sementara itu, strategi mengamalkan stop profit bergerak dan stop loss untuk mengunci keuntungan dan mengawal risiko.
Komponen utama strategi ini ialah:
Penghakiman faktor
Masuk dan keluar
Pengoptimuman strategi
Pelbagai faktor meningkatkan ketepatan kemasukan
Strategi ini mengambil kira beberapa faktor seperti RSI dan MACD dan bukannya hanya satu penunjuk. Ini mengurangkan isyarat palsu dan meningkatkan ketepatan kemasukan.
Ciri momentum menangkap trend
Penunjuk seperti RSI dan MACD mempunyai ciri momentum yang jelas, yang menangkap perubahan trend harga.
Mekanisme berhenti keuntungan/kerugian mengawal risiko
Memindahkan stop profit boleh mengunci keuntungan secara dinamik mengikut pasaran.
Logik yang mudah dan jelas
Strategi ini menggabungkan penunjuk teknikal yang sama dan mempunyai universaliti tertentu.
Prestasi yang lemah dalam pasaran lembu
Strategi ini memberi tumpuan kepada perdagangan pembalikan purata.
Potensi kekerapan dagangan yang terlalu tinggi
Jika parameter ditetapkan terlalu sensitif, kekerapan dagangan mungkin terlalu tinggi, meningkatkan kos dan seluncur.
Risiko perbezaan di antara penunjuk
Strategi ini bergantung pada isyarat yang konsisten di seluruh penunjuk, tetapi kadang-kadang perbezaan mungkin berlaku, mengakibatkan isyarat yang salah.
Penembusan Stop Loss
Titik stop loss tetap boleh ditembusi. Stop loss dinamik atau perubahan stok boleh membantu mengelakkan risiko ini.
Mengoptimumkan parameter untuk mengurangkan kekerapan dagangan
Uji parameter RSI dan tempoh MA untuk mencari kombinasi dengan kekerapan perdagangan yang lebih rendah.
Tambah faktor statistik untuk meningkatkan kecekapan
Menggabungkan statistik khusus saham seperti turun naik dan kecairan untuk menetapkan parameter dan meningkatkan kecekapan.
Menggabungkan penunjuk peringkat pasaran seperti VIX
Sesuaikan parameter strategi berdasarkan indikator panik pasaran seperti VIX untuk mengurangkan kekerapan perdagangan semasa kejatuhan pasaran.
Uji tempoh penahan yang berbeza
Uji pemegang jangka panjang berbanding putaran jangka pendek untuk melihat kesan mereka terhadap prestasi strategi.
Mengoptimumkan dan menguji keuntungan/kerugian berhenti
Penyelidikan lebih canggih dinamik berhenti keuntungan / kerugian teknik dan backtest mereka.
Strategi ini menggabungkan pelbagai penunjuk teknikal dan menggunakan stop profit / loss bergerak untuk mengunci keuntungan dan mengawal risiko sambil memastikan ketepatan kemasukan yang tinggi. Logiknya mudah dan jelas. Prestasi dapat ditingkatkan lagi melalui pengoptimuman parameter dan pemilihan penunjuk. Tetapi strategi ini lebih sesuai untuk pasaran pembalikan purata dan jangkauan. Ia mungkin kurang baik dalam aliran menaik yang berterusan. Ringkasnya, ini adalah strategi momentum pembalikan purata pelbagai faktor yang memberikan idea dan rujukan untuk perdagangan putaran 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)