Bài viết này giới thiệu một chiến lược giao dịch có tên là
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á.
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.
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.
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.
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.
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.
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à:
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.
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ả.
Các đường ZigZag tương đối mịn mà có thể làm giảm tín hiệu sai.
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.
Những rủi ro chính của chiến lược này là:
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.
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.
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.
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:
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.
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.
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).
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.
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)