Chiến lược kiểm tra ngược bộ lọc dọc ngang

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

img

Tổng quan: Chiến lược này đánh giá liệu giá có ở trạng thái xu hướng hay không bằng cách tính tỷ lệ giữa sự khác biệt giữa giá cao nhất và giá thấp nhất trong một khoảng thời gian nhất định và kích thước của giá đóng cửa, và sử dụng điều này làm chỉ số tín hiệu giao dịch.

Nguyên tắc chiến lược: Chỉ số cốt lõi của chiến lược này là Bộ lọc dọc ngang (VHF). Nó được tính bằng công thức sau:

VHF = (Độ cao nhất ((Dài) - Độ thấp nhất ((Dài)) / SUM ((ABS ((Gần-Gần[1]), Dài)

Trong đó Highest ((Length) và Lowest ((Length) lần lượt là giá cao nhất và thấp nhất trong chu kỳ Length. Các số phản ánh phạm vi kích thước của giá, và tên của nó phản ánh sự biến động thực tế của giá. Tỷ lệ của chúng có thể đánh giá xu hướng chuyển động của giá. Khi VHF cao hơn ngưỡng tín hiệu nhất định, nó được coi là giá đang ở trạng thái xu hướng. Khi thấp hơn ngưỡng tín hiệu nhất định, nó được coi là giá đang ở trạng thái sốc.

Chiến lược này rất đơn giản và trực quan. Bằng cách so sánh phạm vi biến động giá với biến động thực tế để đánh giá xu hướng, nó tránh được vấn đề chỉ dựa vào SMA, EMA và các chỉ số khác trong khi bỏ qua các đặc điểm của chính giá. Nhưng chiến lược này nhạy cảm với tối ưu hóa tham số, các tham số Dài dài và tín hiệu cần phải được điều chỉnh để thích nghi với các chu kỳ và điều kiện thị trường khác nhau.

Phân tích lợi thế:

  1. Chỉ số đánh giá xu hướng trực quan, đơn giản và hiệu quả.
  2. Xem xét các đặc điểm của chính giá cả, không dựa trên bất kỳ đường cong phù hợp.
  3. Các tham số có thể cấu hình điều chỉnh độ nhạy của phán đoán.
  4. Có thể dễ dàng tích hợp vào các chiến lược giao dịch khác nhau.

Phân tích rủi ro:

  1. Nhạy cảm với các thông số, cài đặt không đúng có thể gây ra quá nhiều giao dịch sai.
  2. Không thể phân biệt xu hướng giả khi giá ở điểm biến động.
  3. Không nhạy cảm với các cú sốc giá ngắn hạn trong các thiết lập chu kỳ lớn.
  4. Cần sử dụng stop loss để kiểm soát single loss.

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

  1. Tối ưu hóa tham số Length để cân bằng độ nhạy của đánh giá xu hướng.
  2. Kết hợp các chỉ số khác để lọc tín hiệu VHF. Ví dụ, MACD có thể xác định các điểm uốn cong.
  3. Hãy thử các phương pháp học máy để phù hợp với đường cong VHF.
  4. Thiết lập các chiến lược song song với các thiết lập chu kỳ khác nhau để tạo ra các tín hiệu chiến lược đa cấp.

Tóm tắt: Chiến lược này xác định xu hướng trực quan dựa trên các đặc điểm của chính giá cả, đơn giản và hợp lệ, đáng để khám phá, tối ưu hóa và xác minh thêm. Nó có thể trở thành một công cụ đánh giá xu hướng cơ bản và được sử dụng rộng rãi trong các chiến lược giao dịch định lượng.


/*backtest
start: 2023-01-01 00:00:00
end: 2024-01-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 27/04/2018
// Vertical Horizontal Filter was initiated by Adam White. It was first published 
// in a magazine called “Issues of Futures” in August, 1991. The Vertical Horizontal 
// Filter (VHF) is a very common Indicator used by traders to find out the Phase of 
// a Price Trend. Normally, a price trend can be in a Trending Phase or a Congestion 
// Phase/Choppy Movement Phase. Adam White created this particular Technical Indicator 
// to determine whether prices are trending in a particular direction or are they going 
// through a transitional period. He used it to measure the range of Futures available
// in the market.
//
// You can change long to short in the Input Settings
// WARNING:
//  - For purpose educate only
//  - This script to change bars colors.
////////////////////////////////////////////////////////////
strategy(title="Vertical Horizontal Filter Backtest")
Length = input(28, minval=1)
Signal = input(0.4, step=0.01)
reverse = input(false, title="Trade reverse")
hline(Signal, color=blue, linestyle=line)
xHH = highest(high, Length)
xLL = lowest(low, Length)
xNumerator = abs(xHH - xLL)
xDenominator = sum(abs(close - close[1]), Length)
xVHF = xNumerator / xDenominator 
pos = iff(xVHF > Signal, 1,
       iff(xVHF < Signal, -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(xVHF, color=blue, title="VHF")

Thêm nữa