Strategi Kombinasi Optimasi Tren Momentum

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

img

Gambaran umum

Momentum Trend Optimization Combination Strategy adalah strategi perdagangan kuantitatif jangka menengah hingga panjang yang menggabungkan momentum dan faktor tren. Strategi ini menghasilkan sinyal beli dan jual dengan menggunakan kombinasi rata-rata bergerak eksponensial, rata-rata bergerak, indikator volume dan kemiringan. Strategi ini dioptimalkan untuk perdagangan T + 1 dan hanya cocok untuk posisi panjang. Optimasi juga berlaku untuk pasar saham internasional.

Logika Strategi

Strategi ini menggunakan rata-rata bergerak sederhana 6 hari dan rata-rata bergerak sederhana 35 hari untuk mendefinisikan dua rata-rata bergerak. Garis sinyal beli didefinisikan sebagai rata-rata bergerak eksponensial 2 hari, dan garis sinyal jual dihitung berdasarkan kemiringan selama 8 harga penutupan terakhir. Selain itu, rata-rata bergerak eksponensial volume 20 hari didefinisikan sebagai indikator volume. Untuk menyaring beberapa kebisingan, strategi ini juga memperkenalkan penilaian kemiringan mingguan untuk arah pasar.

Ketika harga penutupan lebih tinggi dari rata-rata bergerak 35 hari, volume perdagangan lebih tinggi dari volume perdagangan rata-rata 20 hari, dan cek mingguan menunjukkan pasar bull, salib emas dari bagian bawah memicu sinyal beli. Sebaliknya, salib kematian dari bagian atas memicu sinyal jual.

Untuk manajemen risiko, strategi memperkenalkan mekanisme penyesuaian posisi dinamis. Posisi aktual dihitung berdasarkan ekuitas akun, rasio posisi maksimum, ATR dan faktor risiko. Ini membantu mengendalikan penarikan maksimum strategi.

Analisis Keuntungan

Strategi ini menggabungkan faktor momentum dan penyaringan tren, yang dapat secara efektif mengidentifikasi arah jangka menengah hingga panjang. Pada saat yang sama, penyaringan kebisingan juga ada untuk menghindari sinyal palsu di pasar yang tidak stabil. Selain itu, pengenalan mekanisme manajemen risiko juga memungkinkan kontrol yang tepat atas penarikan maksimum, sehingga memastikan ketahanan strategi.

Dari hasil backtest, pengembalian keseluruhan strategi mencapai 128,86%, dengan Alpha yang sangat signifikan. Pada saat yang sama, tingkat kemenangan strategi juga mencapai 60,66%, mencerminkan stabilitas efek strategi.

Analisis Risiko

Meskipun strategi itu sendiri telah dioptimalkan untuk mekanisme manajemen risiko, masih ada beberapa risiko yang perlu diperhatikan.

  1. Dari kerugian terbesar tunggal sebesar 222.021,46 yuan, dapat dilihat bahwa amplitudo retracement dari strategi ini besar.

  2. Risiko stabilitas sinyal. Sinyal strategi dapat dipengaruhi oleh faktor-faktor khusus dari saham individu, yang mengakibatkan situasi sinyal palsu. Hal ini akan memiliki dampak tertentu pada hasil strategi.

  3. Jika lingkungan pasar makro berubah secara signifikan, parameter strategi mungkin perlu disesuaikan untuk terus mempertahankan efeknya.

Arahan Optimasi

Menurut analisis risiko di atas, masih ada kebutuhan dan kemungkinan untuk mengoptimalkan strategi ini.

  1. Berdasarkan kerugian maksimum, mekanisme manajemen posisi dapat lebih dioptimalkan dengan memperkenalkan modul stop loss untuk mengontrol besarnya kerugian tunggal.

  2. Pertimbangkan untuk menambahkan lebih banyak indikator penyaringan untuk mengidentifikasi beberapa fenomena saham khusus dan mengurangi kemungkinan sinyal palsu.

  3. Terus melakukan backtesting dan verifikasi parameter strategi, dan melakukan penyesuaian parameter tepat waktu berdasarkan perubahan kondisi pasar.

Ringkasan

Momentum Trend Optimization Combination Strategy adalah strategi perdagangan kuantitatif jangka menengah hingga panjang yang menggabungkan faktor momentum dan penyaringan tren dan secara khusus dioptimalkan untuk perdagangan T + 1. Berdasarkan indikator backtest, efek keseluruhan strategi ini signifikan, dengan Alpha yang sangat menakjubkan. Tetapi risiko potensial juga harus diperhatikan, dan parameter harus disesuaikan tepat waktu sesuai dengan perubahan kondisi pasar. Strategi dapat membawa Alpha tambahan kepada pedagang kuantitatif dan layak untuk penelitian dan verifikasi lebih 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 banyak