Tren Mengikuti Strategi Berdasarkan Rata-rata Bergerak Dinamis

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

img

Gambaran umum

Strategi ini didasarkan pada indikator rata-rata bergerak dinamis untuk melacak tren harga secara real-time dan menghasilkan sinyal perdagangan ketika rata-rata bergerak dipecahkan. Keuntungan dari strategi ini terletak pada pengaturan parameter sederhana, aturan sinyal yang jelas, dan kesesuaian untuk kepemilikan jangka menengah hingga panjang.

Logika Strategi

Strategi ini menggunakan indikator rata-rata bergerak dinamis termasuk ALMA, EMA, SMA dan banyak lagi. Prinsipnya adalah untuk pergi panjang ketika harga melanggar di atas rata-rata bergerak dan pergi pendek ketika melanggar di bawahnya.

Secara khusus, strategi ini menggunakan rata-rata bergerak yang dibentuk oleh harga tinggi dan rendah. MA harga rendah berfungsi sebagai garis sinyal untuk sinyal panjang, sementara MA harga tinggi berfungsi sebagai garis untuk short. Ketika harga penutupan naik di atas MA harga rendah, pergi panjang. Ketika penutupan turun di bawah MA harga tinggi, pergi pendek.

Dengan menilai tren harga dengan MA dan dikombinasikan dengan prinsip breakout untuk menghasilkan sinyal, strategi trend berikut yang sederhana dan praktis terbentuk.

Keuntungan

  • Pengaturan parameter sederhana dengan indikator MA, mudah dioperasikan
  • Aturan sinyal yang jelas tanpa sinyal palsu
  • Jenis MA yang fleksibel untuk beradaptasi dengan perubahan pasar
  • Periode MA yang dapat disesuaikan sesuai dengan siklus tren yang berbeda
  • Validasi sinyal multi-frame meningkatkan keandalan

Risiko dan Solusi

  • MA lag mungkin kehilangan beberapa kesempatan
    • Singkatkan periode MA atau gunakan EMA
  • Risiko swing besar dalam jangka pendek
    • Memperluas ruang stop loss untuk fleksibilitas
  • Risiko kepemilikan jangka panjang, tidak dapat mengunci keuntungan tepat waktu
    • Gabungkan indikator lain, hindari mengejar puncak dan membunuh terendah

Arahan Optimasi

  • Mengatur jenis MA dan parameter berdasarkan karakteristik simbol
  • Tambahkan indikator tambahan untuk meningkatkan strategi
  • Tambahkan mekanisme stop loss dan take profit
  • Mengevaluasi keandalan sinyal di seluruh kerangka waktu
  • Menggunakan pembelajaran mesin untuk menemukan parameter yang lebih baik

Kesimpulan

Strategi ini menilai arah tren dengan MA dan menghasilkan sinyal berdasarkan prinsip-prinsip breakout. Ini sederhana untuk digunakan dan cocok untuk kepemilikan jangka menengah hingga panjang. Parameter juga dapat disesuaikan untuk beradaptasi dengan perubahan pasar. Risiko dari fluktuasi jangka pendek dan kepemilikan panjang perlu dikelola dengan stop loss / profit taking. Ada ruang untuk perbaikan dengan menggabungkan lebih banyak indikator dan menemukan parameter optimal 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 banyak