Strategi ini menggunakan pendekatan yang dijelaskan oleh Larry Williams dalam bukunya
Logik teras strategi ini adalah untuk mengira purata bergerak 3 tempoh harga tinggi dan rendah. Khususnya, ia menggunakan fungsi ta.ema untuk mengira purata bergerak eksponensial harga tinggi dan rendah selama 3 bar yang paling baru untuk menjana tahap sokongan dan rintangan dinamik. Apabila harga memecahkan di bawah tahap rendah EMA, ia menunjukkan trend penurunan, jadi kita boleh pergi panjang. Apabila harga naik kembali di atas tahap tinggi EMA, ia menunjukkan trend naik telah berakhir dan kita harus menutup kedudukan kita. Dengan cara ini, strategi dapat menjejaki perubahan harga secara dinamik dan mencapai pembelian rendah dan menjual tinggi.
Kelebihan terbesar strategi ini adalah kesederhanaan dan dinamika. Berbanding dengan mengambil purata bergerak tinggi / rendah tempoh tetap, strategi ini menggunakan purata bergerak jangka pendek yang berterusan, yang dapat menangkap perubahan harga dengan lebih sensitif dan tepat pada masanya. Ini membolehkan ia dengan cepat mengenal pasti peluang perdagangan untuk memasuki dan keluar dari pasaran. Juga, beban pengkomputeran yang rendah adalah satu lagi kelebihan untuk mengurangkan latensi perdagangan.
Risiko utama strategi ini adalah bahawa ia bertindak balas lebih perlahan terhadap peristiwa mendadak seperti berita penting. Kerana tempoh purata bergerak sangat pendek, ia memerlukan beberapa masa untuk menyesuaikan tahap purata bergerak apabila terdapat lonjakan harga yang tajam. Ini boleh menyebabkan kerugian atau peluang yang hilang. Juga, keterlaluan sensitif boleh menyebabkan perdagangan yang salah. Untuk mengurangkan risiko ini, kita boleh meningkatkan tempoh purata bergerak dengan sewajarnya, atau menambah penapis untuk mengelakkan isyarat palsu.
Terdapat ruang yang besar untuk mengoptimumkan strategi ini. Pertama, osilator boleh dimasukkan untuk menapis isyarat. Kedua, logik kehilangan berhenti boleh ditambah untuk mengawal risiko. Juga, kita boleh menyesuaikan parameter purata bergerak secara dinamik berdasarkan keadaan pasaran, menggunakan tempoh yang lebih lama dalam trend dan tempoh yang lebih pendek dalam pasaran yang berkisar. Di samping itu, analisis pelbagai jangka masa, pengenalan corak dengan pembelajaran mesin dll boleh membantu meningkatkan prestasi strategi.
Ringkasnya, ini adalah strategi yang sangat mudah dan praktikal, mengenal pasti trend menggunakan purata bergerak tinggi / rendah jangka pendek. Kelebihannya adalah dinamika yang kuat, pengiraan yang rendah, dan tindak balas yang tinggi, sesuai untuk perdagangan aktif. Tetapi ia juga mempunyai kekurangan dalam bertindak balas terhadap peristiwa yang melampau dan risiko isyarat palsu yang lebih tinggi. Terdapat arahan untuk menangani masalah ini melalui penyesuaian parameter, menambah penapis, dan teknik pengenalan corak untuk meningkatkan lagi keberkesanan 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")