이 전략은 트렌드 다음을 구현하기 위해 제로 라그 EMA와 헐 EMA의 조합을 사용합니다. 제로 라그 EMA는 일반 EMA의 지연을 제거하고 헐 EMA는 가격 곡선을 매끄럽게합니다. 이들의 조합은 거래 후 낮은 위험 트렌드에 대한 트렌드 움직임을 더 정확하게 포착 할 수 있습니다.
먼저 제로 레이그 EMA를 계산합니다.EMA1 = ema(close, Period) EMA2 = ema(EMA1, Period) Difference = EMA1 - EMA2 ZeroLagEMA = EMA1 + Difference
ZeroLagEMA는 Zero Lag 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) 사이의 크기 관계에 기초하여 트렌드 방향을 결정하고 거래 전략을 수립하십시오.
이 전략의 가장 큰 장점은 트렌드 방향을 정확하게 파악하는 능력입니다. 두 가지 이유가 있습니다.
제로 레이그 EMA는 일반 EMA의 레이그 문제를 제거하고 가격 변화를 더 빨리 파악할 수 있습니다.
Hull EMA가 두 배로 증가하면 가격이 부드럽고, 트렌드를 더 명확하게 파악할 수 있는 소음을 필터링할 수 있습니다.
EMA 또는 Hull EMA를 단독으로 사용하는 것과 비교하면 더 정확하고 신뢰할 수있는 전략을 위해 두 가지의 강점을 활용합니다.
이 전략의 주요 위험은 다음과 같습니다.
부적절한 기간 및 S_period 매개 변수 설정은 전략이 시장에 민감하지 않아 거래 기회를 놓칠 수 있습니다.
유행 시장에서 EMA와 Hull EMA는 더 많은 잘못된 크로스오버 신호를 생성할 수 있어 주의가 필요합니다.
그것은 하루간의 가격 격차를 효과적으로 처리 할 수 없습니다.
따라서 신중한 매개 변수 테스트가 필요하고, 지표 신호는 신중하게 해석되어야 하며, 가격 격차 위험을 경계해야 합니다.
이 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.
더 나은 적응력을 위해 다른 시장과 시간 프레임에서 매개 변수 조합을 테스트하십시오.
안정성을 높이기 위해 KDJ, MACD 등과 같은 잘못된 브레이크오웃 신호를 필터링하는 다른 지표를 추가합니다.
단일 트레이드 손실을 제어하기 위해 스톱 로스를 추가합니다.
진입 시기를 최적화하여 승률을 더욱 향상시킵니다. 예를 들어 트렌드에 반대하는 거래를 피합니다.
이 전략은 거래 후 낮은 위험 트렌드에 대한 시장 추세를 정확하고 민감하게 파악하기 위해 제로 래그 헐 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: sbginter@gmail.com 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)