이중 메커니즘 동적 트렌드 추적 전략

저자:차오장, 날짜: 2024-01-31 11:13:44
태그:

img

전반적인 설명

이중 메커니즘 동적 트렌드 추적 전략은 트렌드를 추적하기 위해 두 가지 다른 거래 전략의 신호를 결합합니다. 먼저 123 역전 전략을 사용하여 가격 역전 지점을 식별하고, 그 다음 유도 합성 가격 (D_DSP) 인덱스를 사용하여 가격 트렌드 방향을 결정하고, 마지막으로 두 신호를 결합하여 거래 신호를 생성합니다.

이 전략은 주로 중장기 트렌드 추적을 위해 사용됩니다. 이중 메커니즘을 통해 동적 인 스톱-러스 포인트를 설정함으로써 수익을 효과적으로 차단하고 손실이 확대되는 것을 방지 할 수 있습니다. 한편, 이중 확인을위한 트렌드 및 역전 지표를 결합하면 소란스러운 거래를 줄이는 데 도움이됩니다.

전략 논리

123 역전 전략

123 역전 전략은 울프 젠슨의 책?? 미래 시장에서 내 돈을 세 배로 늘린 방법?? 의 183 페이지에서 유래합니다. 두 개의 연속 역전 바를 사용하여 가격 역전 패턴을 식별합니다.

특히, 닫기 가격이 2 일 연속으로 이전 닫기보다 높고 9 일 느린 스토카스틱 오시레이터가 50 이하일 때 구매 신호를 생성합니다. 닫기 가격이 2 일 연속으로 이전 닫기보다 낮고 빠른 스토카스틱 오시레이터가 50 이상일 때 판매 신호를 생성합니다.

감축된 합성 가격 지수

디트렌드 합성 가격 (D_DSP) 인덱스는 가격 트렌드 방향을 나타내고 실제 가격 데이터의 지배적인 주기와 일치합니다. D_DSP는 가격의 분기 주기의 EMA에서 반주기 지수 이동 평균 (EMA) 을 빼어 계산됩니다.

만약 D_DSP가 긍정적이면 상승 추세를 나타냅니다. 만약 부정적이면 하락 추세를 나타냅니다.

이중 메커니즘

이 전략은 123 리버스 전략과 D_DSP 지수 신호를 결합합니다. 두 신호가 일치하면 (장 또는 짧은 양쪽), 거래가 생성됩니다. 신호가 일치하지 않으면 포지션이 종료됩니다.

이 이중 확인은 잡음을 필터링하고 트렌드 수익을 차단합니다.

장점

이 전략의 가장 큰 장점은 이 전략이 구현하는 두 가지 수준의 스톱 로스입니다. 첫째, 빠르고 느린 스토카스틱은 시간별로 스톱 로스를 형성합니다. 둘째, 역전 전략 자체는 스톱 로스 기능을 포함합니다.

두 개의 스톱 손실은 수익 잠금을 극대화하고 단일 스톱 손실 전략에서 크로스 오버 손실을 방지합니다. 또한 이중 확인은 주류가 아닌 가격 변화에서 잘못된 신호를 피합니다.

위험성

가장 큰 위험은 변수 설정이 유연하지 않기 때문입니다. 예를 들어, 잘못된 주기 길이는 주요 트렌드를 놓치고 수익을 잃고 손실을 증가시킬 수 있습니다. 너무 딱딱한 이중 확인은 또한 적시에 중단 손실을 놓칠 수 있습니다.

또한, 역전 및 트렌드 전략을 결합할 때, 신호가 일치하지 않을 때 클리어 포지션은 트렌드가 하나의 주류 방향으로 계속될 때 기회를 놓칠 수 있습니다.

최적화

이 전략은 여러 가지 방법으로 최적화 될 수 있습니다.

  1. 최적 값을 찾기 위해 더 많은 백테스팅 데이터를 사용하여 사이클 매개 변수를 최적화합니다.

  2. 더 역동적이고 합리적인 스톱 로스 포인트를 설정하기 위해 브레이크오웃이나 트레일링 스톱 로스 같은 더 많은 스톱 로스 전략을 추가합니다.

  3. 이중 확인 규칙을 잘 조정해서 오버 클리어팅을 방지해

  4. 변동성 필터와 같은 필터를 추가하여 후기 트렌드 변동성으로 인한 잘못된 판단을 피합니다.

결론

이중 메커니즘 동적 트렌드 추적 전략은 빠른 및 느린 스토카스틱의 이중 스톱 손실과 역전 및 트렌드 신호의 이중 확인을 통해 효과적인 트렌드 추적 및 위험 통제를 구현합니다. 가격 행동의 시간 차원뿐만 아니라 방향 자체를 다차원적 인 결정 기반을 형성하도록 고려합니다.

규칙과 매개 변수의 지속적인 최적화는 좋은 결과를 가져올 것으로 예상된다. 그러나 전략 최적화는 많은 양의 역사적 데이터를 필요로 한다. 주식 선택 필터와 스톱 로스 메커니즘 또한 지속적인 정리가 필요하다. 전략을 더 검증하기 위해 일정 기간 동안 실시간 추적이 권장된다.


/*backtest
start: 2023-12-31 00:00:00
end: 2024-01-30 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 18/11/2019
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The 
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close 
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. 
// The strategy sells at market, if close price is lower than the previous close price 
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
// Detrended Synthetic Price is a function that is in phase with the 
// dominant cycle of real price data. This DSP is computed by subtracting 
// a half-cycle exponential moving average (EMA) from the quarter cycle 
// exponential moving average.
// See "MESA and Trading Market Cycles" by John Ehlers pages 64 - 70. 
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
    vFast = sma(stoch(close, high, low, Length), KSmoothing) 
    vSlow = sma(vFast, DLength)
    pos = 0.0
    pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
	         iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) 
	pos

D_DSP(Length) =>
    pos = 0.0
    xHL2 = hl2
    xEMA1 = ema(xHL2, Length)
    xEMA2 = ema(xHL2, 2 * Length)
    xEMA1_EMA2 = xEMA1 - xEMA2
    pos := iff(xEMA1_EMA2 > 0, 1,
             iff(xEMA1_EMA2 < 0, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & D_DSP (Detrended Synthetic Price)", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LengthDSP = input(14, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posD_DSP = D_DSP(LengthDSP)
pos = iff(posReversal123 == 1 and posD_DSP == 1 , 1,
	   iff(posReversal123 == -1 and posD_DSP == -1, -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)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )

더 많은