이 전략은 디트렌드 합성 가격 (DSP) 을 기반으로 한 이중 이동 평균 거래 전략이다. DSP는 실제 가격 데이터의 지배적 순환과 맞물리는 함수이며, 쿼터 사이클 EMA에서 반주기 EMA를 빼어내는 것으로 얻는다. DSP가 상위 대 또는 하위 대를 넘을 때 일방적인 거래가 이루어진다.
1/2-사이클 HL 평균 xHL2값을 계산합니다.
xHL2의 1/4 사이클 EMA (xEMA1) 와 1/2-사이클 EMA (xEMA2) 를 길이를 기반으로 계산합니다.
xEMA1에서 xEMA2를 빼서 DSP를 얻습니다.
상단과 하단 대역 매개 변수를 설정하고, DSP가 상단 위에 넘어가면 길게, 하단 아래에 넘어가면 짧게
역변수는 긴 방향과 짧은 방향으로 전환할 수 있습니다.
이 전략의 장점:
DSP는 지배적인 가격 순환을 포착하고, 소규모 순환으로부터 오해를 피합니다.
이중 EMA 디자인은 지배적인 주기 변화를 효과적으로 추적합니다.
간단한 상위/하위 대역은 과잉 거래를 피합니다.
리버스 매개 변수를 사용하여 롱/코트 사이를 쉽게 전환하고, 다른 시장 환경에 적응할 수 있습니다.
복잡한 매개 변수 최적화가 필요없고 간단하고 실용적입니다.
주요 위험:
잘못된 DSP 사이클 설정으로 인해 지배적인 사이클이 빠질 수 있습니다.
대역 폭은 최적화되어야 합니다. 그렇지 않으면 과잉 거래가 발생할 수 있습니다.
고정 사이클 디자인은 시장의 급격한 변화에 적응력이 낮습니다.
DSP에서 거래하는 것만으로도 전략은 위프사 (Whipsaws) 에 취약합니다.
스톱 로스의 부재로 인해 상당한 손실이 발생할 수 있습니다.
개선 사항:
가장 좋은 사이클 조합을 찾기 위해 매개 변수를 최적화합니다.
변동성을 기준으로 동적 대역을 추가합니다.
잘못된 신호를 줄이기 위해 트렌드 및 변동성 필터를 포함합니다.
리스크를 제어하기 위해 스톱 로스 또는 트레일링 스톱 메커니즘을 추가합니다.
보편성을 위해 여러 기기를 통해 테스트합니다.
적응형 DSP 사이클 최적화를 위한 기계 학습을 도입합니다.
전체적으로 이것은 매우 간단하고 실용적인 이중 이동 평균 거래 전략입니다. 그것은 강력한 주기 분석 기초에 기반을 두고 있으며, DSP는 지배적인 주기를 효과적으로 추적합니다. 매개 변수 최적화, 스톱 손실, 필터 조건 및 기타의 정비로 신뢰할 수있는 양적 거래 전략이 될 수 있습니다.
/*backtest start: 2023-09-11 00:00:00 end: 2023-09-13 02:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 //////////////////////////////////////////////////////////// // Copyright by HPotter v1.0 20/03/2017 // 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. // // 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="D_DSP (Detrended Synthetic Price)", shorttitle="D_DSP") Length = input(14, minval=1) SellBand = input(25) BuyBand = input(-25) reverse = input(false, title="Trade reverse") hline(0, color=blue, linestyle=line) hline(SellBand, color=red, linestyle=line) hline(BuyBand, color=green, linestyle=line) xHL2 = hl2 xEMA1 = ema(xHL2, Length) xEMA2 = ema(xHL2, 2 * Length) xEMA1_EMA2 = xEMA1 - xEMA2 pos = iff(xEMA1_EMA2 > SellBand, 1, iff(xEMA1_EMA2 < BuyBand, -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(xEMA1_EMA2, color=blue, title="D_DSP")