Strategi mengikuti tren adaptif berdasarkan model multi-faktor


Tanggal Pembuatan: 2023-12-19 11:04:27 Akhirnya memodifikasi: 2023-12-19 11:04:27
menyalin: 1 Jumlah klik: 653
1
fokus pada
1621
Pengikut

Strategi mengikuti tren adaptif berdasarkan model multi-faktor

Ringkasan

Strategi ini adalah strategi pelacakan tren adaptif yang didorong oleh model multi-faktor. Ini mengintegrasikan beberapa indikator seperti RSI, MACD, dan Stochastics untuk membangun model multi-faktor untuk menentukan arah tren. Ini juga memiliki mekanisme stop loss adaptif yang dapat menyesuaikan harga stop loss berdasarkan dinamika ATR untuk mengendalikan risiko.

Prinsip

Strategi ini menggunakan beberapa indikator untuk membangun model untuk menilai tren. Pertama, ia menilai arah tren dengan kombinasi RSI, MACD; Kemudian, ia menilai apakah ada overbought atau oversold dengan kombinasi Stochastics, dan memfilter beberapa sinyal. Setelah masuk ke dalam pesanan, ia menggunakan ATR untuk menghitung parameter risiko, untuk mencapai stop loss adaptif.

Secara khusus, ia menghasilkan sinyal beli ketika RSI lebih tinggi dari 52 dan MACD Gold Forks; menghasilkan sinyal jual ketika RSI lebih rendah dari 48 dan MACD Dead Forks. Untuk menyaring sinyal palsu, ia juga mendeteksi apakah Stochastics terlalu banyak membeli atau terlalu banyak menjual.

Keunggulan

Keuntungan terbesar dari strategi ini adalah kemampuan pengendalian risiko yang kuat. Melalui model multi-faktor untuk menentukan arah tren, dapat disaring sebagian dari kebisingan, meningkatkan kualitas sinyal. Sementara itu, mekanisme stop loss adaptif dapat menyesuaikan amplitudo stop loss sesuai dengan tingkat fluktuasi pasar, secara efektif mengendalikan kerugian tunggal.

Selain itu, pengaturan parameter strategi ini masuk akal dan pengukuran yang lebih baik. Aset dengan siklus yang berbeda dapat dioptimalkan dengan menyesuaikan parameter.

Risiko

Risiko utama dari strategi ini adalah kualitas model yang dibangun dengan banyak faktor. Jika model tidak dibangun dengan baik, tidak dapat menentukan tren secara efektif, maka akan menghasilkan banyak sinyal yang salah. Selain itu, strategi stop loss sendiri memiliki risiko untuk di-arbitrage.

Untuk mengurangi risiko ini, perbaikan dapat dilakukan dari penyesuaian bobot model, pengaturan parameter yang dioptimalkan, dan kombinasi strategi stop loss lainnya. Intervensi manual juga diperlukan ketika terjadi pasar yang tidak normal.

Arah optimasi

Strategi ini dapat dioptimalkan dalam beberapa hal:

  1. Menyesuaikan bobot indikator dalam model multi-faktor untuk menemukan kombinasi bobot optimal

  2. Uji lebih banyak indikator, seperti CCI, volatilitas, dan model multi-faktor yang kaya

  3. Pengaturan parameter yang dioptimalkan untuk lebih banyak varietas dan siklus

  4. Mencoba berbagai strategi stop loss untuk menemukan kombinasi terbaik

  5. Menambahkan modul pelatihan model dan evaluasi strategi, untuk memungkinkan pembelajaran mesin

Meringkaskan

Strategi ini mengintegrasikan model multi-faktor dan mekanisme stop loss adaptif, yang memungkinkan kombinasi organik antara penilaian tren dan pengendalian risiko. Strategi ini memiliki pengembalian yang baik dan dapat diperluas. Dengan pengoptimalan berkelanjutan, strategi ini dapat menjadi strategi kuantitatif yang layak untuk dimiliki dalam jangka panjang.

Kode Sumber Strategi
/*backtest
start: 2022-12-12 00:00:00
end: 2023-12-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title="TradersAI_UTBot", overlay = true)
// CREDITS to @HPotter for the orginal code. 
// CREDITS to @Yo_adriiiiaan for recently publishing the UT Bot study based on the original code - 
// I just added some simple code to turn it into a strategy so that you all can backtest it to see the results for yourself! 
// Use this strategy on your favorite instrumnet and timeframe, with your favorite settings
// While @Yo_adriiiiaan mentions it works best on a 4-hour timeframe or above, 
// I am  happy to share here this working on a 15-minute chart on e-mini S&P 500 Index (using the KeyValue setting at 10)
// I am sure different people would discover different settings that work best for their preferred instrumnet/timeframe etc. 
// Play with it and enjoy! And, don't forget to share any positive results you might get! Good luck with your trading!

SOURCE = input(hlc3)
RSILENGTH = input(14, title = "RSI LENGTH")
RSICENTERLINE = input(52, title = "RSI CENTER LINE")
MACDFASTLENGTH = input(7, title = "MACD FAST LENGTH")
MACDSLOWLENGTH = input(12, title = "MACD SLOW LENGTH")
MACDSIGNALSMOOTHING = input(12, title = "MACD SIGNAL SMOOTHING")
a = input(10, title = "Key Vaule. 'This changes the sensitivity'") 
SmoothK = input(3)
SmoothD = input(3)
LengthRSI = input(14)
LengthStoch = input(14)
RSISource = input(close) 
c = input(10, title="ATR Period")
xATR = atr(c)
nLoss = a * xATR
xATRTrailingStop = iff(close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), close - nLoss),
     iff(close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), close + nLoss), 
     iff(close > nz(xATRTrailingStop[1], 0), close - nLoss, close + nLoss)))
pos =	iff(close[1] < nz(xATRTrailingStop[1], 0) and close > nz(xATRTrailingStop[1], 0), 1,
     iff(close[1] > nz(xATRTrailingStop[1], 0) and close < nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0))) 
color = pos == -1 ? red: pos == 1 ? green : blue 
ema= ema(close,1)
above = crossover(ema,xATRTrailingStop )
below = crossover(xATRTrailingStop,ema)
buy = close > xATRTrailingStop and above 
sell = close < xATRTrailingStop and below
barbuy = close > xATRTrailingStop 
barsell = close < xATRTrailingStop 
plotshape(buy, title = "Buy", text = 'Buy', style = shape.labelup, location = location.belowbar, color= green,textcolor = white, transp = 0, size = size.tiny)
plotshape(sell, title = "Sell", text = 'Sell', style = shape.labeldown, location = location.abovebar, color= red,textcolor = white, transp = 0, size = size.tiny)
barcolor(barbuy? green:na)
barcolor(barsell? red:na)
alertcondition(buy, title='Buy', message='Buy')
alertcondition(sell, title='Sell', message='Sell')

if(buy)
    strategy.entry("UTBotBuy",strategy.long)
if(sell)
    strategy.entry("UTBotSell",strategy.short)