Strategi Putaran Momentum Berbilang Faktor

Penulis:ChaoZhang, Tarikh: 2023-10-25 11:52:19
Tag:

img

Ringkasan

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.

Logika Strategi

Komponen utama strategi ini ialah:

  1. Penghakiman faktor

    • RSI: Hitung RSI 14 tempoh dan menilai sama ada ia lebih rendah daripada barisan beli atau lebih tinggi daripada barisan jual
    • TD Urutan: Mengira bilangan hari batas naik/turun dan menilai sama ada ia memenuhi syarat beli/jual
    • MACD: Mengira histogram MACD dan MACD untuk menilai keadaan beli/jual
    • Bollinger Bands: Mengira BBs 20 tempoh dan menilai jika harga menyentuh BBs band atas atau bawah
  2. Masuk dan keluar

    • Syarat beli: RSI, MACD, TD Urutan memberikan isyarat beli bersama-sama
    • Syarat jual: RSI, MACD, TD Urutan memberikan isyarat jual bersama-sama
    • Hentikan keuntungan: Gunakan mata tetap atau peratusan sebagai hentian keuntungan
    • Stop loss: Tetapkan titik kehilangan maksimum yang boleh diterima untuk stop loss
  3. Pengoptimuman strategi

    • Sesuaikan parameter RSI: Optimumkan parameter tempoh RSI
    • Penyesuaian tempoh MA: Mengoptimumkan parameter tempoh purata bergerak
    • Sesuaikan keadaan kemasukan: Tambah atau kurangkan isyarat kemasukan
    • Tambah faktor lain: Masukkan lebih banyak penunjuk teknikal dan faktor statistik

Analisis Kelebihan

  • 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.

Analisis Risiko

  • 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.

Arahan pengoptimuman

  • 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.

Ringkasan

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)













Lebih lanjut