Strategi Penembusan Purata Bergerak Satu Titik

Penulis:ChaoZhang, Tarikh: 2024-02-02 11:19:19
Tag:

img

Ringkasan

Strategi breakout purata bergerak titik tunggal adalah strategi perdagangan kuantitatif berdasarkan Osilator Momentum Chande. Ia mengesan apabila pasaran berada dalam fasa penyatuan dengan mengira perubahan momentum harga. Apabila garis Momentum Chande melintasi di atas garis beli atau jatuh di bawah garis jual, perdagangan panjang atau pendek akan dilaksanakan dengan sewajarnya.

Logika Strategi

Strategi pertama mengira perubahan momentum hargamomm, kemudian memisahkannya ke dalam momentum positifm1dan momentum negatifm2. Seterusnya, ia menjumlahkan momentum positif dan negatif dalam tempoh melihat kembali kesm1dansm2Akhirnya, Chande Momentum OscillatorchandeMOPembacaan di atas sifar menunjukkan momentum menaik yang lebih kuat, manakala pembacaan di bawah sifar menunjukkan momentum menurun yang lebih kuat.

Apabila garis Momentum Chande melintasi di atas garis beli dari tahap yang lebih rendah, ia menandakan bahawa harga sedang keluar dari trend penurunan dan bersedia untuk memulakan trend kenaikan. Strategi akan menjadi panjang. Apabila garis jatuh di bawah garis jual dari tahap yang lebih tinggi, kedudukan pendek akan dimulakan.

Analisis Kelebihan

  • Strategi ini dapat mengenal pasti titik perubahan dari trend menurun ke konsolidasi ke trend naik, yang membolehkan masuk dengan harga rendah dan keluar dengan harga tinggi.
  • Osilator Momentum Chande mempertimbangkan kedua-dua besar dan kadar perubahan harga, menjadikannya sangat berkesan untuk pengesanan trend.
  • Logik strategi adalah mudah dan mudah dilaksanakan.

Analisis Risiko

  • Osilator Momentum Chande sensitif terhadap parameter input. Penyesuaian parameter yang berbeza boleh membawa kepada isyarat dan hasil perdagangan yang sangat berbeza.
  • Tetapan garis beli dan jual statik juga boleh memperkenalkan isyarat palsu yang berlebihan.
  • Kekurangan stop loss bermakna bahawa perdagangan yang kalah boleh mengumpulkan kerugian besar.

Beberapa cara untuk meningkatkan termasuk menggunakan garis beli / jual dinamik, menapis isyarat dengan penunjuk lain, dan melaksanakan stop loss untuk mengawal risiko.

Arahan pengoptimuman

  • Uji tetapan parameter yang berbeza untuk mencari nilai optimum
  • Mengambil garis beli dan jual dinamik
  • Tambah penapis tambahan dengan penunjuk lain
  • Menggabungkan logik stop loss untuk mengurangkan kerugian

Kesimpulan

Strategi penembusan purata bergerak titik tunggal mengenal pasti titik perubahan trend dari downtrend ke penyatuan ke uptrend menggunakan Chande Momentum Oscillator, yang membolehkan perdagangan jual tinggi membeli rendah. Walaupun mudah dan intuitif, peningkatan dalam penyesuaian parameter, penapisan isyarat dan kawalan risiko dapat meningkatkan prestasi. Secara keseluruhan, ia berfungsi sebagai alat yang berkesan untuk peniaga kuantitatif untuk menentukan pembalikan trend.


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

//@version=4

//* Backtesting Period Selector | Component *//
//* https://www.tradingview.com/script/eCC1cvxQ-Backtesting-Period-Selector-Component *//
//* https://www.tradingview.com/u/pbergden/ *//
//* Modifications made *//
testStartYear = input(2021, "Backtest Start Year") 
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(10, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(999999, "Backtest Stop Year")
testStopMonth = input(9, "Backtest Stop Month")
testStopDay = input(26, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

testPeriod() => true
/////////////// END - Backtesting Period Selector | Component ///////////////
strategy(title="Chande Momentum Strat", shorttitle="ChandeMO Strat", format=format.price, precision=2)
length = input(9, minval=1)
src = input(close, "Price", type = input.source)
momm = change(src)
f1(m) => m >= 0.0 ? m : 0.0
f2(m) => m >= 0.0 ? 0.0 : -m
m1 = f1(momm)
m2 = f2(momm)
sm1 = sum(m1, length)
sm2 = sum(m2, length)
percent(nom, div) => 100 * nom / div
chandeMO = percent(sm1-sm2, sm1+sm2)
plot(chandeMO, "Chande MO", color=color.blue)
hline(0, color=#C0C0C0, linestyle=hline.style_dashed, title="Zero Line")
buyline= input(-80)
sellline= input(80)
hline(buyline, color=color.gray)
hline(sellline, color=color.gray)

if testPeriod()
    if crossover(chandeMO, buyline)
        strategy.entry("Long", strategy.long, alert_message="a=ABCD b=buy e=binanceus q=1.2 s=uniusd")
    //    strategy.exit(id="Long Stop Loss", stop=strategy.position_avg_price*0.8) //20% stop loss 
        
    if crossunder(chandeMO, sellline)
        strategy.entry("Short", strategy.short, alert_message="a=ABCD b=sell e=binanceus q=1.2 s=uniusd")
    //    strategy.exit(id="Short Stop Loss", stop=strategy.position_avg_price*1.2) //20% stop loss

//      remember to alert as    {{strategy.order.alert_message}}

Lebih lanjut