MACD와 EMA 골든크로스와 데드크로스 전략


생성 날짜: 2023-12-28 15:22:14 마지막으로 수정됨: 2023-12-28 15:22:14
복사: 2 클릭수: 972
avatar of ChaoZhang ChaoZhang
1
집중하다
1621
수행원

MACD와 EMA 골든크로스와 데드크로스 전략

개요

이 전략은 MACD 지표의 패스트 라인과 패스트 라인의 교차점을 계산하여 진입과 출구를 판단한다. 동시에 EMA 지표와 결합하여 트렌드 방향을 판단한다. 패스트 라인이 아래에서 패스트 라인을 깨고 MACD 값이 0보다 낮으면 더 많이 한다. 패스트 라인이 위에서 패스트 라인을 깨고 MACD 값이 0보다 높으면 공백한다.

전략 원칙

MACD의 빠른 선이 아래에서 느린 선을 뚫고 MACD 값이 0보다 낮으면, 주식의 가격의 단기 이동 평균이 상승하기 시작하고, 운동량이 증가하기 시작하고, 구매할 수 있다. MACD의 빠른 선이 위에서 느린 선을 뚫고 MACD 값이 0보다 높으면, 주식의 가격의 단기 이동 평균이 떨어지기 시작하고, 운동량이 약해지기 시작하고, 판매할 수 있다.

EMA 지표는 전반적인 트렌드 방향을 판단한다. EMA 값이 높으면 상승 트렌드이며, 값이 낮으면 하향 트렌드이다. 전략은 EMA가 상승 트렌드라고 표시될 때만 더 많이하고, EMA가 하향 트렌드라고 표시될 때 공백을 만들고, 역동 거래를 피한다.

스톱패스는 신호가 생성될 때 EMA 값이다. EMA는 트렌드를 잘 판단할 수 있으며, EMA 값으로 설정하면 스톱패스가 이전 시점의 낮은 점이나 높은 점에 의해 뚫리는 확률을 줄일 수 있다. 스톱패스는 입점의 2배로 설정되어 수익 위험 비율은 2이다.

우위 분석

이 전략은 MACD 지표와 EMA 지표를 결합하여 입시 시점과 트렌드 방향을 더 잘 판단할 수 있다. 중지 방식은 합리적이며, 추격 어내는 추락을 피한다. 수익 위험 비율은 2이며, 보다 보수적인 파라미터를 설정한다. MACD 지표 파라미터는 조정 가능하며, 시장의 변화에 유연하게 적응할 수 있다.

위험 분석

MACD 지표에는 avraging lag이 존재하며, 지표 전환은 가격 전환에 뒤쳐져 있다. 전략은 구체적인 입구 지점을 결정할 수 없으며, 일정 정도의 맹목성이 존재한다. 중지 손실은 충격적 인 상황에 의해 촉발 될 수 있다. 중지 지점은 앞당겨지거나 지연 될 수 있다.

최적화 방향

  1. MACD 지표의 매개 변수를 최적화하여 더 민감하거나 안정적으로 만듭니다.
  2. 다른 지표들과 함께 진입 시점을 판단하여 보다 정확한 진입 지점을 결정한다.
  3. 동적으로 정지 손해 차단 파라미터를 조정한다.
  4. 자금 관리를 최적화하고 더 적합한 포지션 크기를 결정합니다.

요약하다

이 전략은 MACD 지표와 EMA 지표를 통합하여 진입 시기와 트렌드 방향을 판단한다. 간단한 합리적인 스톱 스톱 방식을 사용합니다. MACD 지표 지연, 스톱 스톱 파라미터 등을 위해 추가적으로 최적화하여 더 나은 전략 효과를 얻을 수 있습니다.

전략 소스 코드
/*backtest
start: 2022-12-21 00:00:00
end: 2023-12-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("MACD & EMA 200 Strategy", overlay=true)

// MACD Settings
fastLength = input(12, title="Fast Length")
slowLength = input(26, title="Slow Length")
signalLength = input(9, title="Signal Length")
src = close

[macdLine, signalLine, _] = ta.macd(src, fastLength, slowLength, signalLength)

// 200 EMA
ema200 = ta.ema(src, 200)
plot(ema200, title="200 EMA", color=color.red)

// Long Condition
longCondition = ta.crossover(macdLine, signalLine) and macdLine < 0 and close > ema200
if (longCondition and strategy.position_size <= 0)
    strategy.entry("Long", strategy.long)
    longStopLoss = ema200
    longTakeProfit = close + 2 * (close - ema200)
    strategy.exit("Exit Long", "Long", stop=longStopLoss, limit=longTakeProfit)

// Short Condition
shortCondition = ta.crossunder(macdLine, signalLine) and macdLine > 0 and close < ema200
if (shortCondition and strategy.position_size <= 0)
    strategy.entry("Short", strategy.short)
    shortStopLoss = ema200
    shortTakeProfit = close - 2 * (ema200 - close)
    strategy.exit("Exit Short", "Short", stop=shortStopLoss, limit=shortTakeProfit)