Strategi perdagangan kuantitatif berdasarkan crossover rata-rata bergerak ganda

Penulis:ChaoZhang, Tanggal: 2024-02-21 14:28:28
Tag:

img

Gambaran umum

Strategi ini disebut Quantitative Trading Strategy Based on Double Moving Average Crossover. Ide utama dari strategi ini adalah menggunakan sinyal silang antara garis rata-rata bergerak cepat dan lambat untuk menentukan tren harga dan membuat keputusan pembelian dan penjualan sesuai.

Prinsip Strategi

Indikator inti dari strategi ini adalah garis rata-rata bergerak cepat dan lambat. Strategi ini menggunakan hubungan silang antara garis rata-rata bergerak cepat dan lambat untuk menentukan tren harga dan membuat keputusan perdagangan berdasarkan ini.

Secara khusus, parameter garis rata-rata bergerak cepat ditetapkan menjadi 24 periode, dan parameter garis rata-rata bergerak lambat ditetapkan menjadi 100 periode. Ketika garis rata-rata bergerak cepat melintasi di atas garis rata-rata bergerak lambat dari bawah, itu menunjukkan bahwa harga memasuki tren naik, dan strategi akan mengeluarkan sinyal beli pada saat ini. Ketika garis rata-rata bergerak cepat melintasi di bawah garis rata-rata bergerak lambat dari atas, itu menunjukkan bahwa harga memasuki tren turun, dan strategi akan mengeluarkan sinyal jual pada saat ini.

Dengan menilai arah silang dari garis rata-rata bergerak cepat dan lambat, perubahan tren harga dapat secara efektif ditangkap untuk membantu dalam membuat keputusan membeli dan menjual.

Keuntungan dari Strategi

Strategi ini memiliki keuntungan berikut:

  1. Prinsipnya sederhana dan mudah dimengerti, mudah diimplementasikan.

  2. Parameter yang dapat disesuaikan, kemampuan beradaptasi yang tinggi. Parameter rata-rata bergerak cepat dan lambat dapat disesuaikan sesuai dengan kondisi aktual, membuat strategi lebih fleksibel.

  3. Kemampuan yang kuat untuk menangkap perubahan tren. Crossover rata-rata bergerak ganda sering digunakan untuk menangkap titik balik ketika harga bergerak dari konsolidasi ke tren.

  4. Dapat secara efektif menyaring konsolidasi dan mengurangi perdagangan yang tidak valid. Rata-rata bergerak ganda dapat digunakan untuk mengidentifikasi rentang konsolidasi dan menghindari pembukaan posisi berulang selama konsolidasi.

Risiko dari Strategi

Ada juga beberapa risiko dengan strategi ini:

  1. Sebagai indikator pelacakan tren, sinyal crossover dari rata-rata bergerak ganda sering tertinggal dengan periode tertentu, yang dapat menyebabkan tingkat tertentu dari biaya peluang.

  2. mudah menghasilkan sinyal palsu di pasar osilasi. rata-rata bergerak ganda bekerja terbaik ketika harga menunjukkan tren yang jelas. tetapi di pasar osilasi, mereka cenderung menghasilkan sinyal palsu yang sering.

  3. Pengaturan parameter yang tidak benar dapat mempengaruhi kinerja strategi. Jika parameter rata-rata bergerak cepat dan lambat ditetapkan dengan tidak benar, itu akan mempengaruhi sensitivitas untuk menangkap persilangan tren.

Solusi yang sesuai:

  1. Singkatkan periode rata-rata bergerak dengan tepat untuk meningkatkan sensitivitas sinyal silang.

  2. Tambahkan indikator volatilitas atau volume untuk penyaringan untuk mengurangi perdagangan yang tidak valid di pasar osilasi.

  3. Optimasi parameter untuk menemukan kombinasi parameter terbaik. Tambahkan pembelajaran mesin dan metode lain untuk mengoptimalkan secara otomatis.

Arahan untuk Optimasi Strategi

Strategi dapat dioptimalkan dalam aspek berikut:

  1. Menggunakan indikator teknis rata-rata bergerak yang lebih maju seperti Rata-rata Gerak Tertimbang Linear untuk menggantikan Rata-rata Gerak Sederhana untuk meningkatkan kemampuan pelacakan dan prediksi indikator.

  2. Tambahkan lebih banyak indikator tambahan seperti indikator volume dan volatilitas untuk penyaringan bersama untuk mengurangi sinyal yang tidak valid.

  3. Mengoptimalkan parameter rata-rata bergerak cepat dan lambat untuk meningkatkan kemampuan adaptasi parameter. Metode seperti pembelajaran mesin dan optimasi acak dapat digunakan untuk menemukan parameter optimal.

  4. Setelah strategi memasuki pasar, titik stop loss dan trailing stop loss dapat dirancang untuk mengendalikan kerugian tunggal.

  5. Teknologi baru seperti pembelajaran mendalam dapat digunakan untuk mengidentifikasi pola harga yang lebih kompleks untuk membantu crossover rata-rata bergerak dalam membuat keputusan membeli dan menjual, untuk mendapatkan hasil yang lebih baik.

Ringkasan

Secara umum, strategi ini relatif klasik dan sederhana. Ini menentukan tren harga berdasarkan indikator rata-rata bergerak ganda untuk mengungkap peluang ketika harga bergerak dari konsolidasi ke tren. Keuntungannya adalah logika yang jelas dan kesederhanaan, cocok untuk melacak pasar tren. Tetapi ada juga beberapa kelemahan seperti lag sinyal yang perlu ditingkatkan melalui penyetelan parameter dan optimasi untuk meningkatkan stabilitas dan efisiensi strategi. Secara keseluruhan, sebagai strategi dasar, ini cukup cocok, tetapi membutuhkan optimasi terus menerus untuk beradaptasi dengan lingkungan pasar yang lebih kompleks.


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

//@version=5
strategy('Pine Script Tutorial Example Strategy 1', overlay=true, initial_capital=100000, default_qty_value=100, default_qty_type=strategy.percent_of_equity)

//OBV
src = close
obv = ta.cum(math.sign(ta.change(src)) * volume)
ma(source, length, type) =>
    switch type
        "SMA" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "SMMA (RMA)" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)
        "VWMA" => ta.vwma(source, length)
typeMA = input.string(title = "Method", defval = "SMA", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="Smoothing")
smoothingLength = input.int(title = "Length", defval = 20, minval = 1, maxval = 100, group="Smoothing")
Limit = input.float(title = "Limit", defval = 1, minval = 0.1, maxval = 10, group="Smoothing")
smoothingLine_ma = ma(obv,smoothingLength, typeMA)
obv_diff = (obv-smoothingLine_ma)*100/obv

//PVT
var cumVolp = 0.
cumVolp += nz(volume)
if barstate.islast and cumVolp == 0
    runtime.error("No volume is provided by the data vendor.")
srcp = close
vt = ta.cum(ta.change(srcp)/srcp[1]*volume)
smoothingLine_map = ma(vt,smoothingLength, typeMA)
pvt_diff = (vt-smoothingLine_map)*100/vt

// plot(obv_diff+close+100 ,title="OBV_DIFF", color = color.rgb(255, 118, 54))
// plot(pvt_diff+close+80 ,title="PVT_DIFF", color = color.rgb(223, 61, 255))

indicator = (pvt_diff+obv_diff)/2
goLongCondition1 = ta.crossover(indicator,Limit)
timePeriod = time >= timestamp(syminfo.timezone, 2023,1, 1, 0, 0)  // Backtesting Time
notInTrade = strategy.position_size <= 0
if goLongCondition1 and timePeriod and notInTrade
    stopLoss = low * 0.99 // -2%
    takeProfit = high * 1.05 // +5%
    strategy.entry('long', strategy.long )
    strategy.exit('exit', 'long', stop=stopLoss, limit=takeProfit)






// fastEMA = ta.ema(close, 24)
// slowEMA = ta.ema(close, 100)
// goLongCondition1 = ta.crossover(fastEMA, slowEMA)
// timePeriod = time >= timestamp(syminfo.timezone, 2018, 12, 15, 0, 0)
// notInTrade = strategy.position_size <= 0
// if goLongCondition1 and timePeriod and notInTrade
//     stopLoss = low * 0.97
//     takeProfit = high * 1.12
//     strategy.entry('long', strategy.long)
//     strategy.exit('exit', 'long', stop=stopLoss, limit=takeProfit)
// plot(fastEMA, color=color.new(color.blue, 0))
// plot(slowEMA, color=color.new(color.yellow, 0))

Lebih banyak