Trend Mengikut Strategi Berdasarkan Purata Bergerak Dinamik

Penulis:ChaoZhang, Tarikh: 2024-01-02 10:44:53
Tag:

img

Ringkasan

Strategi ini berdasarkan kepada penunjuk purata bergerak dinamik untuk mengesan trend harga dalam masa nyata dan menjana isyarat perdagangan apabila purata bergerak ditembusi. Kelebihan strategi ini terletak pada tetapan parameter yang mudah, peraturan isyarat yang jelas, dan kesesuaian untuk pegangan jangka sederhana hingga panjang.

Logika Strategi

Strategi ini menggunakan penunjuk purata bergerak dinamik termasuk ALMA, EMA, SMA dan banyak lagi. Prinsipnya adalah untuk pergi lama apabila harga memecahkan di atas purata bergerak dan pergi pendek apabila ia memecahkan di bawah.

Secara khusus, strategi ini menggunakan purata bergerak yang dibentuk oleh harga tinggi dan rendah. MA harga rendah berfungsi sebagai garis isyarat untuk isyarat panjang, sementara MA harga tinggi berfungsi sebagai garis untuk pendek. Apabila harga penutupan meningkat di atas MA harga rendah, pergi panjang. Apabila penutupan turun di bawah MA harga tinggi, pergi pendek.

Dengan menilai trend harga dengan MA dan digabungkan dengan prinsip pecah untuk menjana isyarat, strategi trend berikut yang mudah dan praktikal terbentuk.

Kelebihan

  • Tetapan parameter mudah dengan penunjuk MA, mudah dikendalikan
  • Peraturan isyarat yang jelas tanpa isyarat palsu
  • Jenis MA yang fleksibel untuk menyesuaikan diri dengan perubahan pasaran
  • Tempoh MA yang boleh diselaraskan sesuai dengan kitaran trend yang berbeza
  • Pengesahan isyarat pelbagai jangka masa meningkatkan kebolehpercayaan

Risiko dan Penyelesaian

  • MA lag mungkin terlepas beberapa peluang
    • Memendekkan tempoh MA atau menggunakan EMA
  • Risiko berayun yang besar dalam jangka pendek
    • Memperluas ruang stop loss untuk fleksibiliti
  • Risiko memegang jangka panjang, tidak dapat mengunci keuntungan pada masa
    • Gabungkan penunjuk lain, elakkan mengejar tinggi dan membunuh rendah

Arahan pengoptimuman

  • Sesuaikan jenis MA dan parameter berdasarkan ciri simbol
  • Tambah penunjuk tambahan untuk meningkatkan strategi
  • Tambahkan mekanisme stop loss dan mengambil keuntungan
  • Menilai kebolehpercayaan isyarat merentasi jangka masa
  • Menggunakan pembelajaran mesin untuk mencari parameter yang lebih baik

Kesimpulan

Strategi ini menilai arah trend dengan MA dan menghasilkan isyarat berdasarkan prinsip-prinsip pecah. Ia mudah digunakan dan sesuai untuk pegangan jangka menengah hingga panjang. Parameter juga boleh diselaraskan untuk menyesuaikan diri dengan perubahan pasaran. Risiko dari turun naik jangka pendek dan pegangan panjang perlu diurus dengan berhenti kehilangan / mengambil keuntungan. Terdapat ruang untuk peningkatan dengan menggabungkan lebih banyak penunjuk dan mencari parameter optimum melalui pembelajaran mesin.


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

//@version=4
strategy(title="Baseline Strategy - evo", shorttitle="Baseline", overlay=true)

//INPUTS
mat =               input("ALMA", "MA Type", options=["SMA", "EMA", "WMA", "HMA", "VWMA", "RMA", "ALMA"])
baseline =          input(55, title="MA Length")
src =               input(ohlc4, title="Closing Source")

offset =            input(0.85, step=0.05, title="Offset (alma only)")
sigma =             input(10, title="Sigma (alma only)")

useCurrentRes =     input(true, title="Use Current Resolution")
resCustom =         input("1440", title="Timeframe")

showsignals =       input(false, title="Show Signals ?")

//BASELINE
baselinehigh = 

 mat=="SMA" ? sma(high,baseline) : 
 mat=="EMA" ? ema(high,baseline) : 
 mat=="WMA" ? wma(high,baseline) : 
 mat=="HMA" ? wma(2*wma(high, baseline/2)-wma(high, baseline), round(sqrt(baseline))) : 
 mat=="VWMA" ? vwma(high,baseline) : 
 mat=="RMA" ? rma(high,baseline) :
 mat=="ALMA" ? alma(high, baseline, offset, sigma) : na

baselinelow = 

 mat=="SMA" ? sma(low,baseline) : 
 mat=="EMA" ? ema(low,baseline) : 
 mat=="WMA" ? wma(low,baseline) : 
 mat=="HMA" ? wma(2*wma(low, baseline/2)-wma(low, baseline), round(sqrt(baseline))) : 
 mat=="VWMA" ? vwma(low,baseline) : 
 mat=="RMA" ? rma(low,baseline) : 
 mat=="ALMA" ? alma(low, baseline, offset, sigma) : na

//RESOLUTION
res =               useCurrentRes ? timeframe.period : resCustom

mtfhigh =           security(syminfo.tickerid, res, baselinehigh)
mtflow =            security(syminfo.tickerid, res, baselinelow)

//PLOTS
plot(mtfhigh, color=color.navy, linewidth=2, transp=0, title="Baseline High")
plot(mtflow, color=color.navy, linewidth=2, transp=0, title="Baseline Low")

long =              src > mtfhigh
short =             src < mtflow

barcolor(long ? #ffe0b2 : short ? #2a2e39 : not long and not short ? #b09e82 : na, title="BaseLine BarColor")

signal = 0
signal := long ? 1 : short ? 2 : nz(signal[1])

plotshape(showsignals ? (signal != signal[1] and long ? mtflow : na) : na, title="Long", location=location.absolute, size=size.small, style=shape.labelup, text="Long", textcolor=color.black, transp=40, color=#00ff00)
plotshape(showsignals ? (signal != signal[1] and short ? mtfhigh : na) : na, title="Short", location=location.absolute, size=size.small, style=shape.labeldown, text="Short", textcolor=color.white, transp=40, color=#ff0000)

alertcondition(signal != signal[1], title="Trend Change !", message="Trend Change !")

if (long)
    strategy.entry("Long", strategy.long)
if (short)
    strategy.entry("Short", strategy.short)

Lebih lanjut