AC Backtest Strategi Penunjuk Williams

Penulis:ChaoZhang, Tarikh: 2023-12-18 12:03:38
Tag:

img

Ringkasan

Strategi ini adalah berdasarkan Awesome Oscillator (AO) dalam Penunjuk Williams yang direka oleh peniaga terkenal Bill Williams. Dengan mengira perbezaan antara harga SMA purata dari tempoh yang berbeza, ia membentuk penunjuk berayun untuk mendiagnosis trend dan momentum pasaran dan reka bentuk isyarat perdagangan yang sepadan untuk membimbing panjang dan pendek.

Prinsip

Penunjuk teras strategi ini adalah Awesome Oscillator (AO), yang dikira sebagai: AO = SMA ((Median Price, 5 hari) - SMA ((Median Price, 34 hari) Di mana Harga Median ditakrifkan sebagai (Highest Price + Lowest Price) / 2. Rumus ini mengekstrak maklumat momentum harga dari dua SMA harga median dalam tempoh yang berbeza. Isyarat membeli dihasilkan apabila SMA cepat (5 hari) lebih tinggi daripada SMA perlahan (34 hari), dan isyarat jual dihasilkan apabila SMA cepat lebih rendah daripada SMA perlahan.

Untuk menapis isyarat yang salah, strategi ini juga menggunakan operasi SMA 5 hari pada AO. Mod terbalik disediakan di mana membalikkan isyarat panjang / pendek merealisasikan arah perdagangan yang berbeza. Apabila AO lebih tinggi daripada nilai sebelumnya, ia dianggap peluang membeli dan ditandakan sebagai bar biru. Apabila AO tidak lebih tinggi daripada nilai sebelumnya, ia dianggap peluang jual dan ditandakan sebagai bar merah.

Kelebihan

  1. Menggunakan harga median dan bukannya harga dekat mengurangkan kesan pecah palsu pada SMA dan meningkatkan kestabilan
  2. Gabungan SMA pantas dan perlahan menangkap perubahan pasaran dengan sensitif
  3. Penapisan SMA berganda menghilangkan bunyi frekuensi tinggi dan meningkatkan kualiti isyarat
  4. Penyesuaian parameter yang fleksibel menyesuaikan diri dengan persekitaran pasaran yang berbeza
  5. Paparan bar intuitif titik dagangan untuk penilaian mudah operasi

Risiko dan Penyelesaian

  1. Mengkaji kekerapan turun naik pasaran dengan berhati-hati untuk mengelakkan overfit dengan menyesuaikan parameter
  2. Pelbagai operasi yang salah mungkin berlaku di pasaran berayun.
  3. Data backtest yang tidak boleh dipercayai, prestasi sebenar mungkin berbeza dari simulasi.

Arahan pengoptimuman

  1. Meningkatkan penapis seperti jumlah dagangan untuk meningkatkan kualiti isyarat
  2. Memasukkan strategi stop loss untuk mengawal kerugian operasi individu
  3. Mengoptimumkan pengurusan kedudukan, menambah atau mengurangkan kedudukan mengikut turun naik pasaran
  4. Menggabungkan penunjuk lain untuk menentukan arah trend untuk mengelakkan pembalikan osilasi

Kesimpulan

Strategi ini menggunakan Osilator Awesome yang direka dengan struktur harga SMA purata yang cepat dan perlahan untuk mendiagnosis perubahan momentum pasaran, dengan isyarat perdagangan yang intuitif dan jelas. Tetapi ia tertakluk kepada kesan osilasi dan pembalikan, memerlukan penyesuaian parameter yang betul dan strategi stop loss untuk meningkatkan kestabilan. Dengan kawalan risiko yang berkesan, strategi ini mudah, praktikal dan bernilai pengoptimuman dan penerapan lanjut.


/*backtest
start: 2022-12-11 00:00:00
end: 2023-12-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 28/12/2016
//    This indicator plots the oscillator as a histogram where blue denotes 
//    periods suited for buying and red . for selling. If the current value 
//    of AO (Awesome Oscillator) is above previous, the period is considered 
//    suited for buying and the period is marked blue. If the AO value is not 
//    above previous, the period is considered suited for selling and the 
//    indicator marks it as red.
//
// You can change long to short in the Input Settings
// Please, use it only for learning or paper trading. Do not for real trading.
////////////////////////////////////////////////////////////
strategy("Bill Williams. Awesome Oscillator (AC)")
nLengthSlow = input(34, minval=1, title="Length Slow")
nLengthFast = input(5, minval=1, title="Length Fast")
reverse = input(false, title="Trade reverse")
xSMA1_hl2 = sma(hl2, nLengthFast)
xSMA2_hl2 = sma(hl2, nLengthSlow)
xSMA1_SMA2 = xSMA1_hl2 - xSMA2_hl2
xSMA_hl2 = sma(xSMA1_SMA2, nLengthFast)
nRes =  xSMA1_SMA2 - xSMA_hl2
cClr = nRes > nRes[1] ? blue : red
pos = iff(nRes > nRes[1], 1,
	   iff(nRes < nRes[1], -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue )
plot(nRes, style=histogram, linewidth=1, color=cClr)

Lebih lanjut