EVWMA 기반 MACD 거래 전략


생성 날짜: 2024-01-22 10:50:25 마지막으로 수정됨: 2024-01-22 10:50:25
복사: 0 클릭수: 618
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

EVWMA 기반 MACD 거래 전략

개요

이 전략은 탄력적인 거래량 가중 이동 평균 (EVWMA) 에 기반한 MACD 거래 전략이다. 이 전략은 EVWMA의 장점을 활용하여 거래 신호가 명확하고 실용적인 전략을 설계한다.

전략 원칙

EVWMA 지표는 거래량 정보를 이동 평균 계산에 통합하여 이동 평균이 가격 변화를 더 정확하게 반영할 수 있도록합니다. 이 전략은 빠른 라인을 구축하고 느린 라인의 계산은 모두 EVWMA를 기반으로 구현됩니다. 빠른 라인의 파라미터 설정은 더 민감하여 단기 가격 변화를 캡처 할 수 있습니다. 느린 라인 파라미터 설정은 더 안정적이며 일부 잡음을 필터링 할 수 있습니다. 두 개의 EVWMA가 형성된 MACD를 교차하여 다중 공백을 만들고, 디자인 히스토그램은 시각적으로 더 나은 거래 지시를 제공합니다.

우위 분석

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

위험 분석

이 전략의 주요 위험은 MACD 자체에 약간의 지연이 존재하고 가격 반전을 적시에 잡을 수 없다는 것입니다. 또한, EVWMA의 매개 변수 설정은 전략의 성과에도 영향을 미칩니다. 빠른 느린 라인 매개 변수가 적절하지 않으면 거래 신호가 잘못 설정되어 수익성에 영향을 미칩니다.

위험을 줄이기 위해 패러미터를 적절히 조정하여 빠른 라인과 느린 라인의 간격이 적당하도록 하되, 히스토그램은 조정할 필요가 있는지 판단하는 데 도움을 줄 수 있다. 또한, 단독 손실이 너무 크지 않도록 손해 중지 전략을 설계할 수 있다.

최적화 방향

이 전략은 다음의 몇 가지 측면에서 최적화될 수 있습니다.

  1. 적응형 변수 설정 기술을 사용하여 EVWMA의 변수가 시장 환경에 따라 자동으로 조정되어 거래 신호의 명확성을 보장합니다.

  2. 단독 손실을 효과적으로 통제할 수 있는 손해 방지 장치를 추가한다.

  3. 다른 지표와 함께 필터링 잘못된 신호. 예를 들어, 합성 거래량과 함께, 큰 가격 변화가 있을 때만 신호가 발생한다.

  4. 입점 선택 최적화. 현재 전략은 MACD 0축이 교차할 때 포즈를 취하는 것이다. 깊이 당기는 방식이 더 적합한지 테스트할 수 있다.

요약하다

이 전략은 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))