Triple EMA와 Fisher가 트렌드 모멘텀 전략을 변형하다

TEMA EMA Fisher Transform Zero Line SMA
생성 날짜: 2025-02-20 17:41:02 마지막으로 수정됨: 2025-02-20 17:41:02
복사: 2 클릭수: 415
avatar of ianzeng123 ianzeng123
2
집중하다
319
수행원

Triple EMA와 Fisher가 트렌드 모멘텀 전략을 변형하다 Triple EMA와 Fisher가 트렌드 모멘텀 전략을 변형하다

개요

이 전략은 트리플 인덱스 이동 평균 (TEMA) 과 피셔 트랜스폼 (Fisher Transform) 을 결합하여 트렌드 및 동력 신호를 식별하여 진입 및 출퇴근 시간을 결정한다. TEMA는 낮은 지연의 트렌드 추적 지표로서 시장의 트렌드 방향을 효과적으로 식별 할 수 있으며, 피셔 트랜스폼은 가격 변화를 고스 정형 분포로 변환하여 더 명확한 동력 신호를 제공합니다. 전략은 트렌드 추적과 동력 분석의 장점을 결합하여 거래 촉발 조건으로 교차 신호를 사용합니다.

전략 원칙

이 전략의 핵심 논리는 두 가지 주요 지표에 기초하고 있습니다.

  1. TEMA 지표는 삼중 지수 이동 평균 계산 방법을 사용하여 “3×EMA - 3×EMA ((EMA) + EMA ((EMA)) “의 공식으로 전통적인 이동 평균의 지연성을 감소시키고, 기본 주기는 21이다.
  2. 피셔 변환 지표는 가격 데이터를 정형 분포로 변환하고, 기본 변수는 10이며, 높은 낮은 가격에 대한 표준화 처리를 한 후 대수변형을 적용하여 신호를 더 명확하게 만든다.

거래 규칙은 다음과 같습니다.

  • 다중 조건: 가격의 TEMA 선과 Fisher Transform의 0 축을 가로질러
  • 공백 조건: 가격 아래 TEMA 라인을 통과하고 Fisher Transform 아래 0 축을 통과
  • 다중 출전: 가격 아래 TEMA 라인을 통과하거나 Fisher Transform 아래 0 축을 통과
  • 공짜 티켓 출장: 가격 위에 TEMA 라인 또는 Fisher Transform 위에 0 축을 뚫고

전략적 이점

  1. 신호 신뢰성: 트렌드 및 동력 지표를 결합하여 가짜 신호를 효과적으로 필터링 할 수 있습니다.
  2. 낮은 지연성: TEMA는 전통적인 이동 평균보다 더 빠른 응답 속도를 가지고 있다.
  3. 신호 명확성: 피셔 변환의 정형 분포 특성은 거래 신호를 더 명확하게 만듭니다.
  4. 리스크 관리가 완벽합니다. 명확한 스톱 로즈 조건이 설정됩니다.
  5. 매개 변수 조정 가능: 다른 시장 환경에 따라 지표 매개 변수를 조정할 수 있습니다.
  6. 그래프의 명확한 표현을 제공하는 시각화 효과

전략적 위험

  1. 변동성이 큰 시장의 위험: 횡보 시장에서는 거짓 돌파 신호가 자주 발생할 수 있습니다.
  2. 뒤처짐 위험: TEMA가 뒤처짐을 줄였음에도 불구하고 다소 지연이 남아 있습니다.
  3. 매개변수 민감도: 매개변수 설정이 다르면 전략 성능에 큰 차이가 생길 수 있습니다.
  4. 시장 환경 의존성: 전략이 트렌드가 뚜렷한 시장에서 더 잘 작동한다

전략 최적화 방향

  1. 변동율 필터를 도입: ATR 지표 필터를 추가할 수 있는 낮은 변동율 환경에서의 거래 신호
  2. 최적화 출전 메커니즘: 이동식 중지 또는 이익 보호 메커니즘을 포함할 수 있습니다.
  3. 시간 필터를 추가: 다른 기간의 시장 특성에 따라 거래 전략을 조정할 수 있습니다.
  4. 트랜지먼트 확인을 추가: 합성 트랜지먼트 지표가 신호 신뢰성을 높인다
  5. 동적 변수 최적화: 시장 상태에 따라 동적으로 지표 변수를 조정

요약하다

이것은 트렌드 및 동력 분석을 결합한 완전한 거래 전략이며, TEMA와 Fisher Transform의 결합된 사용으로 트렌드 추적 능력을 보장하고 명확한 동력 확인 신호를 제공합니다. 전략은 합리적으로 설계되어 있으며, 실용성이 좋습니다. 그러나 실제 응용에서는 시장 환경에 대한 적응성에 주의를 기울이고 특정 상황에 따라 매개 변수를 최적화해야합니다. 제안된 최적화 방향을 통해 전략의 안정성과 신뢰성이 더욱 향상 될 수 있습니다.

전략 소스 코드
/*backtest
start: 2024-02-21 00:00:00
end: 2025-02-19 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy("Triple EMA (TEMA) + Fisher Transform Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// ==== Triple EMA (TEMA) Settings ====
temaLength = input.int(21, title="TEMA Length", minval=1)

// Implementácia Triple EMA (TEMA)
// TEMA = 3 * EMA(close, length) - 3 * EMA(EMA(close, length), length) + EMA(EMA(EMA(close, length), length), length)
ema1 = ta.ema(close, temaLength)
ema2 = ta.ema(ema1, temaLength)
ema3 = ta.ema(ema2, temaLength)
tema = 3 * ema1 - 3 * ema2 + ema3
plot(tema, color=color.blue, title="TEMA")

// ==== Fisher Transform Settings ====
fisherLength = input.int(10, title="Fisher Length", minval=1)
fisherSmooth = input.int(1, title="Fisher Smoothing", minval=1)  // Zvyčajne sa používa 1 alebo 2

// Výpočet Fisher Transform
// Krok 1: Normalizácia ceny
price = (high + low) / 2
maxPrice = ta.highest(price, fisherLength)
minPrice = ta.lowest(price, fisherLength)
value = 0.5 * (2 * ((price - minPrice) / (maxPrice - minPrice)) - 1)
value := math.min(math.max(value, -0.999), 0.999)  // Orezanie hodnoty pre stabilitu

// Krok 2: Výpočet Fisher Transform
var float fisher = na
fisher := 0.5 * math.log((1 + value) / (1 - value)) + 0.5 * nz(fisher[1])
fisher := fisherSmooth > 1 ? ta.sma(fisher, fisherSmooth) : fisher
plot(fisher, color=color.red, title="Fisher Transform", linewidth=2)

// ==== Strategie Podmienky ====
 // Long Condition: Cena prekročí TEMA smerom nahor a Fisher Transform prekročí 0 smerom nahor
longCondition = ta.crossover(close, tema) and ta.crossover(fisher, 0)
if (longCondition)
    strategy.entry("Long", strategy.long)

 // Short Condition: Cena prekročí TEMA smerom nadol a Fisher Transform prekročí 0 smerom nadol
shortCondition = ta.crossunder(close, tema) and ta.crossunder(fisher, 0)
if (shortCondition)
    strategy.entry("Short", strategy.short)

// Exit Long Condition: Cena prekročí TEMA smerom nadol alebo Fisher Transform prekročí 0 smerom nadol
exitLong = ta.crossunder(close, tema) or ta.crossunder(fisher, 0)
if (exitLong)
    strategy.close("Long")

// Exit Short Condition: Cena prekročí TEMA smerom nahor alebo Fisher Transform prekročí 0 smerom nahor
exitShort = ta.crossover(close, tema) or ta.crossover(fisher, 0)
if (exitShort)
    strategy.close("Short")

// ==== Voliteľné: Vykreslenie Zero Line pre Fisher Transform ====
hline(0, "Zero Line", color=color.gray, linestyle=hline.style_dotted)