Strategi Pelacakan Rata-rata Bergerak Dinamis

Penulis:ChaoZhang, Tanggal: 2023-12-04 15:38:09
Tag:

img

Gambaran umum

Strategi ini menggunakan pendekatan yang dijelaskan oleh Larry Williams dalam bukunya Long-Term Secrets to Short-Term Trading , yang menggunakan dua rata-rata bergerak 3 periode, satu mewakili Highs dan yang lainnya adalah Lows.

Logika Strategi

Logika inti dari strategi ini adalah untuk menghitung rata-rata bergerak 3-periode dari harga tinggi dan rendah. Secara khusus, ia menggunakan fungsi ta.ema untuk menghitung rata-rata bergerak eksponensial dari harga tinggi dan rendah selama 3 bar terbaru untuk menghasilkan level support dan resistance yang dinamis. Ketika harga pecah di bawah EMA terendah, itu menunjukkan downtrend, sehingga kita dapat pergi panjang. Ketika harga naik kembali di atas EMA tertinggi, itu menunjukkan bahwa uptrend telah berakhir dan kita harus menutup posisi kita. Dengan cara ini, strategi dapat melacak perubahan harga secara dinamis dan mencapai pembelian rendah dan menjual tinggi.

Analisis Keuntungan

Keuntungan terbesar dari strategi ini adalah kesederhanaan dan dinamika. Dibandingkan dengan mengambil rata-rata bergerak periode tinggi/rendah tetap, strategi ini menggunakan rata-rata bergerak jangka pendek berkelanjutan, yang dapat lebih sensitif dan tepat waktu menangkap perubahan harga. Hal ini memungkinkan untuk dengan cepat mengidentifikasi peluang perdagangan untuk masuk dan keluar dari pasar. Juga, beban komputasi yang rendah adalah keuntungan lain untuk mengurangi latensi perdagangan.

Risiko dan Solusi

Risiko utama dari strategi ini adalah bahwa ia bereaksi lebih lambat terhadap peristiwa mendadak seperti berita penting. Karena periode rata-rata bergeraknya sangat singkat, dibutuhkan beberapa waktu untuk menyesuaikan tingkat rata-rata bergerak ketika ada lonjakan harga yang tajam. Ini dapat menyebabkan kerugian atau peluang yang hilang. Juga, sensitivitas yang berlebihan dapat menyebabkan perdagangan yang salah. Untuk mengurangi risiko ini, kita dapat dengan tepat meningkatkan periode rata-rata bergerak, atau menambahkan filter untuk menghindari sinyal palsu.

Arahan Optimasi

Ada banyak ruang untuk mengoptimalkan strategi ini. Pertama, osilator dapat dimasukkan untuk menyaring sinyal. Kedua, logika stop loss dapat ditambahkan untuk mengendalikan risiko. Juga, kita dapat secara dinamis menyesuaikan parameter rata-rata bergerak berdasarkan keadaan pasar, menggunakan periode yang lebih lama dalam tren dan periode yang lebih pendek dalam pasar yang berkisar. Selain itu, analisis multi-frame time, pengenalan pola dengan pembelajaran mesin dll dapat membantu meningkatkan kinerja strategi.

Kesimpulan

Singkatnya, ini adalah strategi yang sangat sederhana dan praktis, mengidentifikasi tren menggunakan rata-rata bergerak tinggi / rendah jangka pendek. Keuntungannya adalah dinamika yang kuat, perhitungan rendah, dan responsif tinggi, cocok untuk perdagangan aktif. Tetapi juga memiliki kekurangan dalam menanggapi peristiwa ekstrem dan risiko sinyal palsu yang lebih tinggi. Ada petunjuk untuk mengatasi masalah ini melalui penyesuaian parameter, menambahkan filter, dan teknik pengenalan pola untuk meningkatkan efektivitas strategi.


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

//@version=5
strategy(
     "Larry Williams 3 Period EMAs strategy",
     overlay=true,
     calc_on_every_tick=true,
     currency=currency.USD
     )

// Time range for backtesting
startDate = input.int(title="Start Date", defval=1, minval=1, maxval=31)
startMonth = input.int(title="Start Month", defval=1, minval=1, maxval=12)
startYear = input.int(title="Start Year", defval=2018, minval=1800, maxval=2100)

endDate = input.int(title="End Date", defval=31, minval=1, maxval=31)
endMonth = input.int(title="End Month", defval=12, minval=1, maxval=12)
endYear = input.int(title="End Year", defval=2041, minval=1800, maxval=2100)

inDateRange = (time >= timestamp(syminfo.timezone, startYear, startMonth, startDate, 0, 0)) and
     (time < timestamp(syminfo.timezone, endYear, endMonth, endDate, 0, 0))

// EMA
period = 3

emaH = ta.ema(high, period)
emaL = ta.ema(low, period)

// PLOT:
// Draw the EMA lines on the chart
plot(series=emaH, color=color.green, linewidth=2)
plot(series=emaL, color=color.red, linewidth=2)

// Conditions
if(inDateRange and close < emaL)
    strategy.entry("Long", strategy.long, comment="Long")
if(close > emaH)
    strategy.close("Long", comment="Close Long")

// Uncomment to enable short entries
//if(inDateRange and close > emaH)                                    
//    strategy.entry("Short", strategy.short, comment="Short")    
//if(close < emaL)
//    strategy.close("Short", comment="Close Short")

Lebih banyak