Strategi Kombinasi Optimalisasi Tren Momentum


Tanggal Pembuatan: 2024-02-06 15:11:57 Akhirnya memodifikasi: 2024-02-06 15:11:57
menyalin: 4 Jumlah klik: 756
1
fokus pada
1617
Pengikut

Strategi Kombinasi Optimalisasi Tren Momentum

Ringkasan

Strategi kombinasi pengoptimalan tren dinamis adalah strategi perdagangan kuantitatif lini tengah dan panjang yang menggabungkan faktor dinamis dan faktor tren untuk menghasilkan sinyal beli dan jual melalui kombinasi indeks moving average, moving average, volume transaksi dan indikator kecenderungan. Strategi ini dioptimalkan untuk perdagangan T+1 dan hanya berlaku untuk melakukan banyak arah.

Prinsip Strategi

Strategi ini menggunakan 6 hari rata-rata bergerak sederhana dan 35 hari rata-rata bergerak sederhana untuk mendefinisikan dua rata-rata bergerak. Garis sinyal beli didefinisikan sebagai 2 hari rata-rata bergerak indeks, dan garis sinyal jual dihitung berdasarkan harga penutupan 8 hari terakhir dan dipadatkan. Selain itu, juga didefinisikan 20 hari rata-rata bergerak indeks volume transaksi sebagai indikator volume transaksi.

Ketika harga close-out saham lebih tinggi dari moving average 35 hari, volume transaksi lebih tinggi dari volume transaksi 20 hari, dan diperiksa per minggu sebagai pasar multihead, sinyal beli dipicu dari crossing emas di bawah; sebaliknya, sinyal jual dipicu dari crossing mati di atas.

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

Analisis Keunggulan

Strategi ini menggabungkan faktor momentum dan penyaringan tren, yang dapat secara efektif mengidentifikasi arah garis tengah. Selain itu, penyaringan terhadap Noise juga lebih tepat, yang membantu menghindari sinyal salah dalam situasi getaran. Selain itu, pengenalan mekanisme manajemen risiko juga membuat kontrol mundur total yang tepat, sehingga menjamin kehandalan strategi.

Dari hasil retrospeksi, tingkat pengembalian keseluruhan strategi mencapai 128.86%, dengan Alpha yang sangat signifikan. Pada saat yang sama, tingkat kemenangan strategi mencapai 60.66%, yang mencerminkan stabilitas efek strategi.

Analisis risiko

Meskipun strategi itu sendiri telah mengoptimalkan mekanisme manajemen risiko, masih ada beberapa risiko yang perlu diperhatikan. Secara khusus, risiko utama meliputi:

  1. Risiko penarikan balik. Dari kerugian maksimum tunggal 222.021.46 terlihat, strategi penarikan balik lebih besar. Hal ini terkait dengan mekanisme manajemen posisi yang tidak sempurna.

  2. Risiko stabilitas sinyal. Sinyal strategi dapat dipengaruhi oleh faktor-faktor khusus individu, sehingga terjadi sinyal palsu. Ini akan berdampak pada keuntungan strategi.

  3. Risiko perubahan lingkungan pasar. Jika ada perubahan besar dalam lingkungan pasar makro, parameter strategi mungkin perlu disesuaikan untuk tetap berlaku.

Arah optimasi

Berdasarkan analisis risiko di atas, strategi ini masih memiliki kebutuhan dan kemungkinan untuk dioptimalkan.

  1. Dari situasi kerugian maksimum, dapat lebih mengoptimalkan mekanisme manajemen posisi, memperkenalkan modul stop loss untuk mengontrol tingkat kerugian per unit.

  2. Anda dapat mempertimbangkan untuk menambahkan lebih banyak indikator penyaringan, mengidentifikasi beberapa fenomena saham khusus, untuk mengurangi probabilitas sinyal palsu. Misalnya, memperkenalkan harga kuantitatif yang menyimpang dari indikator.

  3. Parameter strategi harus terus diuji dan diverifikasi, dan harus disesuaikan dengan perubahan kondisi pasar. Selain itu, perlu juga mencegah overoptimisasi.

Meringkaskan

Strategi kombinasi pengoptimalan tren dinamis adalah strategi perdagangan kuantitatif lini tengah dan panjang, yang menggabungkan faktor dinamis dan penyaringan tren, yang dioptimalkan khusus untuk perdagangan T + 1. Dari pengukuran indikator, efek keseluruhan strategi sangat signifikan, dengan alfa yang sangat menakjubkan. Namun, Anda juga harus memperhatikan risiko yang mungkin terjadi dan menyesuaikan parameter sesuai dengan kondisi pasar.

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