EMA 및 MACD 양적 전략 두 개의 트랙을 실행하고 시장 지수를 주도합니다.

저자:차오장, 날짜: 2023-12-12 12:13:25
태그:

img

전반적인 설명

이 전략은 주로 EMA 이동 평균 라인과 MACD 지표를 사용하여 시장 패턴의 변화를 결정하고 추진력 거래 전략을 수행합니다. 핵심 아이디어는 단기 EMA 라인이 장기 EMA 라인을 넘고 MACD가 동시에 0을 넘을 때 길게 이동하고 단기 EMA가 장기 EMA를 넘고 MACD가 동시에 0을 넘을 때 짧게 이동하는 것입니다.

원칙

이 전략은 이동 평균 라인 지표와 MACD 지표를 통합합니다.

먼저, 그것은 서로 다른 주기의 길이를 가진 두 개의 EMA 지표를 사용합니다. 하나는 25 주기의 EMA 라인이고 다른 하나는 50 주기의 EMA 라인입니다. 25 주기의 EMA 라인은 단기 트렌드를 반영 할 수 있으며 50 주기의 EMA 라인은 중장기 트렌드를 반영합니다. 단기 EMA 라인이 하단에서 장기 EMA 라인의 위로 넘어가면 시장이 하락에서 상승으로 돌고 있음을 나타냅니다. 이것은 긴 거리를위한 황금 십자 신호입니다. 단기 EMA가 위에서부터 장기 EMA 아래로 넘어가면 시장이 상향에서 하향으로 돌고 있음을 나타냅니다. 이것은 짧은 거리를위한 죽음의 십자 신호입니다.

동시에, 전략에는 MACD 지표 신호도 포함됩니다. MACD 지표에는 단기 및 장기 지수 이동 평균의 차이를 나타내는 DIF 라인과 DEA 라인이 포함되어 있습니다. 이중 EMA를 통해 계산됩니다. 이 전략은 DIF를 12 일 EMA와 26 일 EMA 사이의 차이로 설정합니다. DEA 라인은 DIF의 9 일 지수 이동 평균입니다. DIF 라인은 모멘텀을 나타냅니다. DEA 라인은 MACD 평균을 나타냅니다. DIF가 하단에서 DEA 라인을 넘을 때 구매 신호를 생성합니다. DIF가 위에서 DEA를 넘을 때 판매 신호를 생성합니다.

이 두 지표를 결합하면, 25일 EMA가 50일 EMA의 황금색 십자가를 가졌을 때, MACD의 DIF 라인이 DEA 라인의 위를 넘을 때 긴 엔트리 신호가 생성됩니다. 25일 EMA가 50일 EMA의 죽음의 십자가를 가졌을 때, MACDS DIF 라인이 DEA 라인의 아래를 넘을 때 짧은 엔트리 신호가 생성됩니다.

이점 분석

이것은 MACD 지표와 통합되어 다음과 같은 장점을 가진 더 신뢰할 수있는 거래 신호를 생성하는 매우 전형적인 이중 트랙 전략입니다.

  1. 이중 EMA 라인을 사용하면 더 신뢰할 수있는 거래 신호를 생성하기 위해 윙사와 가짜 브레이크오웃을 피할 수 있습니다.

  2. MACD 지표를 통합하면 거래 신호를 추가로 확인할 수 있으며 EMA 이중 트랙 신호의 위험을 피할 수 있으며 전략의 실질적 효과를 향상시킵니다.

  3. 25일선과 50일선을 빠른선과 느린선으로 사용하면 매개 변수 선택이 더 정확해 중·단기 주기의 중요한 트렌드 변화를 파악할 수 있다.

  4. 이 전략은 동력을 추구하고 평균 회전 사고를 통해 기준 지수를 뛰어넘고 더 넓은 시장의 급격한 상승과 하락 추세에서 상당한 수익을 얻을 수 있습니다.

  5. 전략 논리는 간단하고 직설적이며, 이해하기 쉽고 실행하기 쉽고, 양적 초보자에게 적합합니다.

  6. 매개 변수들은 다양한 제품과 시장 환경에 대한 전략을 더 잘 조정하기 위해 신중하게 최적화 될 수 있습니다.

위험 분석

이 전략에는 여전히 주목할만한 몇 가지 위험이 있습니다.

  1. 잘못된 EMA 신호가 발생할 가능성이 남아 있지만, 시장의 폭력적인 움직임에서는 여전히 발생할 수 있습니다.

  2. MACD 매개 변수들은 지속적인 최적화와 조정이 필요합니다. 그렇지 않으면 잘못된 신호 또는 신호 지연이 발생할 수 있습니다.

  3. 더 큰 손실을 초래하는 비효율적인 돌파구를 피하기 위해 중지 손실 포인트 설정이 합리적인지 조심해야합니다.

  4. 더 큰 손실을 초래하는 체계적 위험을 피하기 위해 시장과 정책 환경의 변화에주의를 기울여야합니다.

  5. 일방적인 흐름으로 인해 강제 청산의 위험을 방지하기 위해 포지션 크기와 레버리지 수준을 통제해야 합니다.

최적화 방향

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

  1. 더 정확한 매개 변수 조합을 테스트하고, 예를 들어 20일 EMA와 60일 EMA를 거래 트랙으로 사용하며, DIF는 10일 EMA와 20일 EMA의 차이입니다.

  2. 거래량 지표에서 확인을 늘려서 낮은 거래량에서 잘못된 파장을 피합니다.

  3. ATR 같은 변동성 지표를 포함하여 더 과학적인 스톱 로스 방법을 결정합니다.

  4. 기계 학습 알고리즘을 활용하여 변화하는 시장 환경에 동적으로 적응하기 위해 매개 변수를 자동으로 최적화합니다.

  5. 전략 성능과 메트릭을 기반으로 크기를 동적으로 조정할 수 있는 위치 사이징 제어 모듈을 추가합니다.

  6. 더 높은 시간 프레임 차트에 전략 신호를 그래프 할 수 있습니다. 더 장기적인 방향 트레이드에 대한 결정을 돕기 위해.

요약

이 전략은 이동 평균 라인 지표와 MACD 지표의 강점을 통합하여 MACD 모멘텀 방향에 대한 DIF 및 DEA 매칭과 결합한 이중 EMA 라인을 통해 더 높은 품질의 촛불 패턴을 판단하여 안정적이고 효율적인 모멘텀 거래 전략을 형성합니다. 논리는 간단하고 이해하기 쉽고 최적화 할 수 있으며 양자 거래자가 시작하고 구현하기에 매우 적합합니다. 지속적인 테스트와 최적화를 통해이 전략은 지표를 능가하는 가치 전략 중 하나가 될 수 있습니다.


/*backtest
start: 2022-12-05 00:00:00
end: 2023-12-11 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="EMA+MACD", shorttitle="EMA+MACD", overlay=true)
// Getting inputs
fast_length = input(title="Fast Length", type=input.integer, defval=12)
slow_length = input(title="Slow Length", type=input.integer, defval=26)
src = input(title="Source", type=input.source, defval=close)


signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9)
sma_source = input(title="Oscillator MA Type", type=input.string, defval="EMA", options=["SMA", "EMA"])
sma_signal = input(title="Signal Line MA Type", type=input.string, defval="EMA", options=["SMA", "EMA"])

fast_ma = sma_source == "SMA" ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source == "SMA" ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal == "SMA" ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal
len1 = input(title="Len Ema 1 ",type=input.integer,defval=25)
len2 = input(title="Len Ema 2 ",type=input.integer,defval=50)
ema1 = ema(src,len1)
ema2 = ema(src,len2)

bull = crossover(ema1,ema2) and macd > 0
bear = crossover(ema2,ema1) and macd < 0
l1 = bull ? label.new(x=bar_index,y=low,yloc=yloc.belowbar,text="BUY",color=color.green,textcolor=color.white,style=label.style_triangleup) : na
l2 = bear ? label.new(x=bar_index,y=high,yloc=yloc.abovebar,text="SELL",color=color.red,textcolor=color.white,style=label.style_triangledown) : na


strategy.entry("LONG",strategy.long,when=bull)
strategy.entry("SHORT",strategy.short,when=bear)




더 많은