EVWMA 기반의 MACD 거래 전략

저자:차오장, 날짜: 2024-01-22 10:50:25
태그:

img

전반적인 설명

이 전략은 탄력적인 볼륨 가중화 이동 평균 (Elastic Volume Weighted Moving Average, EVWMA) 을 기반으로 한 MACD 거래 전략입니다. EVWMA의 장점을 활용하여 명확한 거래 신호와 강력한 실용성을 가진 전략을 설계합니다.

원칙

EVWMA 지표는 이동 평균의 계산에 볼륨 정보를 통합하여 이동 평균이 가격 변화를 보다 정확하게 반영할 수 있습니다. 이 전략의 빠른 라인과 느린 라인의 계산은 모두 EVWMA를 기반으로합니다. 빠른 라인의 매개 변수 설정은 단기 가격 변동을 캡처하는 데 더 민감합니다. 느린 라인의 매개 변수 설정은 약간의 소음을 필터링하는 데 더 강력합니다. 두 EVWMA에 의해 형성된 MACD는 크로스오버에서 길고 짧은 신호를 유발하며 히스토그램은 시각적으로 향상된 거래 요청을 제공합니다.

이점 분석

이 전략의 가장 큰 장점은 EVWMA 지표의 힘을 활용함으로써 MACD 전략의 매개 변수 설정이 더 안정되고 거래 신호가 더 명확해지는 것입니다. 간단한 이동 평균에 비해 EVWMA는 시장 트렌드 변화를 더 잘 파악 할 수 있습니다. 이것은 전략을 다양한 시장 환경에서 안정적으로 작동하도록 더 적응 할 수 있습니다.

위험 분석

이 전략의 주요 위험은 MACD 자체는 일정 지연을 가지고 있으며 가격 반전을 신속하게 파악할 수 없다는 것입니다. 또한 EVWMA의 매개 변수 설정은 전략 성능에도 영향을 미칩니다. 빠른 및 느린 라인 매개 변수가 올바르게 설정되지 않으면 거래 신호가 혼란스럽고 수익성에 영향을 미칩니다.

위험을 완화하기 위해 매개 변수를 적절하게 조정하여 빠른 라인과 느린 라인 사이의 차이는 적당하다. 히스토그램은 매개 변수 조정이 필요한지 판단하는 데 도움이 될 수 있습니다. 또한 과도하게 큰 단일 손실을 피하기 위해 스톱 로스 전략도 설계 할 수 있습니다.

최적화 방향

이 전략을 최적화하는 주요 측면은 다음과 같습니다.

  1. 적응적 파라미터 설정 기술을 사용하여 신호의 명확성을 보장하기 위해 시장 조건에 따라 EVWMA 파라미터를 자동으로 조정합니다.

  2. 단일 손실을 효과적으로 통제하기 위해 스톱 로스 메커니즘을 강화하십시오.

  3. 잘못된 신호를 필터링하기 위해 다른 지표를 포함하십시오. 예를 들어, 크기와 결합하여 중요한 가격 변화 시 신호를 유발하십시오.

  4. 엔트리 포인트 선택을 최적화. 현재 전략은 MACD 제로 라인 크로스오버에 포지션을 개설합니다. 분리를 사용하여 더 잘 수행하는지 테스트 할 수 있습니다.

결론

이 전략은 EVWMA 지표의 장점을 활용하여 간단하고 실용적인 MACD 전략을 구축합니다. 더 나은 안정성과 적응력을 가지고 있습니다. 동시에 MACD에 내재된 지연 문제도 있습니다. 우리는 적응적 매개 변수 최적화, 스톱 로스 디자인, 신호 필터링 및 기타 측면을 통해 전략의 견고성을 향상시킬 수 있습니다.


/*backtest
start: 2023-01-15 00:00:00
end: 2024-01-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("QuantNomad - EVWMA MACD Strategy", shorttitle = "EVWMA MACD", overlay = false)

// Inputs
fast_sum_length = input(10, title = "Fast Sum Length",  type = input.integer)
slow_sum_length = input(20, title = "Slow Sum Length",  type = input.integer)
signal_length   = input(9,  title = "Signal Smoothing", type = input.integer, minval = 1, maxval = 50)

// Calculate Volume Period
fast_vol_period = sum(volume, fast_sum_length)
slow_vol_period = sum(volume, slow_sum_length)

// Calculate EVWMA
fast_evwma = 0.0
fast_evwma := ((fast_vol_period - volume) * nz(fast_evwma[1], close) + volume * close) / (fast_vol_period)

// Calculate EVWMA
slow_evwma = 0.0
slow_evwma := ((slow_vol_period - volume) * nz(slow_evwma[1], close) + volume * close) / (slow_vol_period)

// Calculate MACD
macd   = fast_evwma - slow_evwma
signal = ema(macd, signal_length)
hist   = macd - signal

// Plot 
plot(hist,   title = "Histogram", style = plot.style_columns, color=(hist>=0 ? (hist[1] < hist ? #26A69A : #B2DFDB) : (hist[1] < hist ? #FFCDD2 : #EF5350) ), transp=0 )
plot(macd,   title = "MACD",      color = #0094ff, transp=0)
plot(signal, title = "Signal",    color = #ff6a00, transp=0)

// Strategy
strategy.entry("Long",   true, when = crossover(fast_evwma, slow_evwma))
strategy.entry("Short", false, when = crossunder(fast_evwma, slow_evwma))

더 많은