제로 래그 헐 EMA 조합 추세 추종 전략


생성 날짜: 2023-09-19 16:52:39 마지막으로 수정됨: 2023-09-19 16:53:31
복사: 1 클릭수: 786
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

개요

이 전략은 0시간 지연 EMA와 Hull EMA의 조합을 사용하여 트렌드 추적을 수행합니다. 0시간 지연 EMA는 일반 EMA의 지연을 제거하고, Hull EMA는 가격 곡선을 평평하게합니다. 둘의 조합은 트렌드 움직임을 더 정확하게 포착하여 낮은 위험의 트렌드 추적 거래를 수행합니다.

전략 원칙

먼저 0시간 지연 EMA를 계산해 봅시다. EMA1 = ema(close, Period) EMA2 = ema(EMA1, Period) Difference = EMA1 - EMA2 ZeroLagEMA = EMA1 + Difference

그 중, ZeroLagEMA는 제로 시간 지연 EMA이다. 그것은 일반 EMA의 지연 문제를 제거한다.

그리고 Hull EMA를 평형한 후의 곡선을 계산합니다: n2ma = 2*wma(ZeroLagEMA, round(S_period/2)) nma = wma(ZeroLagEMA, S_period) n1 = wma(n2ma - nma, sqn)

마지막으로 현재의 Hull EMA (n1) 와 전주기 Hull EMA (n2) 의 크기와 관계를 계산하고, 트렌드 방향을 판단하고, 거래 전략을 수립한다.

우위 분석

이 전략의 가장 큰 장점은 트렌드 방향을 정확하게 잡을 수 있다는 것입니다.

  1. 제로 시간 지연 EMA는 일반 EMA의 지연 문제를 제거하여 가격 변화를 더 빠르게 캡처 할 수 있습니다.

  2. Hull EMA는 가격에 대해 이중 평준화하여 잡음을 필터링하여 캡처 트렌드가 더 명확합니다.

EMA 또는 Hull EMA를 개별적으로 사용하는 것보다, 둘의 조합은 각각의 장점을 발휘하여 전략을 더 정확하고 신뢰할 수 있습니다.

위험 분석

이 전략에는 다음과 같은 위험들이 있습니다.

  1. Period 및 S_period 파라미터가 잘못 설정되어 있어 전략이 시장 반응에 민감하지 않아 거래 시간을 놓칠 수 있다.

  2. 진동상태에서, EMA와 Hull EMA는 교차신호를 더 많이 생성할 수 있으며, 주의해야 하는 가짜 돌파가 필요하다.

  3. 이 경우, 가격 상승이 하루아침에 급격하게 증가하는 것을 효과적으로 처리할 수 없습니다.

따라서, 신중하게 파라미터 설정을 테스트하고, 지표 신호를 조심스럽게 보고, 가격 폭등의 위험을 방지할 필요가 있다.

최적화 방향

이 전략은 다음과 같은 측면에서 최적화될 수 있습니다.

  1. 다양한 시장에서 다양한 주기에서 변수 최적화 조합을 테스트하여 다양한 상황에 대한 전략이 더 잘 적응되도록합니다.

  2. KDJ, MACD 등과 같은 다른 지표의 필터링 가짜 브레이크 신호와 결합하여 전략의 안정성을 높인다.

  3. 단편적 손실을 통제하기 위해 손실을 막는 전략을 추가하십시오.

  4. 진입 타이밍을 최적화하여 전략의 승률을 더욱 향상시킵니다. 예를 들어, 트렌드 방향과 결합하여 역동적인 포지션을 피하십시오.

요약하다

이 전략은 0 시간 지연 후의 Hull EMA의 조합을 사용하여 시장 추세를 정확하고 민감하게 캡처하여 낮은 위험 방식으로 트렌드 추적 거래를 수행합니다. 변수 최적화, 지표 필터링, 스톱 로스 등의 방법으로 전략의 안정성을 더욱 향상시킬 수 있습니다.

전략 소스 코드
/*backtest
start: 2023-08-19 00:00:00
end: 2023-09-18 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
// Zero Lag EMA combined with Hull moving average for smoothing purposes.
// author: email: [email protected]

strategy("Ujanja", overlay=true)



Period = input(title="Period",defval=30, minval=1)
S_period=input(title="Smoother Period",defval=176)
EMA1= ema(close,Period)
EMA2= ema(EMA1,Period)
Difference= EMA1 - EMA2
ZeroLagEMA= EMA1 + Difference

n2ma=2*wma(ZeroLagEMA,round(S_period/2))
nma=wma(ZeroLagEMA,S_period)
diff=n2ma-nma
sqn=round(sqrt(S_period))


n2ma1=2*wma(ZeroLagEMA[1],round(S_period/2))
nma1=wma(ZeroLagEMA[1],S_period)
diff1=n2ma1-nma1
sqn1=round(sqrt(S_period))


n1=wma(diff,sqn)
n2=wma(diff1,sqn)

c=n1>n2?green:red
ma=plot(n1,color=c)


longCondition = n1>n2
if (longCondition)
    strategy.entry("Long", strategy.long)

shortCondition = longCondition != true
if (shortCondition)
    strategy.entry("Short", strategy.short)