Strategi Dagangan Kuantitatif Berdasarkan Crossover Purata Bergerak Berganda

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

img

Ringkasan

Strategi ini dinamakan Strategi Dagangan Kuantitatif Berdasarkan Crossover Purata Bergerak Ganda. Idea utama strategi ini adalah untuk menggunakan isyarat silang antara garis purata bergerak cepat dan perlahan untuk menentukan trend harga dan membuat keputusan membeli dan menjual dengan sewajarnya.

Prinsip Strategi

Penunjuk teras strategi ini adalah garis purata bergerak pantas dan perlahan. Strategi ini menggunakan hubungan silang antara garis purata bergerak pantas dan perlahan untuk menentukan trend harga dan membuat keputusan perdagangan berdasarkan ini.

Secara khusus, parameter garis purata bergerak pantas ditetapkan kepada 24 tempoh, dan parameter garis purata bergerak perlahan ditetapkan kepada 100 tempoh. Apabila garis purata bergerak pantas melintasi di atas garis purata bergerak perlahan dari bawah, ia menunjukkan bahawa harga memasuki trend menaik, dan strategi akan mengeluarkan isyarat beli pada masa ini. Apabila garis purata bergerak pantas melintasi di bawah garis purata bergerak perlahan dari atas, ia menunjukkan bahawa harga memasuki trend menurun, dan strategi akan mengeluarkan isyarat jual pada masa ini.

Dengan menilai arah silang garis purata bergerak pantas dan perlahan, perubahan trend harga dapat ditangkap dengan berkesan untuk membantu membuat keputusan membeli dan menjual.

Kelebihan Strategi

Strategi ini mempunyai kelebihan berikut:

  1. Prinsipnya mudah dan mudah difahami, mudah dilaksanakan.

  2. Parameter yang boleh diselaraskan, kebolehsesuaian yang tinggi. Parameter purata bergerak cepat dan perlahan boleh diselaraskan mengikut keadaan sebenar, menjadikan strategi lebih fleksibel.

  3. Keupayaan yang kuat untuk menangkap perubahan trend. Crossover purata bergerak berganda sering digunakan untuk menangkap titik perubahan apabila harga bergerak dari penyatuan ke trend.

  4. Boleh menapis konsolidasi dengan berkesan dan mengurangkan perdagangan yang tidak sah. purata bergerak berganda boleh digunakan untuk mengenal pasti julat konsolidasi dan mengelakkan pembukaan kedudukan berulang semasa konsolidasi.

Risiko Strategi

Terdapat juga beberapa risiko dengan strategi ini:

  1. Sebagai penunjuk pengesanan trend, isyarat silang purata bergerak berganda sering ketinggalan dengan tempoh tertentu, yang boleh membawa kepada tahap tertentu kos peluang.

  2. Mudah menghasilkan isyarat palsu di pasaran berayun. purata bergerak berganda berfungsi dengan baik apabila harga menunjukkan trend yang jelas. tetapi di pasaran berayun, mereka cenderung menghasilkan isyarat palsu yang kerap.

  3. Tetapan parameter yang tidak betul boleh menjejaskan prestasi strategi. Jika parameter purata bergerak cepat dan perlahan ditetapkan dengan tidak betul, ia akan menjejaskan kepekaan untuk menangkap persilangan trend.

Penyelesaian yang sepadan:

  1. Memendekkan tempoh purata bergerak dengan sewajarnya untuk meningkatkan kepekaan isyarat silang.

  2. Tambah penunjuk turun naik atau jumlah untuk penapisan untuk mengurangkan perdagangan yang tidak sah di pasaran berayun.

  3. Pengoptimuman parameter untuk mencari kombinasi parameter terbaik. Tambah pembelajaran mesin dan kaedah lain untuk mengoptimumkan secara automatik.

Arahan untuk Pengoptimuman Strategi

Strategi ini boleh dioptimumkan dalam aspek berikut:

  1. Menggunakan penunjuk teknikal purata bergerak yang lebih maju seperti purata bergerak bertimbang linear untuk menggantikan purata bergerak mudah untuk meningkatkan kemampuan penjejakan dan ramalan penunjuk.

  2. Tambah lebih banyak penunjuk tambahan seperti penunjuk jumlah dan volatiliti untuk penapisan bersama untuk mengurangkan isyarat yang tidak sah.

  3. Mengoptimumkan parameter purata bergerak pantas dan perlahan untuk meningkatkan kebolehsesuaian parameter. Kaedah seperti pembelajaran mesin dan pengoptimuman rawak boleh digunakan untuk mencari parameter optimum.

  4. Selepas strategi memasuki pasaran, titik stop loss dan trailing stop loss boleh direka untuk mengawal kerugian tunggal. Pada masa yang sama, tambah teknik pengoptimuman keuntungan untuk memastikan keuntungan yang mencukupi.

  5. Teknologi baru seperti pembelajaran mendalam boleh digunakan untuk mengenal pasti corak harga yang lebih kompleks untuk membantu persilangan purata bergerak dalam membuat keputusan membeli dan menjual, untuk mendapatkan hasil yang lebih baik.

Ringkasan

Secara umum, strategi ini agak klasik dan mudah. Ia menentukan trend harga berdasarkan penunjuk purata bergerak berganda untuk mendedahkan peluang apabila harga bergerak dari penyatuan ke trend. Kelebihannya adalah logik dan kesederhanaan yang jelas, sesuai untuk mengesan pasaran trend. Tetapi terdapat juga beberapa kelemahan seperti kelewatan isyarat yang perlu diperbaiki melalui penyesuaian parameter dan pengoptimuman untuk meningkatkan kestabilan dan kecekapan strategi. Secara keseluruhan, sebagai strategi asas, ini cukup sesuai, tetapi memerlukan pengoptimuman berterusan untuk menyesuaikan diri dengan persekitaran pasaran 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 lanjut