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.
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.
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.
Meskipun strategi itu sendiri telah dioptimalkan untuk mekanisme manajemen risiko, masih ada beberapa risiko yang perlu diperhatikan.
Dari kerugian terbesar tunggal sebesar 222.021,46 yuan, dapat dilihat bahwa amplitudo retracement dari strategi ini besar.
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.
Jika lingkungan pasar makro berubah secara signifikan, parameter strategi mungkin perlu disesuaikan untuk terus mempertahankan efeknya.
Menurut analisis risiko di atas, masih ada kebutuhan dan kemungkinan untuk mengoptimalkan strategi ini.
Berdasarkan kerugian maksimum, mekanisme manajemen posisi dapat lebih dioptimalkan dengan memperkenalkan modul stop loss untuk mengontrol besarnya kerugian tunggal.
Pertimbangkan untuk menambahkan lebih banyak indikator penyaringan untuk mengidentifikasi beberapa fenomena saham khusus dan mengurangi kemungkinan sinyal palsu.
Terus melakukan backtesting dan verifikasi parameter strategi, dan melakukan penyesuaian parameter tepat waktu berdasarkan perubahan kondisi pasar.
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)