JiaYiBing Tren Kuantitatif Momentum Strategi Perdagangan

Penulis:ChaoZhang, Tanggal: 2024-03-08 15:40:05
Tag:

img

Gambaran umum

JiaYiBing Quantitative Trend Momentum Trading Strategy adalah strategi perdagangan kuantitatif jangka pendek yang menggabungkan pelacakan tren, indikator momentum, dan saluran Bollinger Bands. Strategi ini menggunakan persilangan rata-rata bergerak cepat dan lambat untuk menentukan arah tren, dan mengkonfirmasi sinyal masuk berdasarkan saluran Bollinger Bands dan indikator momentum. Strategi ini juga mencakup langkah-langkah pengendalian risiko seperti mengambil keuntungan, stop loss, trailing stop, dan ukuran posisi.

Prinsip Strategi

Prinsip inti dari strategi ini adalah untuk menangkap peluang pasar dengan memanfaatkan tren harga dan efek momentum. Secara khusus, strategi menggunakan dua rata-rata bergerak dengan periode yang berbeda (cepat dan lambat) untuk menentukan arah tren harga. Ketika rata-rata bergerak cepat melintasi di atas rata-rata bergerak lambat, itu menunjukkan tren naik dan strategi menghasilkan sinyal panjang; sebaliknya, ketika rata-rata bergerak cepat melintasi di bawah rata-rata bergerak lambat, itu menunjukkan tren menurun dan strategi menghasilkan sinyal pendek.

Untuk lebih mengkonfirmasi tren dan waktu masuk, strategi ini juga menggabungkan Bollinger Bands dan indikator momentum. Bollinger Bands terdiri dari tiga garis: garis tengah adalah moving average, sementara band atas dan bawah adalah sejumlah penyimpangan standar di atas dan di bawah garis tengah. Ketika harga melanggar di atas Bollinger Band atas, itu menunjukkan momentum naik yang kuat dan strategi akan pergi panjang; ketika harga melanggar di bawah Bollinger Band bawah, itu menunjukkan momentum menurun yang kuat dan strategi akan pergi pendek.

Selain itu, strategi juga memperkenalkan indikator momentum, yang mengukur kecepatan perubahan harga dengan membandingkan harga saat ini dengan harga periode tertentu yang lalu.

Dalam hal ukuran posisi, strategi ini memungkinkan untuk menetapkan ukuran posisi berdasarkan ekuitas akun dan preferensi risiko. Pada saat yang sama, strategi ini juga mencakup mekanisme mengambil keuntungan, stop loss, dan trailing stop untuk mengontrol eksposur risiko setiap perdagangan.

Secara keseluruhan, Strategi Perdagangan Momentum Tren Kuantitatif JiaYiBing bertujuan untuk menangkap peluang pasar tren sambil mengontrol risiko secara ketat melalui berbagai dimensi seperti pelacakan tren, konfirmasi momentum, dan manajemen risiko, untuk mencapai pengembalian investasi yang stabil.

Analisis Keuntungan

  1. Pelacakan Tren: Strategi ini menggunakan persilangan rata-rata bergerak cepat dan lambat untuk menangkap peluang harga tren, memungkinkan untuk pergi panjang dalam tren naik dan pendek dalam tren turun, beradaptasi dengan kondisi pasar yang berbeda.

  2. Konfirmasi momentum: Pengenalan indikator momentum sebagai konfirmasi sekunder dari tren membantu menyaring sinyal palsu dan meningkatkan kualitas entri.

  3. Bollinger Bands dibantu pengambilan keputusan: Bollinger Bands dapat mencerminkan rentang volatilitas harga, dan breakout Bollinger Bands dapat dilihat sebagai sinyal akselerasi tren atau fluktuasi harga yang abnormal, memberikan referensi untuk masuk.

  4. Ukuran Posisi: Strategi ini menggunakan metode ukuran posisi berdasarkan persentase ekuitas akun dan batas maksimum, yang memungkinkan kontrol yang fleksibel atas modal yang digunakan dalam setiap perdagangan, baik memanfaatkan dana sepenuhnya dan menghindari eksposur risiko yang berlebihan.

  5. Ambil Keuntungan dan Hentikan Kerugian: Set strategi mengambil keuntungan, stop loss, dan level stop loss, yang dapat melindungi keuntungan ketika harga bergerak ke arah yang diharapkan, dan secara tegas memotong kerugian ketika harga berbalik, secara efektif mengendalikan kerugian maksimum dari setiap perdagangan.

  6. Optimasi Multi-Parameter: Strategi mencakup beberapa parameter yang dapat disesuaikan, seperti periode rata-rata bergerak, parameter Bollinger Bands, persentase profit dan stop loss, dll., yang dapat dioptimalkan untuk meningkatkan kemampuan beradaptasi dan ketahanan strategi.

Analisis Risiko

  1. Trading Sering: Strategi ini menghasilkan sinyal masuk berdasarkan crossover rata-rata bergerak dan breakout Bollinger Band. Ketika volatilitas pasar tinggi, itu dapat sering menghasilkan sinyal perdagangan, yang menyebabkan frekuensi perdagangan yang berlebihan dan meningkatkan biaya komisi dan slip.

  2. Sensitivitas Parameter: Strategi mencakup beberapa parameter, seperti periode rata-rata bergerak, periode momentum, parameter Bollinger Bands, dll. Pilihan parameter yang berbeda dapat berdampak signifikan pada kinerja strategi. Jika parameter tidak dipilih dengan benar, itu dapat menyebabkan kinerja strategi yang buruk.

  3. Pengakuan Trend Lagging: Rata-rata bergerak adalah indikator yang tertinggal, terutama ketika periode rata-rata bergerak panjang, kecepatan mengidentifikasi pembalikan tren akan lebih lambat, dan waktu masuk terbaik mungkin terlewatkan.

  4. Risiko Stop Loss: Meskipun strategi menetapkan langkah-langkah stop loss, dalam kondisi pasar yang ekstrim (seperti celah cepat), harga dapat langsung melintasi tingkat stop loss, sehingga kerugian aktual melebihi harapan.

  5. Risiko Posisi Terkonsentrasi: Jika strategi secara terus menerus menghasilkan sinyal ke arah yang sama selama periode tertentu, hal itu dapat menyebabkan konsentrasi posisi yang berlebihan ke satu arah, menghadapi risiko posisi yang lebih besar.

  6. Risiko likuiditas: Kinerja strategi dalam backtesting dan perdagangan langsung dapat dipengaruhi oleh likuiditas pasar, terutama ketika berurusan dengan dana besar, yang dapat menghadapi masalah slippage dan volume perdagangan yang tidak cukup.

Arahan Optimasi

  1. Memperkenalkan lebih banyak indikator teknis: Berdasarkan rata-rata bergerak, momentum, dan Bollinger Band saat ini, lebih banyak indikator teknis seperti RSI dan MACD dapat diperkenalkan untuk meningkatkan keandalan sinyal melalui konfirmasi multi-indikator.

  2. Mengoptimalkan Mekanisme Masuk dan Keluar: Lebih banyak kondisi dapat diperkenalkan dalam penilaian masuk dan keluar, seperti mengharuskan volume perdagangan tertentu sebelum price breakouts, menggunakan penutupan posisi bertahap atau trailing take profit untuk exit, untuk meningkatkan fleksibilitas dan profitabilitas strategi.

  3. Penyesuaian Parameter Dinamis: Untuk periode rata-rata bergerak, periode momentum, parameter Bollinger Bands, dll, seperangkat mekanisme adaptif parameter dapat dirancang untuk menyesuaikan nilai parameter secara dinamis berdasarkan keadaan pasar yang berbeda dan tingkat volatilitas, meningkatkan kemampuan adaptasi strategi.

  4. Meningkatkan Posisi Ukuran: Berdasarkan ukuran posisi saat ini, metode manajemen uang yang lebih maju seperti Kriteria Kelly, rasio tetap, ekuitas dinamis, dll dapat diperkenalkan untuk imbalan yang lebih baik pengembalian dan risiko.

  5. Kombinasi dengan Analisis Fundamental: Strategi analisis teknis murni dapat menghadapi risiko inefisiensi atau kegagalan pasar. Jika beberapa faktor fundamental, seperti data makroekonomi dan tren industri, dapat dikombinasikan untuk menyaring dan mengkonfirmasi sinyal teknis, hal itu dapat meningkatkan kinerja strategi.

  6. Meningkatkan Konsistensi Backtesting dan Live Trading: Kinerja strategi dalam backtesting dan live trading mungkin berbeda.

Ringkasan

JiaYiBing Quantitative Trend Momentum Trading Strategy adalah strategi perdagangan kuantitatif yang mengintegrasikan beberapa metode analisis teknis.


/*backtest
start: 2024-02-01 00:00:00
end: 2024-02-29 23:59:59
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy('甲易炳', overlay=true)

// Parameters
trendPeriod = input(50, 'Trend Period')
momentumPeriod = input(14, 'Momentum Period')
bbPeriod = input(20, 'Bollinger Bands Period')
bbDeviation = input(2, 'Bollinger Bands Deviation')
fastMALen = input(23, 'Fast SMA Length')
slowMALen = input(50, 'Slow SMA Length')
longTakeProfitPerc = input.float(0.5, 'Long Take Profit %', minval=0.05, step=0.05) * 0.01
shortTakeProfitPerc = input.float(0.5, 'Short Take Profit %', minval=0.05, step=0.05) * 0.01
stopLossPerc = input.float(0.5, 'Stop Loss %', minval=0.05, step=0.05) * 0.01
enableTrailing = input.bool(true, 'Enable Trailing')
trailingTakeProfitPerc = input.float(0.01, 'Trailing Take Profit %', minval=0.01, maxval=100, step=0.01) * 0.01
trailingStopLossPerc = input.float(0.5, 'Trailing Stop Loss %', minval=0.05, step=0.05) * 0.01
qty_percent = input.int(20, 'Position Size %', step=1)
qty_cap = input.int(10000, 'Max Position Size', step=1000)
beast_mode = input.bool(false, 'Beast Mode')
set_cap = input.bool(true, 'Cap Position Size')
strategy.initial_capital = 50000
// Calculate position size
qty1 = (strategy.initial_capital + strategy.netprofit) * qty_percent / 10 / close
qty = (set_cap and qty1 > qty_cap) ? qty_cap : qty1

// Calculate moving averages
fastMA = ta.sma(close, fastMALen)
slowMA = ta.sma(close, slowMALen)

// Bollinger Bands
[upperBB, middleBB, lowerBB] = ta.bb(close, bbPeriod, bbDeviation)

// Entry conditions
buySignal = ta.crossover(close, fastMA) and close > upperBB
sellSignal = ta.crossunder(close, fastMA) and close < lowerBB

// Rampage mode entry conditions
if beast_mode
    buySignal := buySignal and fastMA > fastMA[2]
    sellSignal := sellSignal and fastMA < fastMA[2]

// Active positions
longIsActive = buySignal or strategy.position_size > 0
shortIsActive = sellSignal or strategy.position_size < 0

// Declare take profit and stop loss variables
var float longTakeProfitPrice = na
var float shortTakeProfitPrice = na

// Take profit and stop loss calculation
if longIsActive
    if buySignal and not (strategy.position_size > 0)
        longTakeProfitPrice := close * (1 + longTakeProfitPerc)
    else
        longTakeProfitPrice := nz(longTakeProfitPrice[1], close * (1 + longTakeProfitPerc))
if shortIsActive
    if sellSignal and not (strategy.position_size < 0)
        shortTakeProfitPrice := close * (1 - shortTakeProfitPerc)
    else
        shortTakeProfitPrice := nz(shortTakeProfitPrice[1], close * (1 - shortTakeProfitPerc))

longTrailingTakeProfitStepTicks = longTakeProfitPrice * trailingTakeProfitPerc / syminfo.mintick
shortTrailingTakeProfitStepTicks = shortTakeProfitPrice * trailingTakeProfitPerc / syminfo.mintick
longTrailingStopLossPrice = close * (1 - trailingStopLossPerc)
shortTrailingStopLossPrice = close * (1 + trailingStopLossPerc)

// Entries and exits
if strategy.position_size == 0
    strategy.entry('Long Entry', qty=qty, direction=strategy.long, when=buySignal, alert_message='Long Entry')
    strategy.entry('Short Entry', qty=qty, direction=strategy.short, when=sellSignal, alert_message='Short Entry')
    strategy.exit('Long Take Profit', 'Long Entry', loss=close * stopLossPerc / syminfo.mintick, limit=enableTrailing ? na : longTakeProfitPrice, trail_price=enableTrailing ? longTakeProfitPrice : na, trail_offset=enableTrailing ? longTrailingTakeProfitStepTicks : na, when=longIsActive, alert_message='Long Take Profit')
    strategy.exit('Short Take Profit', 'Short Entry', loss=close * stopLossPerc / syminfo.mintick, limit=enableTrailing ? na : shortTakeProfitPrice, trail_price=enableTrailing ? shortTakeProfitPrice : na, trail_offset=enableTrailing ? shortTrailingTakeProfitStepTicks : na, when=shortIsActive, alert_message='Short Take Profit')
else
    if longIsActive
        strategy.exit('Long Stop Loss', 'Long Entry', stop=longTrailingStopLossPrice, when=longIsActive)
    if shortIsActive
        strategy.exit('Short Stop Loss', 'Short Entry', stop=shortTrailingStopLossPrice, when=shortIsActive)

// Plotting
plot(fastMA, 'Fast SMA', color=color.blue, linewidth=1, style=plot.style_line)
plot(slowMA, 'Slow SMA', color=color.orange, linewidth=1, style=plot.style_line)
plot(upperBB, 'Upper BB', color=color.green, linewidth=1, style=plot.style_line)
plot(lowerBB, 'Lower BB', color=color.red, linewidth=1, style=plot.style_line)


Lebih banyak