Chiến lược cá sấu của Williams

Tác giả:ChaoZhang, Ngày: 2023-11-13 10:58:22
Tags:

img

Tổng quan

Williams Alligator Strategy là một chiến lược theo xu hướng sử dụng ba đường trung bình động của các giai đoạn khác nhau để tạo thành hàm cá sấu để xác định hướng xu hướng. Khi đường nhanh nằm trên đường trung và đường trung nằm trên đường chậm, một miệng cá sấu xu hướng tăng được hình thành để đi dài. Khi đường nhanh nằm dưới đường trung và đường trung nằm dưới đường chậm, một miệng cá sấu xu hướng giảm được hình thành để đi ngắn. Nó được phát minh bởi Bill Williams và kết hợp khả năng đánh giá xu hướng của các đường trung bình chuyển để nắm bắt xu hướng thị trường hiệu quả.

Làm thế nào nó hoạt động

Chiến lược sử dụng ba SMA có độ dài thời gian khác nhau - đường nhanh sma1, đường trung sma2 và đường chậm sma3, nơi sma1 có thời gian ngắn nhất và sma3 có thời gian dài nhất.

Khi sma1 vượt qua trên sma2 và sma2 vượt qua trên sma3, điều này cho thấy thị trường đang có xu hướng tăng và tạo thành một miệng cá sấu tăng.

Ngược lại, khi sma1 vượt qua dưới sma2, và sma2 vượt qua dưới sma3, nó cho thấy thị trường đang có xu hướng giảm và hình thành một miệng cá sấu giảm.

Điều kiện thoát là khi ba đường thẳng hàng, với đường nhanh dưới đường trung hoặc đường trung dưới đường chậm.

Chiến lược cũng vẽ màu nền để xác định hướng xu hướng - màu xanh lá cây cho xu hướng tăng và màu đỏ cho xu hướng giảm.

Tóm lại, chiến lược này sử dụng điểm mạnh của đường trung bình động và các mô hình miệng cá sấu để xác định hướng xu hướng và giao dịch phù hợp.

Phân tích lợi thế

  • Miệng cá sấu có hiệu quả xác định hướng xu hướng.
  • Kết hợp các đường thời kỳ khác nhau cải thiện độ chính xác mô hình.
  • Giao dịch theo xu hướng phù hợp với lý thuyết giao dịch xu hướng.
  • Màu nền giúp đánh giá thị giác.
  • Một logic đơn giản và rõ ràng, dễ thực hiện.

Phân tích rủi ro

  • Nhiều rủi ro trong các thị trường.
  • Rủi ro cao khi các đường thẳng được sắp xếp lại để đóng các vị trí.
  • Không thể xác định sức mạnh xu hướng, có thể nhập xu hướng không chính xác.
  • Không dừng lỗ, rủi ro rút tiền cao.
  • Thời gian cố định không thể thích nghi với sự thay đổi của thị trường.

Để giải quyết rủi ro, những cải tiến sau đây có thể được thực hiện:

  1. Thêm bộ lọc xu hướng để tránh whipsaws trong các thị trường dao động.

  2. Tối ưu hóa điều kiện thoát bằng cách sử dụng các chỉ số xu hướng.

  3. Thêm chiến lược dừng lỗ để kiểm soát lỗ giao dịch duy nhất.

  4. Sử dụng trung bình động thích nghi để các giai đoạn điều chỉnh năng động.

Hướng dẫn cải thiện

Chiến lược có thể được tối ưu hóa thêm trong các khía cạnh sau:

  1. Thêm bộ lọc sức mạnh xu hướng để tránh nhập sớm vào xu hướng yếu.

  2. Tối ưu hóa thời gian trung bình di chuyển để tìm kết hợp tốt nhất thông qua backtesting.

  3. Sử dụng các đường trung bình động thích nghi để các giai đoạn thích nghi dựa trên đà thị trường.

  4. Thêm các chiến lược dừng lỗ như dừng lỗ, cân bằng tài khoản để kiểm soát rủi ro.

  5. Cải thiện điều kiện nhập khẩu bằng cách sử dụng khối lượng, Bollinger Bands vv để tăng độ chính xác.

  6. Cải thiện điều kiện thoát bằng cách đánh giá xác suất đảo ngược xu hướng bằng các chỉ số khi các đường dây giao nhau.

Kết luận

Chiến lược Williams Alligator là một chiến lược theo xu hướng điển hình. Nó sử dụng miệng cá sấu được hình thành bởi ba đường trung bình động để xác định xu hướng và giao dịch phù hợp. Những lợi thế là logic đơn giản và rõ ràng của nó. Những nhược điểm là độ chính xác xu hướng yếu hơn và kiểm soát rủi ro.


/*backtest
start: 2023-10-13 00:00:00
end: 2023-11-12 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2019

//@version=3
strategy(title = "Noro's Alligator Strategy by Bill Williams", shorttitle = "Alligator", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot")
len1 = input(50, defval = 50, minval = 1, title = "MA 1 Length")
len2 = input(100, defval = 100, minval = 1, title = "MA 2 Length")
len3 = input(200, defval = 200, minval = 1, title = "MA 3 Length")
src = input(close, title = "Source")
showbg = input(false, title = "Show Background")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//MAs
sma1 = sma(src, len1)
sma2 = sma(src, len2)
sma3 = sma(src, len3)
plot(sma1, color = lime, linewidth = 2)
plot(sma2, color = blue, linewidth = 2)
plot(sma3, color = red, linewidth = 2)

//Signals
up = sma1 > sma2 and sma2 > sma3
dn = sma1 < sma2 and sma2 < sma3

//Background
trend = 0
trend := up ? 1 : dn ? -1 : trend[1]
col = showbg == false ? na : trend == 1 ? lime : red
bgcolor(col)

//Trading
size = strategy.position_size
lot = 0.0
lot := size != size[1] ? strategy.equity / close * capital / 100 : lot[1]
if up
    strategy.entry("Long", strategy.long, needlong ? lot : 0, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if dn
    strategy.entry("Short", strategy.short, needshort ? lot : 0, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()

Thêm nữa