이 전략은 가우시안 평형화와 함께 맞춤형 가우시안 디트렌드 가격 오시레이터 (GDPO) 를 사용하여 잠재적 인 가격 반전을 식별하는 전략입니다. 가우시안 평형화와 함께 디트렌드 오시레이터를 사용하여 반전 기회를 포착하기 위해 특정 입출입 규칙을 설정합니다.
이 전략은 먼저 단기 가격 주기를 식별하기 위해 특정 기간 동안 근심 가격을 기하급수적인 이동 평균 (EMA) 과 비교하여 디트렌드 가격 오시레이터 (DPO) 를 계산합니다. DPO 값은 소음을 필터링하기 위해 가우시안 평형 기술로 Arnaud Legoux 이동 평균 (ALMA) 을 사용하여 평평화됩니다.
진입 및 출구 규칙은 평형 GDPO와 그 지연된 버전 사이의 교차 이벤트에 기초하여 정의됩니다. 평형 GDPO가 지연보다 높고 음이 될 때 긴 포지션을 입력합니다. 평형 GDPO가 지연 또는 제로 라인을 넘어서면 긴 포지션은 종료됩니다. 평형 GDPO가 지연 또는 제로 라인을 넘어서면 짧은 포지션은 종료됩니다. 평형 GDPO가 지연 또는 제로 라인을 넘어서면 짧은 포지션은 종료됩니다.
평형 GDPO와 그 지연은 뚜렷한 색상으로 그려져 있다. 제로 라인은 참고로 표시되기도 한다. 전략이 위치로 진입할 때 차트 배경 색상이 바뀐다. 크로스 마커는 출구 신호로 크로스오버 포인트에 그려진다.
이 전략은 다른 오시레이터에 비해 반전 기회를 더 명확하게 식별하기 위해 디트렌딩 기술과 가우스 평형화를 결합한다. GDPO는 디트렌딩과 함께 사이클 분석을 통합함으로써 정확성을 향상시킨다. 가우스 평형화는 더 명확한 신호를 위해 잡음을 제거한다. 특정 입출 규칙은 손실을 효과적으로 제어한다.
이 전략은 기간 길이와 매끄러운 매개 변수와 같은 매개 변수 조정에 민감합니다. 최적의 매개 변수를 결정하려면 광범위한 백테스팅이 필요합니다. 그렇지 않으면 과도한 잘못된 신호가 발생할 수 있습니다. 전략은 트렌딩 시장에서 연속 손실을 초래할 수 있습니다. 단 하나의 거래 손실을 제어하기 위해 스톱 로스를 사용해야합니다. 실패한 반전은 또한 주요 위험입니다. 차트 패턴과 트렌드 강도를 사용하여 반전 확률을 확인해야합니다.
최적화는 매개 변수를 동적으로 조정하고 견고성을 향상시키기 위해 트렌드 지표를 통합하여 수행 할 수 있습니다. 동적 중지 또한 위험을 제어 할 수 있습니다.
이 전략은 몇 가지 측면에서 최적화 될 수 있습니다.
동적으로 평평화 매개 변수를 조정하여 트렌드 평평화를 증가시키고 잘못된 신호를 줄이십시오.
ADX와 같은 트렌드 지표를 포함해서 트렌드 시장에서 손실을 피합니다.
동적 또는 후속 중지와 같은 중지 손실 메커니즘을 추가합니다.
더 높은 입력 정확성을 위해 추가 지표 또는 패턴을 사용하여 입력 조건을 최적화하십시오.
시장 조건에 따라 포지션 사이즈 및 정지 조정으로 자본 관리를 최적화합니다.
매일 또는 주간 데이터와 같은 다른 시간 프레임에 걸쳐 전략을 테스트합니다.
가우시안 억제 리버션 전략은 GDPO를 사용하여 단기 주기를 식별하고 정의된 입출장 규칙에 따라 리버션을 캡처하기 위해 가우시안 필터링으로 신호를 추출합니다. 이는 리버션 거래의 위험을 효과적으로 제어하지만 매개 변수 최적화 및 트렌드 검증을 필요로합니다. 역동적 조정, 인디케이터 확인 및 스톱 로스 전략을 통해 탄력성을 더 향상시킬 수 있습니다.
/*backtest start: 2022-10-31 00:00:00 end: 2023-11-06 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 // © DraftVenture //@version=5 strategy(title="Gaussian Detrended Reversion Strategy", overlay=false, default_qty_type=strategy.percent_of_equity, default_qty_value=15) //Detrended Price Oscillator for price cycles period_ = input.int(50, title="Price Length", minval=1) barsback = period_/2 + 1 ma = ta.ema(close, period_) dpo = close - ma[barsback] // Rounded ALMA Calculations for gaussian smoothing almaSource = dpo almaWindowSize = input(title="Smoothing Length", defval=50) lagLength = input(title="Lag Length", defval=25) almaSmoothed = ta.alma(almaSource, almaWindowSize, 0.85, 6) almaLag = almaSmoothed[lagLength] // Reversion entry conditions entryL = ta.crossover(almaSmoothed, almaLag) and almaSmoothed < 0 exitL = ta.crossunder(almaSmoothed, almaLag) or ta.crossunder(almaSmoothed, 0) entryS = ta.crossunder(almaSmoothed, almaLag) and almaSmoothed > 0 exitS = ta.crossover(almaSmoothed, almaLag) or ta.crossover(almaSmoothed, 0) // Long entry and exit if entryL strategy.entry("Long", strategy.long) if exitL strategy.close("Long") // Short entry and exit if entryS strategy.entry("Short", strategy.short) if exitS strategy.close("Short") // Plot the oscillator plot(almaSmoothed, title="GDPO", color=color.green) plot(almaLag, title="Lag", color=color.white) hline(0, title="Zero Line", color=color.white) bgcolor(entryL ? color.new(color.green, 40) : na) bgcolor(entryS ? color.new(color.red, 40) : na) plotshape(series=ta.crossunder(almaSmoothed, almaLag) or ta.crossunder(almaSmoothed, 0), style=shape.xcross, location=location.top, color=color.white, size=size.tiny) plotshape(series=ta.crossover(almaSmoothed, almaLag) or ta.crossover(almaSmoothed, 0), style=shape.xcross, location=location.bottom, color=color.white, size=size.tiny) //Strategy by KP