AC Backtest Strategi dari Williams Indikator

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

img

Gambaran umum

Strategi ini didasarkan pada Awesome Oscillator (AO) dalam Williams Indicator yang dirancang oleh trader terkenal Bill Williams. Dengan menghitung perbedaan antara SMA harga median dari periode yang berbeda, ia membentuk indikator osilasi untuk mendiagnosis tren dan momentum pasar dan merancang sinyal perdagangan yang sesuai untuk membimbing panjang dan pendek.

Prinsip

Indikator inti dari strategi ini adalah Awesome Oscillator (AO), yang dihitung sebagai: AO = SMA ((Median Price, 5 days) - SMA ((Median Price, 34 days) Di mana Harga Median didefinisikan sebagai (Highest Price + Lowest Price) / 2. Rumus ini mengekstrak informasi momentum harga dari dua SMA dari harga median selama periode yang berbeda. Sinyal beli dihasilkan ketika SMA cepat (5 hari) lebih tinggi dari SMA lambat (34 hari), dan sinyal jual dihasilkan ketika SMA cepat lebih rendah dari SMA lambat.

Untuk menyaring sinyal yang salah, strategi ini juga menerapkan operasi SMA 5 hari pada AO. Mode terbalik disediakan di mana membalikkan sinyal panjang/pendek mewujudkan arah perdagangan yang berbeda. Ketika AO lebih tinggi dari nilai sebelumnya, itu dianggap sebagai peluang beli dan ditandai sebagai garis biru. Ketika AO tidak lebih tinggi dari nilai sebelumnya, itu dianggap sebagai peluang jual dan ditandai sebagai garis merah.

Keuntungan

  1. Menggunakan harga median alih-alih harga dekat mengurangi dampak dari kegagalan palsu pada SMA dan meningkatkan stabilitas
  2. Kombinasi SMA cepat dan lambat menangkap perubahan pasar secara sensitif
  3. Penyaringan SMA ganda menghilangkan kebisingan frekuensi tinggi dan meningkatkan kualitas sinyal
  4. Penyesuaian parameter yang fleksibel beradaptasi dengan lingkungan pasar yang berbeda
  5. Tampilan batang intuitif dari titik perdagangan untuk penilaian operasi yang mudah

Risiko dan Solusi

  1. Evaluasi frekuensi volatilitas pasar dengan hati-hati untuk mencegah overfit dengan menyesuaikan parameter
  2. Berbagai operasi yang salah dapat terjadi di pasar osilasi.
  3. Data backtest yang tidak dapat diandalkan, kinerja sebenarnya mungkin berbeda dari simulasi.

Arahan Optimasi

  1. Meningkatkan filter seperti volume perdagangan untuk meningkatkan kualitas sinyal
  2. Menggabungkan strategi stop loss untuk mengendalikan kerugian operasi individu
  3. Mengoptimalkan manajemen posisi, menambah atau mengurangi posisi sesuai dengan volatilitas pasar
  4. Menggabungkan indikator lain untuk menentukan arah tren untuk mencegah pembalikan osilasi

Kesimpulan

Strategi ini menggunakan Awesome Oscillator yang dirancang dengan struktur SMA harga median cepat dan lambat untuk mendiagnosis perubahan momentum pasar, dengan sinyal perdagangan yang intuitif dan jelas.


/*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 banyak