대역 통과 필터링 추세 추출 전략


생성 날짜: 2024-01-03 15:22:49 마지막으로 수정됨: 2024-01-03 15:22:49
복사: 0 클릭수: 641
avatar of ChaoZhang ChaoZhang
1
집중하다
1621
수행원

대역 통과 필터링 추세 추출 전략

개요

유동파동 추출 전략은 유동파동 필러를 기반으로 한 주식 추세를 추적하는 전략이다. 이 전략은 지수 가중 이동 평균과 유동파동을 사용하여 가격 순서 처리를 하여 가격의 유동 성분을 추출하고, 특정 파라미터를 사용하여 포지션 평화 포지션의 신호로 한다.

전략 원칙

이 전략은 먼저 이중 지수 가중 이동 평균을 구성하고, 변수 Length와 Delta를 조정하여 이동 평균의 시간 길이를 조절하고, 슬라이드를 조절한다. 그 다음, 일련의 수학적 변환을 사용하여, 가격 서열의 트렌드 성분을 추출하고, xBandpassFilter 변수에 저장한다. 마지막으로, xBandpassFilter의 간단한 이동 평균 xMean을 계산하여, 포지션 구축과 포지션의 지표로 사용한다.

xMean 상에서 패러미트 트리거가 설정된 레벨을 통과할 때 다중을 하고, 현재 통과할 때 공백을 한다. 트리거 레벨을 조정함으로써 창고 및 창고의 민감도를 제어할 수 있다.

우위 분석

  1. 이중 지수 가중 이동 평균을 사용하면 가격 서열의 일부 잡음을 효과적으로 제거하여 전략을 더 안정적으로 만듭니다.
  2. 관통 필터는 가격 서열의 트렌드 구성 요소만을 추출하고, 충격적 행태에 의해 오도되는 것을 피하여 전략을 더 안정적이고 신뢰할 수 있게 만든다.
  3. 전략적 요소가 적어 위험도 조절이 쉬워집니다.

위험 분석

  1. 이 전략은 시간이 지남에 따라 가격이 빠르게 변하는 기회를 놓칠 수 있습니다.
  2. 이중 지수 가중 이동 평균과带通波器은 낮은 波 효과를 가지고 있으며, 고주파 신호를 필터링하여 전략의 감수성을 떨어뜨린다.
  3. 만약 변수가 잘못 설정되면, 필터링 효과가 너무 강하여, 강력한 트렌드 기회를 놓칠 수 있다.

적절하게 Length 변수를 줄임으로써 지연 문제를 개선할 수 있으며, Trigger 레벨 제어 전략의 민감성을 조정할 수 있다.

최적화 방향

  1. 단편적 손실을 제어하는 Stop Loss 전략이 고려될 수 있습니다.
  2. 전략의 안정성을 개선할 수 있는 단기 및 장기적인 쌍방향 시스템.
  3. 시장 거래량과 같은 다른 지표와 결합하여 역전 신호를 판단하여, 격동 상황에서 갇히지 않도록 할 수 있다.
  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")