
Strategi ini menggunakan strategi yang dijelaskan oleh Larry Williams dalam buku beliau, Long Term Secret Short Term Trading, yang menggunakan dua purata bergerak 3 tempoh, satu mewakili tinggi dan satu lagi mewakili rendah. Apabila harga berada di bawah purata bergerak 3 tempoh rendah, kita mempunyai isyarat kedudukan panjang.
Logik teras strategi ini adalah mengira purata bergerak 3 fasa dengan titik rendah dan tinggi. Khususnya, ia menggunakan fungsi ta.ema untuk mengira purata bergerak indeks dengan titik tinggi dan rendah 3 bar terakhir untuk menghasilkan sokongan dan rintangan yang dinamik. Apabila harga jatuh di bawah titik rata-rata yang rendah, ini menunjukkan bahawa kita sedang berada dalam penurunan, jadi kita boleh melakukan lebih banyak; apabila harga kembali naik ke atas titik rata-rata yang tinggi, ini menunjukkan bahawa trend naik telah berakhir, kita akan melonggarkan kedudukan.
Kelebihan terbesar strategi ini adalah kesederhanaan dan dinamik. Berbanding dengan purata tinggi dan rendah dalam tempoh tertentu, strategi ini menggunakan purata bergerak jangka pendek yang dikira secara berturut-turut, yang lebih sensitif dan tepat pada masanya untuk menangkap perubahan harga. Ini membolehkan ia mengenal pasti titik jual beli dengan cepat, sehingga memasuki dan keluar dari pasaran.
Risiko utama strategi ini adalah bahawa ia bertindak balas lambat terhadap peristiwa mengejut seperti peristiwa berita utama. Oleh kerana kitaran purata bergerak yang pendek, ia memerlukan masa untuk menyesuaikan kedudukan garis rata-rata apabila terdapat turun naik harga yang kuat. Ini boleh menyebabkan kerugian atau kehilangan peluang. Selain itu, terlalu sensitif juga boleh menyebabkan perdagangan yang salah. Untuk mengurangkan risiko ini, kita boleh memanjangkan jumlah kitaran rata-rata bergerak dengan sewajarnya, atau menambah syarat penapisan untuk mengelakkan isyarat yang salah.
Strategi ini masih mempunyai banyak ruang untuk pengoptimuman. Pertama, kita boleh menggabungkan indikator lain seperti indikator goyah untuk penapisan, menjadikan isyarat lebih dipercayai. Kedua, kita juga boleh menambah logik stop-loss untuk mengawal risiko. Kedua, kita juga boleh menyesuaikan parameter purata bergerak mengikut keadaan pasaran yang dinamik, memanjangkan kitaran di pasaran yang sedang tren, memendekkan kitaran di pasaran goyah.
Strategi ini secara keseluruhan sangat mudah dan praktikal, untuk membuat keputusan mengenai trend melalui garis rata-rata jangka pendek yang tinggi dan rendah. Kelebihannya adalah dinamik, pengiraan kecil, realiti tinggi, sesuai untuk perdagangan yang kerap. Tetapi ada juga masalah yang tidak sensitif terhadap tindak balas kejadian yang tidak disangka-sangka dan kadar kesilapan isyarat yang tinggi.
/*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")