Chiến lược AC Backtest của chỉ số Williams

Tác giả:ChaoZhang, Ngày: 2023-12-18 12:03:38
Tags:

img

Tổng quan

Chiến lược này dựa trên bộ dao động tuyệt vời (AO) trong chỉ số Williams được thiết kế bởi nhà giao dịch nổi tiếng Bill Williams. Bằng cách tính toán sự khác biệt giữa giá trung bình SMA của các giai đoạn khác nhau, nó tạo thành một chỉ số dao động để chẩn đoán xu hướng và động lực thị trường và thiết kế các tín hiệu giao dịch tương ứng để hướng dẫn dài và ngắn.

Nguyên tắc

Chỉ số cốt lõi của chiến lược này là Awesome Oscillator (AO), được tính như sau: AO = SMA ((Giá trung bình, 5 ngày) - SMA ((Giá trung bình, 34 ngày) Trong đó giá trung bình được định nghĩa là (Giá cao nhất + Giá thấp nhất) / 2. Công thức này trích xuất thông tin động lực giá từ hai SMA của giá trung bình trong các giai đoạn khác nhau. Các tín hiệu mua được tạo ra khi SMA nhanh (5 ngày) cao hơn SMA chậm (34 ngày), và các tín hiệu bán được tạo ra khi SMA nhanh thấp hơn SMA chậm.

Để lọc các tín hiệu sai, chiến lược này cũng áp dụng hoạt động SMA 5 ngày trên AO. Một chế độ đảo ngược được cung cấp nơi đảo ngược các tín hiệu dài / ngắn nhận ra các hướng giao dịch khác nhau. Khi AO cao hơn giá trị trước, nó được coi là cơ hội mua và được đánh dấu như một thanh xanh. Khi AO không cao hơn giá trị trước, nó được coi là cơ hội bán và được đánh dấu như một thanh đỏ.

Ưu điểm

  1. Sử dụng giá trung bình thay vì giá đóng giảm tác động của sự phá vỡ sai trên SMA và cải thiện sự ổn định
  2. Sự kết hợp giữa SMA nhanh và chậm nắm bắt các thay đổi thị trường một cách nhạy cảm
  3. Bộ lọc SMA kép loại bỏ tiếng ồn tần số cao và cải thiện chất lượng tín hiệu
  4. Điều chỉnh tham số linh hoạt thích nghi với môi trường thị trường khác nhau
  5. Hiển thị thanh trực quan của các điểm giao dịch để dễ dàng đánh giá các hoạt động

Rủi ro và giải pháp

  1. Đánh giá tần suất biến động thị trường một cách thận trọng để tránh quá mức bằng cách điều chỉnh các tham số
  2. Nhiều giao dịch sai có thể xảy ra trong các thị trường dao động.
  3. Dữ liệu backtest không đáng tin cậy, hiệu suất thực tế có thể khác với mô phỏng.

Hướng dẫn tối ưu hóa

  1. Tăng các bộ lọc như khối lượng giao dịch để cải thiện chất lượng tín hiệu
  2. Kết hợp các chiến lược dừng lỗ để kiểm soát các lỗ hoạt động cá nhân
  3. Tối ưu hóa quản lý vị trí, thêm hoặc giảm vị trí theo biến động thị trường
  4. Kết hợp các chỉ số khác để xác định hướng xu hướng để ngăn chặn đảo ngược dao động

Kết luận

Chiến lược này sử dụng bộ dao động tuyệt vời được thiết kế với cấu trúc giá trung bình SMA nhanh và chậm để chẩn đoán sự thay đổi động lực thị trường, với các tín hiệu giao dịch trực quan và rõ ràng. Nhưng nó chịu tác động của dao động và đảo ngược, đòi hỏi điều chỉnh tham số thích hợp và chiến lược dừng lỗ để cải thiện sự ổn định. Với kiểm soát rủi ro hiệu quả, chiến lược này đơn giản, thực tế và đáng để tối ưu hóa và áp dụng thêm.


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

Thêm nữa