Strategi rotasi momentum multi-faktor


Tanggal Pembuatan: 2023-10-25 11:52:19 Akhirnya memodifikasi: 2023-10-25 11:52:19
menyalin: 0 Jumlah klik: 754
1
fokus pada
1617
Pengikut

Strategi rotasi momentum multi-faktor

Ringkasan

Strategi ini memanfaatkan RSI, MACD rata-rata, Bollinger Bands, dan stop loss untuk melakukan perdagangan bergulir multi-faktor. Strategi ini pertama-tama menilai apakah beberapa indikator teknis mengirimkan sinyal beli atau jual secara bersamaan, dan jika demikian, melakukan operasi beli atau jual yang sesuai. Strategi ini juga menggunakan stop loss dan stop loss untuk mengunci keuntungan dan mengendalikan risiko.

Prinsip Strategi

Strategi ini terdiri dari beberapa bagian utama:

  1. Faktor penilaian

    • RSI: Menghitung RSI 14 siklus untuk menentukan apakah RSI berada di bawah garis beli atau di atas garis jual
    • Sequence TD: menghitung hari stop loss untuk menentukan apakah kondisi buy and sell telah tercapai
    • MACD: Menghitung MACD dan MACD historis untuk menentukan kondisi jual beli
    • Bollinger Bands: menghitung Bollinger Bands 20 hari untuk menentukan apakah harga telah mencapai Bollinger Bands
  2. Masuk dan keluar

    • Kondisi pembelian: pembelian dilakukan ketika RSI, MACD, dan TD melakukan sinyal pembelian secara bersamaan
    • Kondisi jual: penjualan dilakukan ketika RSI, MACD, dan TD berturut-turut memberikan sinyal jual secara bersamaan
    • Hentikan: Hentikan bergerak dengan poin atau persentase tetap
    • Stop Loss: Tentukan titik kerugian maksimum yang dapat ditolerir dan lakukan stop loss
  3. Optimasi Strategi

    • Adaptasi parameter RSI: Periode parameter untuk optimalisasi RSI
    • Siklus penyesuaian MA: Parameter siklus untuk mengoptimalkan garis rata-rata
    • Sesuaikan kondisi masuk: tambah atau kurangi sinyal masuk
    • Menambahkan faktor-faktor lain: menggabungkan lebih banyak indikator teknis dan faktor statistik

Analisis Keunggulan Strategi

  • Kombinasi faktor untuk memastikan akurasi masuk

Strategi ini tidak hanya mempertimbangkan satu indikator teknis, tetapi menggabungkan beberapa faktor seperti RSI, MACD, TD sequence, sehingga dapat mengurangi sinyal palsu yang disebabkan oleh satu indikator, meningkatkan keakuratan masuk.

  • Fitur dinamis, menangkap tren

Indikator seperti RSI, MACD memiliki karakteristik dinamis yang lebih jelas, dapat menangkap perubahan tren harga saham. Indikator ini lebih sensitif terhadap pergeseran dibandingkan dengan indikator yang mengikuti tren seperti garis rata-rata.

  • Stop Loss Mechanism, Pengendalian Risiko

Stop-loss yang bergerak dapat berhenti dengan status operasi yang bergerak, untuk mengunci keuntungan dengan lebih baik. Pengaturan Stop-Loss dapat mengontrol kerugian tunggal.

  • Strategi yang jelas dan sederhana

Strategi ini menggabungkan indikator teknis yang umum digunakan dan memiliki beberapa universalitas. Aturan relatif sederhana dan jelas, mudah dipahami dan dioperasikan.

Analisis Risiko Strategi

  • Efektifitas yang lebih rendah di bawah kepemimpinan multi-kepala

Strategi ini didasarkan pada manipulasi pasar mundur dan merupakan strategi berbalik. Dalam pasar bull, penggunaan strategi ini mungkin sering mengalami kerugian dan tidak efektif.

  • Frekuensi transaksi mungkin terlalu tinggi

Jika parameter diatur terlalu sensitif, frekuensi transaksi mungkin terlalu tinggi, meningkatkan biaya transaksi dan kehilangan slippage.

  • Indikator risiko dispersi

Strategi ini bergantung pada sinyal yang sama dari berbagai indikator, tetapi kadang-kadang indikator dapat berselisih dan menghasilkan sinyal yang salah.

  • Stop Loss Mengikuti Risiko

Setel Stop Loss Fixed Point yang mungkin akan dirobek, Anda dapat mengatur Stop Loss Dinamis atau pertimbangkan untuk mengganti saham untuk menghindari risiko tersebut.

Arah optimasi strategi

  • Optimalkan parameter, mengurangi frekuensi transaksi

Anda dapat menguji parameter RSI dan parameter periodik garis rata-rata untuk menemukan kombinasi dengan frekuensi perdagangan yang lebih rendah.

  • Meningkatkan Faktor Statistik, Meningkatkan Efisiensi

Anda dapat mengatur parameter untuk meningkatkan efektivitas strategi dengan menggabungkan karakteristik statistik dari saham, seperti volatilitas, likuiditas, dan sebagainya.

  • Tergabung dengan indikator pasar global seperti VIX

Parameter strategi dapat disesuaikan dengan indeks kepanikan pasar seperti VIX, untuk mengurangi frekuensi perdagangan saat pasar panik.

  • Uji durasi posisi yang berbeda

Anda dapat menguji berbagai periode kepemilikan posisi untuk melihat apakah kepemilikan jangka panjang atau rotasi jangka pendek mempengaruhi efektivitas strategi.

  • Optimalkan dan uji strategi stop loss

Dengan menggunakan metode ini, dapat dipelajari cara-cara yang lebih canggih untuk menghentikan kerusakan dan mengukur efeknya.

Meringkaskan

Strategi ini mempertimbangkan berbagai indikator teknis secara menyeluruh, menggunakan stop loss bergerak untuk mengunci keuntungan dan mengendalikan risiko dengan memastikan akurasi masuk yang lebih tinggi. Strategi ini sederhana dan jelas, mudah dipahami, dapat meningkatkan efektivitas lebih lanjut dengan optimasi parameter dan pilihan indikator. Namun, strategi ini lebih cocok untuk situasi pasar berlawanan dan bergolak, dan kemungkinannya lebih buruk dalam situasi kenaikan yang berkelanjutan.

Kode Sumber Strategi
/*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)