MACD와 EMA의 교차 전략

저자:차오장, 날짜: 2023-12-28 15:22:14
태그:

img

전반적인 설명

이 전략은 MACD 지표의 빠른 및 느린 라인의 교차점을 사용하여 입출구를 결정합니다. EMA 지표는 또한 트렌드 방향을 판단하는 데 사용됩니다. 빠른 라인이 아래에서 느린 라인을 뚫고 MACD 값이 0 이하일 때 길게 이동합니다. 빠른 라인이 위에서 느린 라인을 뚫고 MACD 값이 0 이상일 때 짧게 이동합니다. 스톱 손실 출구는 신호가 생성되었을 때 EMA 값으로 설정됩니다. 수익을 취하는 것은 입출 가격의 2 배로 설정됩니다.

전략 원칙

MACD의 빠른 선이 아래에서 느린 선을 뚫고 MACD 값이 0보다 낮을 때, 그것은 가격의 단기 이동 평균이 상승하기 시작하고 동력이 강화되기 시작한다는 것을 나타냅니다. 따라서 긴 포지션을 취할 수 있습니다. 빠른 선이 위에서 느린 선을 뚫고 MACD 값이 0보다 높을 때, 그것은 가격의 단기 이동 평균이 떨어지기 시작하고 동력이 약화되기 시작한다는 것을 나타냅니다. 따라서 짧은 포지션을 취할 수 있습니다.

EMA 지표는 전반적인 트렌드 방향을 판단합니다. 높은 EMA 값은 상승 추세를 나타내고 낮은 값은 하락 추세를 나타냅니다. 전략은 EMA가 상승 추세를 나타낼 때만 길고 EMA가 상향 트렌드를 나타낼 때 단축됩니다.

스톱 손실은 신호가 생성되었을 때 EMA 값으로 설정됩니다. EMA는 트렌드를 잘 판단 할 수 있습니다. EMA 값으로 설정하면 이전 낮은 또는 높은 지점으로 스톱 손실이 나올 확률을 줄일 수 있습니다. 이윤을 취하는 것은 입상 가격의 2 배로 설정되어 위험 보상 비율이 2입니다.

이점 분석

이 전략은 입시 시점과 트렌드 방향을 더 잘 결정하기 위해 MACD와 EMA 지표를 결합합니다. 스톱 로스 방법은 상승과 판매 하락을 추격하는 것을 피합니다. 2의 위험 보상 비율은 비교적 보수적인 매개 변수 설정입니다. MACD 지표의 매개 변수는 시장 변화에 유연하게 적응하도록 조정 할 수 있습니다.

위험 분석

MACD 지표는 평균 지연을 가지고 있으며, 지표 회전은 가격 회전을 지연시키는 경향이 있습니다. 전략은 특정 엔트리 포인트를 결정할 수 없으며, 약간의 맹인이 있습니다. 스톱 손실은 변동적인 가격 행동으로 인해 유발되는 경향이 있습니다. 이윤 포인트를 취하는 것은 조기 또는 지연으로 발생할 수 있습니다.

최적화 방향

  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)


더 많은