Xu hướng ZigZag theo chiến lược

Tác giả:ChaoZhang, Ngày: 2024-01-08 10:13:24
Tags:

img

Tổng quan

Bài viết này giới thiệu một chiến lược giao dịch có tên là ZigZag Trend Following Strategy. Chiến lược này xác định xu hướng giá bằng cách sử dụng chỉ số ZigZag và mở các vị trí khi xu hướng đảo ngược để theo xu hướng. Trong kịch bản Chiến lược Pine, chỉ số ZigZag được sử dụng để xác nhận giá cao và thấp mới. Khi giá vượt qua đường chỉ số ZigZag, nó phục vụ như tín hiệu giao dịch.

Nguyên tắc chiến lược

Cốt lõi của chiến lược này là sử dụng chỉ số ZigZag để xác định vị trí các điểm cực của giá và hiển thị xu hướng giá.

  1. Tính toán đường EMA chuyển động theo cấp số nhân của giá đóng cửa, bao gồm ba đường trung bình chuyển động: đường nhanh, đường trung và đường chậm.

  2. Xác định giá có đang tăng hay không. nghĩa là đường trung tâm hiện tại có cao hơn đường trung tâm của đường K trước đó không.

  3. Nếu hiện đang có xu hướng tăng, tìm giá thấp nhất được tính từ đầu của làn sóng điểm thấp trước đó trong chu kỳ được phát hiện như giá trị của ZigZag.

  4. Nếu hiện đang có xu hướng giảm, tìm giá cao nhất được tính từ đầu của làn sóng điểm cao trước đó trong chu kỳ được phát hiện như giá trị của ZigZag.

  5. Do đó, chỉ số ZigZag phản ánh các điểm cực đoan của biến động giá được hình thành.

Trên cơ sở này, chúng tôi sử dụng đường ZigZag như một tham chiếu để đánh giá xu hướng giá. nghĩa là, khi giá tăng và phá vỡ đường chỉ số ZigZag, chúng tôi đi dài; khi giá giảm và phá vỡ đường chỉ số ZigZag, chúng tôi đi ngắn.

Phân tích lợi thế

Những lợi thế của việc sử dụng chỉ số ZigZag để xác định xu hướng giá và theo dõi giá cực khi thiết lập các vị trí là:

  1. Có thể lọc hiệu quả tiếng ồn thị trường và nắm bắt các xu hướng chính.

  2. Các tín hiệu giao dịch được thiết lập trên sự đột phá của mức cao và thấp mới có thể kiếm lợi nhuận hiệu quả.

  3. Các đường ZigZag tương đối mịn mà có thể làm giảm tín hiệu sai.

  4. Dễ dàng tối ưu hóa chiến lược bằng cách điều chỉnh các tham số ZigZag.

Phân tích rủi ro

Những rủi ro chính của chiến lược này là:

  1. Chạy dài hạn có thể bị mắc kẹt do biến động mạnh mẽ trên thị trường.

  2. Các chỉ số ZigZag nhạy cảm với các thông số. Các thiết lập không chính xác có thể bỏ lỡ cơ hội giao dịch hoặc tạo ra tín hiệu sai. Các thông số cần được kiểm tra và tối ưu hóa phù hợp.

  3. Chiến lược theo dõi xu hướng dựa nhiều hơn vào thị trường xu hướng.

Để đáp ứng các rủi ro trên, chúng tôi có thể thiết lập các cơ chế dừng lỗ để kiểm soát lỗ đơn; đồng thời, điều chỉnh kích thước vị trí thay vì tìm kiếm toàn bộ vị trí; cuối cùng, phù hợp với các loại danh mục đầu tư chiến lược khác nhau.

Hướng tối ưu hóa

Chúng ta có thể tối ưu hóa thêm chiến lược này trong các khía cạnh sau:

  1. Thêm một cơ chế dừng lỗ. Ví dụ, thiết lập dừng lỗ di chuyển hoặc dừng lỗ để mở rộng giá khôi phục.

  2. Kết hợp với các chỉ số khác để lọc vị trí. Ví dụ, tăng cường chỉ số động lực để đảm bảo động lực đủ; hoặc chỉ số khối lượng giao dịch để đảm bảo khối lượng giao dịch cao.

  3. Sử dụng các cấu hình tham số khác nhau theo môi trường thị trường khác nhau (chẳng hạn như thị trường tăng và giảm).

  4. Kiểm tra các thông số đường EMA khác nhau để tìm ra sự kết hợp thông số tốt nhất.

Kết luận

Chiến lược này sử dụng chỉ số ZigZag để xác định xu hướng giá và thiết lập các vị trí theo dõi gần các điểm cực đoan. Ưu điểm của nó là theo dõi xu hướng hiệu quả để kiếm lợi nhuận. Nó cũng có nguy cơ bị mắc kẹt. Chúng ta có thể đặt dừng lỗ, tối ưu hóa các tham số và danh mục đầu tư chiến lược thương mại để kiểm soát rủi ro. Chiến lược này phù hợp hơn với giao dịch xu hướng trung hạn đến dài hạn. Nếu được kiểm soát và kết hợp đúng cách, nó có thể thu được lợi nhuận ổn định.


/*backtest
start: 2023-12-31 00:00:00
end: 2024-01-07 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title = "Noro's ZigTrend Strategy v1.0", shorttitle = "ZigTrend 1.0", 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)
ExtremeDetection = input(4)
src = input(close)
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, ExtremeDetection)
plot(zigzag, color=black, linewidth=2)

//Signals
up = close > zigzag
dn = close < zigzag

//Trading
lot = 0.0
lot := strategy.position_size != strategy.position_size[1] ? strategy.equity / close * capital / 100 : lot[1]
if up
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot)

if dn
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot)


Thêm nữa