수직 수평 필터 백테스트 전략

저자:차오장, 날짜: 2024-01-08 10:20:25
태그:

img

이 전략은 특정 기간 동안 가장 높은 가격과 가장 낮은 가격의 차이와 종료 가격의 폭 사이의 비율을 계산하여 가격이 트렌드 상태에 있는지 판단하고 이를 거래 신호 지표로 사용합니다.

전략 원칙: 이 전략의 핵심 지표는 수직 수평 필터 (VHF) 이다. 다음 공식으로 계산된다:

VHF = (최고 (장) - 최하위 (장) /SUM (ABS) (접근-접근[1]), 길이)

가장 높고 가장 낮은 값은 각각 가장 높고 가장 낮은 값이다. 분자는 가격의 진폭 범위를 반영하고 분모는 실제 가격 변동을 반영한다. 그들의 비율은 가격 움직임의 경향을 판단할 수 있다. VHF가 주어진 신호 임계보다 높을 때 가격은 트렌드 상태에 있다고 간주된다. 주어진 신호 임계보다 낮을 때 가격은 충격 상태에 있다고 간주된다. 이에 따라 거래 신호가 생성된다.

이 전략은 간단하고 직관적입니다. 트렌드를 판단하기 위해 가격 변동 범위를 실제 변동과 비교함으로써, 가격 자체의 특성을 무시하면서 SMA, EMA 및 기타 지표에만 의존하는 문제를 피합니다. 그러나 이 전략은 매개 변수 최적화에 민감합니다. 길이 및 신호 매개 변수는 다른 주기와 시장 조건에 적응하도록 조정해야합니다.

이점 분석:

  1. 직관적인 트렌드 판단 지표, 간단하고 효과적입니다.
  2. 가격 자체의 특성을 고려하고, 어떤 곡선 적합성에 의존하지 않습니다.
  3. 설정 가능한 매개 변수들이 판단의 민감도를 조절합니다.
  4. 다양한 거래 전략에 쉽게 통합될 수 있습니다.

위험 분석:

  1. 매개 변수에 민감해서 잘못된 설정이 너무 많은 잘못된 거래를 일으킬 수 있습니다.
  2. 가격 변동점이 있을 때 사이비 트렌드를 구별할 수 없습니다.
  3. 큰 사이클 설정에서 단기 가격 충격에 민감하지 않습니다.
  4. 한 번의 손실을 통제하기 위해 스톱 로스를 사용해야 합니다.

최적화 방향:

  1. 트렌드 판단의 감수성을 균형을 맞추기 위해 길이 매개 변수를 최적화합니다.
  2. VHF 신호를 필터링하기 위해 다른 지표를 결합하십시오. 예를 들어, MACD는 굴곡 지점을 결정할 수 있습니다.
  3. VHF 곡선에 맞는 기계 학습 방법을 시도해보세요.
  4. 여러 단계 전략 신호를 생성하기 위해 다른 사이클 설정으로 병행 전략을 설정합니다.

요약: 이 전략은 직관적으로 가격 자체의 특성을 기반으로 추세를 결정, 간단하고 유효, 추가 탐구, 최적화 및 검증 가치가 있습니다. 그것은 기본 추세 판단 도구가 될 수 있습니다. 그리고 양적 거래 전략에서 널리 사용됩니다.


/*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")

더 많은