Strategi Gabungan Pengoptimuman Trend Momentum

Penulis:ChaoZhang, Tarikh: 2024-02-06 15:11:57
Tag:

img

Ringkasan

Strategi Gabungan Pengoptimuman Trend Momentum adalah strategi perdagangan kuantitatif jangka menengah hingga panjang yang menggabungkan faktor momentum dan trend. Ia menjana isyarat beli dan jual dengan menggunakan gabungan purata bergerak eksponensial, purata bergerak, jumlah dan penunjuk kemiringan. Strategi ini dioptimumkan untuk perdagangan T + 1 dan hanya sesuai untuk kedudukan panjang. Pengoptimuman juga boleh digunakan untuk pasaran saham antarabangsa.

Logika Strategi

Strategi ini menggunakan purata bergerak mudah 6 hari dan purata bergerak mudah 35 hari untuk menentukan dua purata bergerak. Garis isyarat beli ditakrifkan sebagai purata bergerak eksponen 2 hari, dan garis isyarat jual dikira berdasarkan kemiringan selama 8 harga penutupan yang lalu. Di samping itu, purata bergerak eksponen 20 hari jumlah ditakrifkan sebagai penunjuk jumlah. Untuk menapis beberapa bunyi bising, strategi ini juga memperkenalkan penghakiman kemiringan mingguan untuk arah pasaran.

Apabila harga penutupan lebih tinggi daripada purata bergerak 35 hari, jumlah dagangan lebih tinggi daripada jumlah dagangan purata 20 hari, dan cek mingguan menunjukkan pasaran lembu, salib emas dari bahagian bawah mencetuskan isyarat beli. Sebaliknya, salib kematian dari bahagian atas mencetuskan isyarat jual.

Untuk pengurusan risiko, strategi memperkenalkan mekanisme penyesuaian kedudukan dinamik. Kedudukan sebenar dikira berdasarkan ekuiti akaun, nisbah kedudukan maksimum, ATR dan faktor risiko. Ini membantu mengawal pengeluaran maksimum strategi.

Analisis Kelebihan

Strategi ini menggabungkan faktor momentum dan penapisan trend, yang dapat mengenal pasti arah jangka menengah hingga panjang dengan berkesan. Pada masa yang sama, penapisan bunyi bising juga berlaku untuk mengelakkan isyarat palsu di pasaran yang tidak menentu. Di samping itu, pengenalan mekanisme pengurusan risiko juga membolehkan kawalan yang betul terhadap pengeluaran maksimum, dengan itu memastikan ketahanan strategi.

Dari hasil backtest, pulangan keseluruhan strategi mencapai 128.86%, dengan Alpha yang sangat signifikan. Pada masa yang sama, kadar kemenangan strategi juga mencapai 60.66%, mencerminkan kestabilan kesan strategi.

Analisis Risiko

Walaupun strategi itu sendiri telah dioptimumkan untuk mekanisme pengurusan risiko, masih ada beberapa risiko yang memerlukan perhatian.

  1. Risiko penarikan. Dari kerugian terbesar tunggal sebanyak 222,021.46 yuan, dapat dilihat bahawa amplitud retracement strategi adalah besar. Ini berkaitan dengan mekanisme pengurusan kedudukan yang tidak sempurna.

  2. Risiko kestabilan isyarat. Isyarat strategi boleh dipengaruhi oleh faktor-faktor khas saham individu, yang mengakibatkan situasi isyarat palsu. Ini akan mempunyai kesan tertentu terhadap pulangan strategi.

  3. Risiko perubahan persekitaran pasaran Jika persekitaran pasaran makro berubah dengan ketara, parameter strategi mungkin perlu disesuaikan untuk terus mengekalkan kesan.

Arahan pengoptimuman

Menurut analisis risiko di atas, masih ada keperluan dan kemungkinan untuk mengoptimumkan strategi ini.

  1. Berdasarkan kerugian maksimum, mekanisme pengurusan kedudukan boleh dioptimumkan lagi dengan memperkenalkan modul stop loss untuk mengawal besar kerugian tunggal.

  2. Pertimbangkan untuk menambah lebih banyak penapis penapis untuk mengenal pasti beberapa fenomena stok khas dan mengurangkan kebarangkalian isyarat palsu.

  3. Lanjutkan pengujian semula dan mengesahkan parameter strategi, dan buat penyesuaian parameter tepat pada masanya berdasarkan perubahan keadaan pasaran.

Ringkasan

Strategi Gabungan Pengoptimuman Trend Momentum adalah strategi perdagangan kuantitatif jangka menengah hingga panjang yang menggabungkan faktor momentum dan penapisan trend dan dioptimumkan khusus untuk perdagangan T + 1. Menghakimi dari penunjuk backtest, kesan keseluruhan strategi adalah signifikan, dengan Alpha yang sangat menakjubkan. Tetapi risiko berpotensi juga harus dikhawatirkan, dan parameter harus diselaraskan tepat pada masanya mengikut perubahan keadaan pasaran. Strategi ini dapat membawa Alpha tambahan kepada peniaga kuantitatif dan bernilai penyelidikan dan pengesahan lanjut.


/*backtest
start: 2024-01-06 00:00:00
end: 2024-02-05 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © fzj20020403

////@version=5
//@version=5
strategy("Optimized Zhaocaijinbao", overlay=true, margin_long=100, margin_short=0, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// Define two moving averages
ma6 = ta.sma(close, 6)
ma35 = ta.sma(close, 35)

// Define buy and sell signal lines
buyLine = ta.ema(close, 2)
sellSlope = (close - close[8]) / 8
sellLine = sellSlope * 1 + ta.sma(close, 8)

// Define volume indicator
volumeEMA = ta.ema(volume, 20)

// Define weekly slope factor
weeklyMa = ta.sma(close, 50)
weeklySlope = (weeklyMa - weeklyMa[4]) / 4 > 0

// Generate buy and sell signals
buySignal = ta.crossover(buyLine, sellLine) and close > ma35 and volume > volumeEMA and weeklySlope
sellSignal = ta.crossunder(sellLine, buyLine)

// Define dynamic position sizing factor
equity = strategy.equity
maxPositionSize = equity * input.float(title='Max Position Size (%)', defval=0.01, minval=0.001, maxval=0.5, step=0.001)
riskFactor = input.float(title='Risk Factor', defval=2.0, minval=0.1, maxval=10.0, step=0.1)
atr = ta.atr(14)
positionSize = maxPositionSize * riskFactor / atr

// Define position status
var inPosition = false

// Define buy and sell conditions
buyCondition = buySignal and not inPosition
sellCondition = sellSignal and inPosition

// Perform buy and sell operations
if (buyCondition)
    strategy.entry("Long", strategy.long, qty=positionSize)
    inPosition := true
if (sellCondition)
    strategy.close("Long")
    inPosition := false

// Draw vertical line markers for buy and sell signals
plotshape(buyCondition, style=shape.arrowdown, location=location.belowbar, color=color.green, size=size.small)
plotshape(sellCondition, style=shape.arrowup, location=location.abovebar, color=color.red, size=size.small)

// Draw two moving averages
plot(ma6, color=color.blue)
plot(ma35, color=color.orange)

// Draw volume indicator line
plot(volumeEMA, color=color.yellow)

// Define stop loss and take profit
stopLoss = strategy.position_avg_price * 0.5
takeProfit = strategy.position_avg_price * 1.25

if inPosition
    strategy.exit("Long Stop Loss", "Long", stop=stopLoss)
    strategy.exit("Long Take Profit", "Long", limit=takeProfit)



Lebih lanjut