Strategi dagangan kuantitatif: strategi penembusan purata bergerak berganda


Tarikh penciptaan: 2024-02-21 14:28:28 Akhirnya diubah suai: 2024-02-21 14:28:28
Salin: 0 Bilangan klik: 669
1
fokus pada
1617
Pengikut

Strategi dagangan kuantitatif: strategi penembusan purata bergerak berganda

Gambaran keseluruhan

Strategi ini dinamakan sebagai strategi penembusan garisan berganda strategi perdagangan kuantitatif. Gagasan utama strategi ini adalah menggunakan isyarat silang purata bergerak cepat dan purata bergerak perlahan untuk membuat keputusan mengenai trend harga, dan kemudian membuat keputusan membeli dan menjual.

Prinsip Strategi

Penunjuk teras strategi ini adalah purata bergerak cepat dan purata bergerak perlahan. Strategi ini menggunakan hubungan silang purata bergerak cepat dan purata bergerak perlahan untuk menilai trend harga dan dengan itu membuat keputusan membeli dan menjual.

Khususnya, parameter purata bergerak cepat ditetapkan untuk 24 kitaran, parameter purata bergerak perlahan ditetapkan untuk 100 kitaran. Apabila purata bergerak cepat melintasi purata bergerak perlahan dari arah bawah, menandakan harga memasuki tren naik, maka strategi akan menghantar isyarat beli; apabila purata bergerak cepat melintasi purata bergerak perlahan dari arah atas, menandakan harga memasuki tren turun, maka strategi akan menghantar isyarat jual.

Dengan cara ini, perubahan dalam trend harga dapat ditangkap dengan berkesan dan membantu membuat keputusan pembelian dan penjualan dengan menilai arah persilangan purata bergerak.

Kelebihan Strategik

Strategi ini mempunyai kelebihan berikut:

  1. Prinsipnya mudah difahami dan mudah dilaksanakan. Persaingan dua hala adalah salah satu indikator teknikal yang paling asas dan mudah difahami dan diterapkan.

  2. Parameter boleh diatur, beradaptasi. Parameter untuk purata bergerak cepat dan purata bergerak perlahan boleh disesuaikan dengan keadaan sebenar, menjadikan strategi lebih fleksibel.

  3. Keupayaan untuk menangkap perubahan trend yang kuat. Persaingan dua garis rata sering digunakan untuk menangkap titik-titik perubahan harga dari penyusunan ke arah trend.

  4. Ia boleh menapis gegaran dengan berkesan, mengurangkan perdagangan yang tidak sah. Garis keseimbangan ganda boleh digunakan untuk mengenal pasti kawasan gegaran, untuk mengelakkan pembukaan kedudukan berulang dalam gegaran.

Risiko Strategik

Strategi ini mempunyai beberapa risiko:

  1. Isyarat persilangan binari mungkin terlewat. Isyarat persilangan binari digunakan sebagai penunjuk trend, dan isyarat persilangan sering terlewat untuk jangka masa tertentu. Ini boleh menyebabkan kos peluang yang tertentu.

  2. Dalam pasaran yang bergolak, isyarat palsu mudah dihasilkan. Skenario yang terbaik untuk prestasi garis rata adalah apabila terdapat trend harga yang jelas. Tetapi dalam keadaan yang bergolak, isyarat palsu yang kerap dapat dihasilkan.

  3. Tetapan parameter yang tidak betul boleh menjejaskan prestasi strategi. Jika parameter garis rata-rata yang tidak betul ditetapkan, ia akan menjejaskan kepekaan untuk menangkap trend yang bersilang.

Penyelesaian:

  1. Memperolehi pengurangan yang sesuai dalam kitaran garis rata-rata untuk meningkatkan kepekaan isyarat silang.

  2. Menambah kadar turun naik atau penunjuk jumlah dagangan untuk penapisan, mengurangkan perdagangan tidak sah di bawah pasaran yang bergolak.

  3. Pengoptimuman parameter, mencari kombinasi parameter terbaik. Mengoptimumkan secara automatik dengan kaedah seperti pembelajaran mesin.

Arah pengoptimuman strategi

Strategi ini boleh dioptimumkan dengan:

  1. Menggunakan petunjuk teknologi purata bergerak yang lebih maju, seperti purata bergerak linear berat, dan lain-lain, untuk menggantikan purata bergerak sederhana, meningkatkan kemampuan pengesanan dan ramalan indikator.

  2. Tambah lebih banyak penunjuk tambahan, seperti penunjuk jumlah pesanan, penunjuk kadar turun naik, dan sebagainya untuk penapisan gabungan, mengurangkan isyarat tidak berkesan.

  3. Mengoptimumkan parameter rata-rata perlahan-lahan, meningkatkan kesesuaian parameter. Kaedah pembelajaran mesin, pengoptimuman rawak dan lain-lain boleh digunakan untuk mencari parameter optimum.

  4. Strategi ini boleh merancang titik hentian dan hentian bergerak untuk mengawal kerugian tunggal selepas masuk. Di samping itu, teknik pengoptimuman keuntungan ditambah untuk memastikan keuntungan yang mencukupi.

  5. Teknologi baru seperti pembelajaran mendalam boleh digunakan untuk mengenal pasti corak harga yang lebih kompleks, membantu membuat keputusan pembelian dan penjualan di persimpangan sejajar untuk mendapatkan hasil yang lebih baik.

ringkaskan

Secara keseluruhan, strategi ini lebih klasik dan mudah, berdasarkan indikator dua garis rata untuk menilai trend harga, untuk mencari peluang untuk menukar harga dari goyah ke trend. Kelebihannya adalah kejelasan pemikiran, mudah digunakan, sesuai untuk mengikuti tingkah laku trend. Tetapi ada juga beberapa kelemahan seperti lag isyarat, yang memerlukan peningkatan kestabilan dan kecekapan perdagangan strategi melalui penyesuaian dan pengoptimuman parameter.

Kod sumber strategi
/*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))