엘러스 3극 버터워스 필터 교차 추세 양적 거래 전략

Butterworth Filter TREND FOLLOWING Crossover Signals Divergence Detection TPF TA
생성 날짜: 2025-06-13 14:54:24 마지막으로 수정됨: 2025-06-13 14:54:24
복사: 0 클릭수: 328
avatar of ianzeng123 ianzeng123
2
집중하다
319
수행원

엘러스 3극 버터워스 필터 교차 추세 양적 거래 전략 엘러스 3극 버터워스 필터 교차 추세 양적 거래 전략

개요

Ehlers Triode Batworth 필터 크로스 트렌드 정량 거래 전략은 신호 처리 이론에 기반한 기술 분석 방법이며, John Ehlers의 Triode Batworth 필터 알고리즘을 금융 시장 데이터에 적용한다. 이 전략은 필터로 가격 변동을 평형화하고, 잠재적인 시장 트렌드를 식별하고, 필터 파동 값과 촉발 값 사이의 교차점을 활용하여 거래 신호를 생성한다. 또한, 이 전략은 상식 및 숨겨진 다공간 시장 신호를 포착하고 거래 의사 결정의 정확성을 높이기 위해 분산 검출 장치를 통합한다. 이 전략의 핵심 장점은 시장 소음을 효과적으로 줄이고, 트렌드 식별의 신뢰성을 높이고, 정확한 입구 및 출구 지점을 통해 거래 위험을 제어하는 데 있다.

전략 원칙

Ehlers 삼극 바트워스 필터 크로스 트렌드 양적 거래 전략의 핵심은 독특한 수학 모델에 있다. 바트워스 필터는 신호 처리 분야에서 널리 사용되는 저공용 필터이며, 주요 특징은 광역 내에서 가장 평평한 폭의 주파수 응답이다. 금융 시장에서, 이러한 특성으로 인해 단기 가격 변동을 효과적으로 필터링하고 장기 트렌드 정보를 보존할 수 있다.

이 전략의 실행은 다음과 같은 몇 가지 단계에 기반을 두고 있습니다.

  1. 필터 계산통과:calculateButterworthFilter함수는 삼극 바트워스 필터 값을 계산한다. 이 함수는 수학 공식을 사용하여 원시 가격 데이터를 부드러운 필터 값과 그에 따른 촉발 값으로 변환한다. 필터 계산에는 지수 함수, 삼각형 함수 및 회귀 계산을 포함한 복잡한 수학 연산이 포함된다.

  2. 신호 생성이 전략은 두 가지 방법으로 거래 신호를 생성합니다.

    • 교차 신호: 파값 위에 트리거값을 통과하면, 멀티 신호를 생성한다. 파값 아래에 트리거값을 통과하면, 공백 신호를 생성한다.
    • 분산 검출가격 움직임과 지표 움직임이 일치하지 않는 경우를 식별합니다. 일반적인 스프레드와 숨겨진 스프레드가 포함됩니다. 이는 일반적으로 추세가 뒤집을 수 있음을 나타냅니다.
  3. 거래 실행: 생성된 신호에 따라 적절한 거래 동작을 수행합니다:

    • 다중 신호가 나타나면 전략은 다중 위치로 들어갑니다.
    • 다수점 탈퇴 신호가 발생했을 때, 전략은 다수점 포지션을 청산한다.
    • 하락 신호가 나타나면 전략은 하락 위치로 들어갑니다.
    • 공백으로 빠져나가는 신호가 나타났을 때, 전략은 공백으로 포지션을 청산한다.

코드에서, 정책 사용strategy.entry그리고strategy.close이 함수는 트랜잭션 작업을 수행하고plotshape함수는 그래프에서 거래 신호 지점을 시각화한다.

전략적 이점

Ehlers 삼극 바트워스 필터 크로스 트렌드 양적 거래 전략에는 여러 가지 중요한 장점이 있습니다:

  1. 강력한 노이즈 필터링 능력삼극 바트워스 필터는 탁월한 신호 부드러운 능력을 가지고 있으며, 시장의 단기 변동과 가짜 신호를 효과적으로 필터링하여 거래자가 진정한 시장 동향을 더 쉽게 식별 할 수 있습니다. 코드에서 정확하게 계산 된 계수 ((coef1에서 coef4) 를 통해 이러한 효율적인 필터링을 구현합니다.

  2. 트렌드를 정확히 파악하는 것: 필터와 트리거 라인의 교차는 명확한 트렌드 변화 신호를 제공하여 거래자가 시장 추세의 전환점을 적시에 잡을 수 있습니다.ta.crossover그리고ta.crossunder함수, 전략은 이러한 중요한 교차점을 정확하게 식별한다.

  3. 시각적 직관전략: 차트 상에 다른 색의 선과 채우기 영역을 사용하여, 직관적으로 파동값과 촉발값의 관계를 표시하여, 거래자가 현재 시장 상태를 신속하게 판단할 수 있도록 도와줍니다. 노란색은 상향 경향을 나타내고, 보라색은 하향 경향을 나타냅니다.

  4. 유연하고 조정 가능: 전략은 사용자 정의 가격 입력 및 주기 파라미터의 옵션을 제공하여 거래자가 다른 시장 환경 및 개인 취향에 따라 전략 파라미터를 조정할 수 있습니다.

  5. 완전한 거래 시스템전략은 신호 생성 메커니즘뿐만 아니라 입출장 규칙을 포함한 전체 거래 논리를 통합하여 독립적으로 사용할 수 있는 거래 시스템입니다.

  6. 신호 시각화통과:plotshape함수, 전략은 차트 상에서 구매 및 판매 신호 지점을 표시하여 거래자가 전략 평가 및 최적화를 위해 역사적인 신호 성능을 직관적으로 이해할 수 있도록합니다.

전략적 위험

이글러의 삼극 바트워스 필터 크로스 트렌드 양적 거래 전략은 많은 장점이 있지만 몇 가지 잠재적인 위험이 있습니다.

  1. 지연 위험필터 지표로서, 이 전략에는 필연적으로 약간의 지연성이 있다. 삼극 바트워스 필터는 간단한 이동 평균에 비해 더 낮은 지연성을 가지고 있지만, 빠르게 변화하는 시장에서, 신호는 여전히 이상적인 진입 지점 이후의 경우에 나타날 수 있다. 이 위험을 줄이기 위해, 주기 파라미터를 줄이는 것을 고려할 수 있지만, 이것은 또한 신호의 과민성을 유발할 수 있다.

  2. 잘못된 신호의 위험: 불안정한 시장 또는 명백한 추세가없는 시장 환경에서, 전략은 더 많은 가짜 신호를 생성할 수 있으며, 이로 인해 거래 빈도와 불필요한 수수료 손실이 발생할 수 있습니다. 추가 필터링 조건을 추가하거나 다른 지표와 함께 확인하여 가짜 신호의 위험을 줄일 수 있습니다.

  3. 매개변수 민감도전략 성능은 주기적 매개 변수의 선택에 크게 의존한다. 다른 시장 환경에는 다른 매개 변수 설정이 필요할 수 있으며, 잘못된 매개 변수 선택은 전략의 부실한 성능을 초래할 수 있다.

  4. 단일 지표 위험: 단 하나의 지표에 의존하여 거래 결정을 내리는 것은 특정 시장 환경에서 좋지 않은 결과를 초래할 수 있습니다. 이 전략은 거래 시스템의 일부로 다른 지표 또는 방법과 함께 통합 판단을 수행하는 것이 좋습니다.

  5. 시스템적 위험극한 시장 조건에서, 급격한 변동이나 유동성 소모와 같이, 역사적인 데이터에 기반한 어떤 기술 지표도 무효가 될 수 있습니다. 적절한 위험 제어 조치를 설정하는 것이 좋습니다.

최적화 방향

Ehlers 삼극 Batworth 필터 크로스 트렌드 양적 거래 전략에 대한 심층적인 분석을 바탕으로 다음과 같은 몇 가지 최적화 방향이 있습니다.

  1. 적응형 변수 설계: 현재 전략은 고정된 주기 변수를 사용하며, 시장의 변동성에 따라 주기 변수를 자동으로 조정하는 적응 변수 메커니즘을 구현하는 것을 고려할 수 있습니다. 예를 들어, 가격의 평균 실제 파도 ((ATR) 를 계산하여 주기 변수를 동적으로 조정할 수 있습니다. 높은 변동성 시장에서 짧은 주기, 낮은 변동성 시장에서 긴 주기 사용.

  2. 다주기 확인: 여러 시간 주기의 필터 계산을 도입하고, 다른 시간 주기의 신호 일치성을 확인하여 가짜 신호를 줄이기 위해 다음과 같은 코드를 추가할 수 있습니다:

   [butterLong, triggerLong] = calculateButterworthFilter(priceInput, periodInput * 2)
   longConfirmation = butter > trigger and butterLong > triggerLong
  1. 부수적인 지표: 상대적으로 약한 지수 ((RSI), 무작위 지수 ((Stochastic) 또는 거래량 지수와 같은 다른 기술 지표를 신호 필터로 통합하고 보조 지수가 확인된 경우에만 거래를 수행한다.

  2. 위험 관리 강화: 전략에 동적 중지 및 중지 메커니즘을 추가하여 시장의 변동성에 따라 자동으로 중지 거리를 조정합니다. 또한, 재원 관리 원칙에 기반한 포지션 규모 계산이 가능합니다.

  3. 분산 검사를 최적화: 현재 코드는 분산 검출을 언급하고 있지만 실제 구현에서는 세부적으로 설명되지 않았습니다. 분산 검출 알고리즘을 개선할 수 있으며, 특히 숨겨진 분산의 식별을 통해 신호 품질을 더욱 향상시킬 수 있습니다.

  4. 시장 환경 필터링: 시장 환경을 식별하는 메커니즘을 추가하여 다른 시장 환경에서 다른 거래 규칙을 사용합니다. 예를 들어, 장기간의 트렌드 지표를 사용하여 현재 시장이 트렌드 시장인지 아니면 충격 시장인지 판단하고 그에 따라 거래 전략을 조정할 수 있습니다.

  5. 기계 학습 강화: 분류 알고리즘이나 강도 학습과 같은 기계 학습 방법을 도입하는 것을 고려하여, 매개 변수 선택과 신호 생성 과정을 최적화하고, 전략의 적응력을 향상시킵니다.

요약하다

Ehlers 삼극 바트워스 필터 교차 트렌드를 정량화하는 거래 전략은 신호 처리 이론과 기술 분석을 결합하여 과학적이고 체계적인 시장 트렌드 식별 방법을 제공합니다. 이 전략은 첨단 파동 알고리즘을 통해 시장 소음을 줄이고 가격 트렌드의 중요한 전환점을 포착하여 거래 의사 결정에 대한 객관적이고 측정 가능한 근거를 제공합니다.

전략의 핵심 장점은 강력한 노이즈 필터링 능력과 정확한 트렌드 식별 기능으로 트렌드가 뚜렷한 시장 환경에서 탁월한 성능을 발휘합니다. 동시에, 전략은 시각화된 거래 신호와 유연한 변수 조정 옵션을 제공함으로써 다양한 거래자의 개인화 요구를 충족합니다.

그러나, 모든 기술 지표와 마찬가지로, 이 전략도 지연성, 잘못된 신호, 그리고 변수 민감성 등의 과제에 직면해 있다. 자율적 변수 설계, 다중 주기 확인, 보조 지표 통합과 같은 최적화 조치를 시행함으로써 전략의 안정성과 적응성이 더욱 향상될 수 있다.

최종적으로, Ehlers 삼극 Batworth 필터 크로스 트렌드 양자 거래 전략은 양자 거래자에게 독립적인 거래 시스템으로 사용할 수 있거나 더 복잡한 거래 전략의 구성 요소로 사용할 수 있으며 거래 의사 결정에 귀중한 참고 정보를 제공합니다. 지속적인 최적화 및 개선으로, 이 전략은 다양한 시장 환경에서 안정적이고 지속 가능한 거래 성능을 달성 할 수 있습니다.

전략 소스 코드
/*backtest
start: 2025-01-01 00:00:00
end: 2025-06-12 00:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy("Ehlers Three Pole Butterworth Filter Strategy", overlay=true)

// 输入参数
priceInput = input(hl2, title='Price')
periodInput = input(15, title='Period')

// Function to calculate Ehlers Three Pole Butterworth Filter
calculateButterworthFilter(price, period) =>
    a1 = 0.00
    b1 = 0.00
    c1 = 0.00
    coef1 = 0.00
    coef2 = 0.00
    coef3 = 0.00
    coef4 = 0.00
    butter = 0.00
    trigger = 0.00
    pi = 2 * math.asin(1)

    a1 := math.exp(-3.14159 / period)
    b1 := 2 * a1 * math.cos(1.738 * pi / period)
    c1 := a1 * a1
    coef2 := b1 + c1
    coef3 := -(c1 + b1 * c1)
    coef4 := c1 * c1
    coef1 := (1 - b1 + c1) * (1 - c1) / 8
    butter := coef1 * (price + 3 * nz(price[1]) + 3 * nz(price[2]) + nz(price[3])) + coef2 * nz(butter[1]) + coef3 * nz(butter[2]) + coef4 * nz(butter[3])
    butter := bar_index < 4 ? price : butter
    trigger := nz(butter[1])

    [butter, trigger]

// Calculate filter values
[butter, trigger] = calculateButterworthFilter(priceInput, periodInput)

// 绘制滤波器线
plotButter = plot(butter, 'Butter', color=color.new(color.yellow, 0), linewidth=3)
plotTrigger = plot(trigger, 'Butter Lag', color=color.new(color.fuchsia, 0), linewidth=3)
fill(plotButter, plotTrigger, color=butter > trigger ? color.yellow : color.fuchsia, transp=40)

// 定义交易信号
longCondition = ta.crossover(butter, trigger)
exitLongCondition = ta.crossunder(butter, trigger)
shortCondition = ta.crossunder(butter, trigger)
exitShortCondition = ta.crossover(butter, trigger)

// 执行交易
if (longCondition)
    strategy.entry("Buy", strategy.long)

if (exitLongCondition)
    strategy.close("Buy")

if (shortCondition)
    strategy.entry("Short", strategy.short)

if (exitShortCondition)
    strategy.close("Short")

// 绘制交易信号
plotshape(longCondition, "Buy Signal", shape.triangleup, location.belowbar, color=color.green, size=size.small)
plotshape(exitLongCondition, "Exit Long Signal", shape.triangledown, location.abovebar, color=color.red, size=size.small)
plotshape(shortCondition, "Short Signal", shape.triangledown, location.abovebar, color=color.orange, size=size.small)
plotshape(exitShortCondition, "Exit Short Signal", shape.triangleup, location.belowbar, color=color.blue, size=size.small)