Strategi Rotasi Momentum Berbagai Faktor

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

img

Gambaran umum

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.

Logika Strategi

Komponen utama dari strategi ini adalah:

  1. Penghakiman faktor

    • RSI: Hitung RSI 14 periode dan menilai apakah lebih rendah dari garis beli atau lebih tinggi dari garis jual
    • TD Sequence: Menghitung jumlah hari batas naik/turun dan menilai apakah memenuhi kondisi beli/jual
    • MACD: Menghitung MACD dan Histogram MACD untuk menilai kondisi beli/jual
    • Bollinger Bands: Hitung BB 20 periode dan menilai apakah harga menyentuh BBs band atas atau bawah
  2. Masuk dan keluar

    • Kondisi beli: RSI, MACD, TD Sequence memberikan sinyal beli bersama-sama
    • Kondisi jual: RSI, MACD, TD Sequence memberikan sinyal jual bersama-sama
    • Stop profit: Gunakan poin tetap atau persentase sebagai stop profit terakhir
    • Stop loss: Tentukan titik kerugian maksimum yang ditoleransi untuk stop loss
  3. Optimasi Strategi

    • Sesuaikan parameter RSI: Optimalkan parameter periode RSI
    • Sesuaikan periode MA: Optimalkan parameter periode moving averages
    • Sesuaikan kondisi masuk: Tambahkan atau kurangi sinyal masuk
    • Tambahkan faktor lain: Masukkan lebih banyak indikator teknis dan faktor statistik

Analisis Keuntungan

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

Analisis Risiko

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

Arahan Optimasi

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

Ringkasan

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)













Lebih banyak