Strategi mengikuti tren berdasarkan rata-rata pergerakan dinamis


Tanggal Pembuatan: 2024-01-02 10:44:53 Akhirnya memodifikasi: 2024-01-02 10:44:53
menyalin: 0 Jumlah klik: 559
1
fokus pada
1621
Pengikut

Strategi mengikuti tren berdasarkan rata-rata pergerakan dinamis

Ringkasan

Strategi ini didasarkan pada indikator garis rata dinamis, untuk melacak tren harga secara real-time, untuk mengirim sinyal perdagangan melalui penembusan garis rata. Keuntungan dari strategi ini adalah pengaturan parameter yang sederhana, penilaian sinyal yang jelas, cocok untuk memegang posisi garis panjang dan menengah.

Prinsip Strategi

Strategi ini menggunakan indikator garis rata yang dinamis, termasuk berbagai jenis garis rata seperti ALMA, EMA, SMA, dan lain-lain. Prinsip dasarnya adalah, ketika harga melewati garis rata di atas, lakukan over; ketika harga melewati garis rata di bawah, lakukan short. Dengan garis rata sebagai indikator tren harga, sinyal perdagangan dapat dikeluarkan ketika terjadi perubahan arah.

Secara khusus, strategi ini menggunakan garis rata-rata yang terbentuk dari titik tinggi dan rendah, kemudian menggunakan garis rata-rata titik rendah sebagai garis sinyal multiply, dan garis rata-rata titik tinggi sebagai garis sinyal shorting. Bila harga tutup lebih tinggi dari garis rata-rata titik rendah, lakukan lebih banyak; Bila harga tutup lebih rendah dari garis rata-rata titik tinggi, lakukan shorting.

Dengan demikian, menggunakan indikator rata-rata untuk menentukan tren harga, kemudian menggabungkan prinsip terobosan untuk mengirimkan sinyal, membentuk strategi pelacakan tren yang sederhana dan praktis.

Keunggulan Strategis

  • Pengadilan menggunakan indikator rata-rata, pengaturan parameter sederhana, mudah dioperasikan
  • Aturan penilaian sinyal jelas, tidak menghasilkan sinyal palsu
  • Algoritma linear yang dapat dipilih secara bebas, fleksibel dalam menanggapi perubahan pasar
  • Parameter garis rata-rata dapat disesuaikan untuk menyesuaikan dengan tren dari periode yang berbeda
  • Sinyal dapat diverifikasi dalam kerangka waktu yang lebih lama, meningkatkan keandalan

Risiko dan Solusi

  • Indikator rata-rata tertinggal, mungkin kehilangan beberapa peluang
    • Periode rata-rata yang tepat dipersingkat, atau EMA bergerak indeks
  • Gempa lebih besar dalam waktu singkat, risiko kerusakan
    • Mempermudah Stop Loss dengan tepat untuk memastikan ada ruang gerak yang cukup
  • Berisiko jangka panjang yang mungkin tidak bisa dihentikan pada waktunya
    • Ini adalah salah satu indikator yang dapat digunakan untuk menentukan apakah suatu produk atau layanan akan berhasil atau tidak.

Optimasi Strategi

  • Sesuaikan algoritma dan parameter rata-rata linear dengan karakteristik varietas yang berbeda
  • Meningkatkan penilaian sub-indikator untuk meningkatkan efektivitas strategi
  • Menambahkan mekanisme stop-loss
  • Evaluasi keandalan sinyal dalam kerangka waktu yang lebih banyak
  • Mencari parameter yang lebih baik dengan teknologi pembelajaran mesin

Meringkaskan

Strategi ini menggunakan indikator rata-rata untuk menentukan arah tren harga, berdasarkan teori terobosan untuk mengirimkan sinyal perdagangan. Keuntungan dari strategi ini adalah mudah digunakan, cocok untuk memegang posisi menengah dan panjang, dapat disesuaikan dengan perubahan pasar melalui parameter. Perlu diperhatikan untuk mencegah risiko yang ditimbulkan oleh gejolak jangka pendek dan kepemilikan jangka panjang, yang dapat diselesaikan dengan stop loss.

Kode Sumber Strategi
/*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)