Chiến lược thoát hiểm Zigzag

Tác giả:ChaoZhang, Ngày: 2023-10-20 16:37:28
Tags:

img

Tổng quan

Chiến lược này sử dụng chỉ số Zigzag để vẽ đường hỗ trợ và kháng cự và có vị trí dài hoặc ngắn khi giá phá vỡ đường hỗ trợ hoặc kháng cự.

Chiến lược logic

Chiến lược đầu tiên sử dụng chỉ số Zigzag để vẽ đường Zigzag dưới một số tham số nhất định. Các đường hỗ trợ màu xanh lá cây được vẽ khi chỉ số Zigzag đáy ra. Các đường kháng cự màu đỏ được vẽ khi Zigzag lên đỉnh. Các vị trí dài được thực hiện khi giá vượt qua đường xanh lá cây. Các vị trí ngắn được thực hiện khi giá vượt qua đường đỏ.

Cụ thể, logic cốt lõi là:

  1. Sử dụng ema để làm mịn giá đóng cửa với trung bình di chuyển nhân ba, nhận được đường cong mịn _hls.

  2. Đánh giá nếu đường cong trơn tru đang tăng. Nếu tăng và thanh trước không tăng, nó được coi là đáy. Lấy giá thấp nhất của thanh này. Nếu giảm và thanh trước đang tăng, nó được coi là đỉnh. Lấy giá cao nhất của thanh này. Nếu không, NaN.

  3. Lặp lại quy trình này để có được đường zigzag zigzag.

  4. Khi zigzag tăng lên, ghi lại điểm đỉnh hiện tại. Khi rơi xuống, ghi lại điểm đáy hiện tại.

  5. Vẽ đường hỗ trợ màu xanh lá cây lên khi điểm tăng và đường kháng cự màu đỏ khi điểm giảm.

  6. Lấy vị trí dài khi giá vượt qua đường màu xanh lá cây. Lấy vị trí ngắn khi giá vượt qua đường đỏ.

Phân tích lợi thế

Những lợi thế của chiến lược này bao gồm:

  1. Xác định các mức hỗ trợ / kháng cự chính bằng cách sử dụng chỉ số Zigzag.

  2. Zigzag lọc ra một số tiếng ồn thị trường, tạo ra các tín hiệu giao dịch rõ ràng hơn.

  3. Nhập các vị trí bằng cách phá vỡ, có thể nắm bắt kịp thời sự đảo ngược xu hướng.

  4. Cách đơn giản và hiệu quả để vẽ đường hỗ trợ / kháng cự.

  5. Logic rõ ràng và không gian tối ưu hóa tham số lớn.

  6. Sự linh hoạt trong việc lựa chọn sản phẩm và khung thời gian.

Phân tích rủi ro

Rủi ro của chiến lược này:

  1. Các thông số Zigzag không đúng có thể bỏ lỡ cơ hội giao dịch.

  2. Giá có thể kiểm tra lại hỗ trợ / kháng cự sau khi phá vỡ.

  3. Các tín hiệu đột phá có thể gây nhầm lẫn, cần xác nhận với xu hướng và mô hình.

  4. Các giao dịch kéo dài có thể tạo ra các giao dịch không hiệu quả quá mức.

  5. Xem xét chi phí giao dịch. Tránh giao dịch quá thường xuyên.

Giải pháp:

  1. Tối ưu hóa các tham số Zigzag để tìm ra sự kết hợp tốt nhất.

  2. Thiết lập stop loss kịp thời sau khi phá vỡ để hạn chế tổn thất.

  3. Thêm các bộ lọc như chỉ số xu hướng để cải thiện độ chính xác.

  4. Xác định bên và tránh giao dịch trong những khoảng thời gian này.

  5. Thư giãn phạm vi đột phá để giảm giao dịch không hiệu quả.

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

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

  1. Tối ưu hóa các tham số Zigzag bằng cách kiểm tra lại để tìm tối ưu.

  2. Xem xét khả năng kiểm tra lại hỗ trợ / kháng cự sau khi phá vỡ. Thêm logic thoát để kiểm tra lại kịch bản.

  3. Thêm các bộ lọc như MA để sàng lọc các tín hiệu có khả năng thấp.

  4. Tích hợp các chỉ số âm lượng để xác nhận tín hiệu đột phá.

  5. Thực hiện phương pháp hai Lachenbruch (dài và ngắn) để lọc các tín hiệu không chính xác và lợi nhuận.

  6. Sử dụng máy học để tối ưu hóa các tham số một cách năng động.

  7. Đưa ra chiến lược dừng lỗ để hạn chế rủi ro.

Kết luận

Tóm lại, đây là một chiến lược đột phá dao động đơn giản và thực tế. Nó thu hút hỗ trợ / kháng cự bằng cách sử dụng Zigzag và đột phá giao dịch. Chiến lược thích nghi nhưng có một số rủi ro. Tối ưu hóa các thông số, bộ lọc tín hiệu và kiểm soát rủi ro có thể cải thiện nó.


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

//Noro
//2018

//@version=3
// strategy(title = "Noro's ZZ-2 Strategy", shorttitle = "Noro's ZZ-2 Strategy", 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 = "Capital, %")
length = input(4, title = "ZigZag length")
Extreme = input(4, title = "ZigZag extreme")
src = input(close, title = "Source")
showzz = input(false, defval = false, title = "Show ZigZag")
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")

//ZigZag
f_zz(_length, _detection)=>
    _hls = ema(ema(ema(src, _length), round(_length*0.66)), round(_length*0.33))
    _isRising = _hls >= _hls[1]
    _zigzag = _isRising and not _isRising[1] ? lowest(_detection) :  not _isRising and _isRising[1] ? highest(_detection) : na
zigzag = f_zz(length, Extreme)
zzcol = showzz ? black : na
plot(zigzag, color = zzcol, linewidth = 2)

//Levels
dot = 0.0
dot := zigzag > 0 ? zigzag : dot[1]
uplevel = 0.0
uplevel := dot > dot[1] ? zigzag : uplevel[1]
dnlevel = 0.0
dnlevel := dot < dot[1] ? zigzag : dnlevel[1]
upcol = na
upcol := dot > dot[1] ? na : lime
plot(uplevel, color = upcol, linewidth = 2)
dncol = na
dncol := dot < dot[1] ? na : red
plot(dnlevel, color = dncol, linewidth = 2)

//Trading
lot = 0.0
lot := strategy.position_size != strategy.position_size[1] ? strategy.equity / close * capital / 100 : lot[1]
if dot > 0
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, stop = uplevel)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, stop = dnlevel)


Thêm nữa