Strategi penembusan sisi purata bergerak tunggal


Tarikh penciptaan: 2024-02-02 11:19:19 Akhirnya diubah suai: 2024-02-02 11:19:19
Salin: 0 Bilangan klik: 537
1
fokus pada
1617
Pengikut

Strategi penembusan sisi purata bergerak tunggal

Gambaran keseluruhan

Strategi menembusi melintang titik tunggal adalah strategi perdagangan kuantitatif berdasarkan indikator pergerakan Chande. Strategi ini menilai apakah pasaran berada dalam tahap penyusunan melintang dengan mengira perubahan dinamik harga. Operasi membeli atau menjual yang sesuai dilakukan apabila garis indikator pergerakan Chande menembusi garis beli atau jual yang ditetapkan.

Prinsip Strategi

Strategi ini mula mengira perubahan dinamik hargamommDan kemudian kita bagi ia kepada gerak positif.m1dan dinamika negatifm2Kemudian kira jumlah tenaga positif negatif dalam tempoh tertentu.sm1dansm2Akhirnya, kita dapat Indeks Kinerja Chande.chandeMOIndikator ini mempunyai 0 sebagai sumbu tengah, apabila indikator lebih besar daripada 0 menunjukkan kekuatan naik lebih besar daripada kekuatan turun, dan sebaliknya apabila kurang daripada 0.

Apabila indikator pergerakan Chande menembusi garis beli dari paras rendah, menandakan harga keluar dari tempoh penurunan dan memasuki tahap persediaan untuk naik, ketika ini strategi melakukan operasi beli. Apabila indikator menembusi garis jual dari paras tinggi, maka operasi jual dilakukan.

Analisis kelebihan

  • Strategi ini mampu menangkap titik-titik perubahan harga dari turun ke menstabilkan dan kemudian naik, untuk mencapai harga jual-beli rendah.
  • Indeks dinamik Chande mengambil kira kelajuan dan kekuatan perubahan harga, dan merupakan alat yang baik untuk menilai trend.
  • Strategi ini mudah digunakan dan mudah dilaksanakan.

Analisis risiko

  • Penunjuk dinamik Chande adalah sensitif kepada parameter, dan pelbagai tetapan parameter kitaran boleh menyebabkan perbezaan besar dalam isyarat perdagangan dan hasil.
  • Tetapan statik pada baris beli dan baris jual juga boleh menyebabkan terlalu banyak isyarat salah.
  • Strategi tidak mengambil kira hentian kerugian, yang boleh menyebabkan kerugian berkembang.

Anda boleh menetapkan garis beli dan jual yang dinamik, atau gabungan dengan isyarat penapis indikator lain. Anda juga harus menetapkan hentian kerugian untuk mengawal risiko.

Arah pengoptimuman

  • Cuba parameter dengan kitaran yang berbeza untuk hasil yang terbaik
  • Menetapkan talian pembelian dan penjualan yang dinamik
  • Penapisan isyarat dalam kombinasi dengan penunjuk lain
  • Penambahan risiko kawalan logik stop loss

ringkaskan

Strategi single-mean crossover breakout menggunakan indikator pergerakan Chande untuk menentukan titik peralihan harga dari penurunan ke penyusunan dan kemudian kenaikan, untuk mencapai pembelian rendah dan penjualan tinggi. Strategi ini mudah digunakan dan dapat menangkap perubahan tren dengan berkesan. Tetapi parameter dan kawalan berhenti memerlukan pengoptimuman lebih lanjut untuk mengurangkan isyarat dan kawalan yang salah.

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