Chiến lược kiểm tra ngược bộ lọc xu hướng phạm vi trung bình


Ngày tạo: 2024-01-08 10:20:25 sửa đổi lần cuối: 2024-01-08 10:20:25
sao chép: 0 Số nhấp chuột: 656
1
tập trung vào
1617
Người theo dõi

Chiến lược kiểm tra ngược bộ lọc xu hướng phạm vi trung bình

Tóm tắt: Chiến lược này sử dụng tỷ lệ chênh lệch giữa giá cao nhất và giá thấp nhất trong một khoảng thời gian nhất định để đánh giá xem giá có đang trong trạng thái xu hướng hay không, và sử dụng nó như một 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 là bộ lọc theo chiều dọc theo chiều ngang ((VHF), được tính bằng công thức sau:

VHF = (Highest(Length) - Lowest(Length)) / SUM(ABS(Close - Close[1]), Length)

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

Chiến lược này đơn giản và trực quan, đánh giá xu hướng bằng cách so sánh phạm vi biến động giá với bước sóng thực tế, tránh vấn đề phụ thuộc vào chỉ số SMA, EMA và bỏ qua tính chất của giá. Tuy nhiên, chiến lược này nhạy cảm với các tham số tối ưu hóa, cần điều chỉnh tham số Length và Signal để thích ứng với các chu kỳ và môi trường thị trường khác nhau.

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

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

Phân tích rủi ro:

  1. Các tham số nhạy cảm, thiết lập không đúng cách có thể dẫn đến quá nhiều giao dịch sai.
  2. Xu hướng giả khi không thể phân biệt giá ở điểm biến.
  3. Trong thiết lập chu kỳ lớn, nó không nhạy cảm với biến động giá trong chu kỳ ngắn.
  4. Cần kết hợp với Stop Loss để kiểm soát tổn thất đơn lẻ

Định hướng tối ưu hóa:

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

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

Mã nguồn chiến lược
/*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")