대역 패스 필터링 트렌드 추출 전략

저자:차오장, 날짜: 2024-01-03 15:22:49
태그:

img

전반적인 설명

밴드패스 필터링 트렌드 추출 전략 (Bandpass Filtering Trend Extraction Strategy) 은 밴드패스 필터를 기반으로 한 주식 트렌드 추적 전략이다. 이는 기하급수적으로 가중된 이동 평균과 밴드패스 필터링을 사용하여 가격 시리즈를 처리하고 진입 및 출구 신호로 가격의 트렌드 구성 요소를 추출합니다.

원칙

이 전략은 먼저 이동 평균의 길이를 제어하기 위해 길이와 델타 매개 변수를 조정하여 이중 기하급수적 이동 평균을 구성합니다. 다음에는 일련의 수학적 변환을 사용하여 가격 시리즈에서 트렌드 구성 요소를 추출하고 xBandpassFilter 변수에 저장합니다. 마지막으로 xBandpassFilter의 간단한 이동 평균, xMean을 입력 및 출력 지표로 계산합니다.

xMean가 트리거 레벨을 넘어서면 길게, 그 아래를 넘어가면 짧게 됩니다. 트리거 레벨을 조정함으로써 입출동의 민감도를 제어할 수 있습니다.

장점

  1. 이중 EMA는 더 안정적인 전략을 위해 가격 소음을 효과적으로 필터링합니다.
  2. 밴드 패스 필터링은 가격의 트렌드 구성 요소만을 추출하고, 윙사 (wipssaws) 를 피합니다.
  3. 더 적은 매개 변수가 최적화와 위험 통제를 더 쉽게 합니다.

위험성

  1. 시간 지연은 빠른 역전으로 인해 놓친 기회를 유발합니다.
  2. 이중 EMA 및 대역 통과 필터링은 낮은 통과 효과를 가지고 있으며 민감도를 감소시킵니다.
  3. 과도한 필터링은 매개 변수가 잘 맞지 않으면 강한 트렌드를 놓칠 수 있습니다.

길이를 줄이면 지연 문제를 개선할 수 있습니다.

개선

  1. 단일 트레이드 손실을 제어하기 위해 스톱 로스를 추가합니다.
  2. 이중 이동 평균 시스템은 안정성을 향상시킬 수 있습니다.
  3. 소음량이나 다른 역전 신호와 결합하여 윙사 (wipssaws) 를 피하십시오.
  4. 매개 변수를 최적화하기 위해 기계 학습이나 유전 알고리즘을 사용하세요.

결론

이 전략은 강력한 트렌딩 시장에서 좋은 성과로 비교적 안정적입니다. 여러 시장 환경에서 추가 최적화가 더 안정적으로 수익성을 올릴 수 있습니다. 추가 연구와 응용을 보장합니다.


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

//@version = 2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 14/12/2016
// The related article is copyrighted material from Stocks & Commodities Mar 2010
//
// You can use in the xPrice any series: Open, High, Low, Close, HL2, HLC3, OHLC4 and ect...
// You can change long to short in the Input Settings
// Please, use it only for learning or paper trading. Do not for real trading.
////////////////////////////////////////////////////////////
strategy(title="Extracting The Trend Strategy Backtest")
Length = input(20, minval=1)
Delta = input(0.5)
Trigger = input(0)
reverse = input(false, title="Trade reverse")
hline(Trigger, color=blue, linestyle=line)
xPrice = hl2
beta = cos(3.1415 * (360 / Length) / 180)
gamma = 1 / cos(3.1415 * (720 * Delta / Length) / 180)
alpha = gamma - sqrt(gamma * gamma - 1)
xBandpassFilter = 0.5 * (1 - alpha) * (xPrice - xPrice[2]) + beta * (1 + alpha) * nz(xBandpassFilter[1]) - alpha * nz(xBandpassFilter[2])
xMean = sma(xBandpassFilter, 2 * Length)
pos = iff(xMean > Trigger, 1,
	   iff(xMean < Trigger, -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(xMean, color=red, title="ExTrend")

더 많은