이동평균 골든크로스와 데드크로스 트레이딩 전략


생성 날짜: 2024-02-22 16:25:13 마지막으로 수정됨: 2024-02-22 16:25:13
복사: 0 클릭수: 364
1
집중하다
1182
수행원

이동평균 골든크로스와 데드크로스 트레이딩 전략

개요

이동 평균 금 叉死 叉 거래 전략은 단기 및 장기 이동 평균 (EMA) 의 교차 상황을 추적하는 양적 거래 전략으로, 금 叉 및死 叉 때 구매 및 판매 작업을 수행한다. 이 전략은 MACD 지표와 결합하여 거래 신호 판단한다.

전략 원칙

이 전략은 주로 12일 EMA, 26일 EMA 및 MACD 지표에 의존한다. 구체적인 논리는 다음과 같다:

  1. 12일 EMA와 26일 EMA를 계산한다.
  2. MACD를 계산해보자.
  3. MACD의 9일 EMA를 신호선으로 계산한다.
  4. MACD에 신호선을 통과하면 구매 신호가 발생한다.
  5. MACD 아래에서 신호선을 통과하면 판매 신호가 발생한다.
  6. 신호를 생성하는 두 번째 K선 닫기 때, 대응 구매 또는 판매 작업을 수행한다.

이 정책은 또한 몇 가지 필터링 조건을 설정합니다.

  1. 거래시간은 매일 매매되지 않는 시간이다.
  2. MACD와 신호선 차이의 절대값은 0.08보다 크어야 한다.
  3. 한 번에 단방향 포지션만 허용한다.

우위 분석

이 전략은 이동 평균 크로스와 MACD 지표와 결합하여 시장의 단기 및 중기 경향의 전환점을 효과적으로 포착할 수 있습니다. 주요 장점은 다음과 같습니다:

  1. 전략 규칙은 간단하고 명확하며 이해하기 쉽고 실행이 가능합니다.
  2. 지표 매개 변수가 최적화되어 성능이 안정적이다.
  3. 단기 트렌드 추적과 적시적인 스톱로스 탈퇴를 고려한다.
  4. 거래 논리는 엄격하고, 무효 거래를 피한다.

위험 분석

이 전략에는 몇 가지 위험도 있습니다.

  1. 리스커스 데이터 적합성. 실제 적용 시, 매개 변수 및 값은 조정할 필요가 있을 수 있다.
  2. 이 경우, 거래의 빈도가 높을 수 있습니다.
  3. “전향이 뒤집히고, 적시에 철수하지 않으면 손실이 발생할 수 있다”.
  4. 양자 거래는 그 자체로 리버리지의 위험을 증가시킵니다.

대응방법:

  1. 동적 최적화 변수, 조정 값.
  2. 거래 규칙의 적절한 완화, 불필요한 거래의 감소.
  3. 다른 지표와 함께 반전 신호를 판단하십시오.
  4. 포지션과 레버리지를 철저히 통제한다.

최적화 방향

이 전략은 다음과 같은 부분에서 최적화될 수 있습니다.

  1. 더 긴 주기의 이동 평균 조합을 테스트하여 최적의 변수를 찾습니다.
  2. 회사 성과, 중요한 사건 등과 같은 기본적인 요소를 필터로 사용한다.
  3. 트렌드 반전의 시기를 판단하는 다른 지표와 함께, 예를 들어, 브린 밴드, KDJ 등.
  4. 손실을 막는 메커니즘을 개발한다. 손실이 미리 설정된 중단 지점에 도달하면 적극적으로 중단한다.
  5. 위험 비율을 추가하여 최대 회수량을 제어한다.

요약하다

이동 평균 레지드 포크 데드 포크는 MACD 거래 전략과 결합하여 간단한 트렌드 추적을 통해 거래 신호를 형성하고, 실행하기 쉬운, 적절한 필터 조건과 결합하여 위험을 제어하는 효과적인 양적 거래 전략입니다. 이 전략은 파라미터를 최적화하고, 손해 막기 메커니즘을 증가시키고, 더 많은 보조 지표와 결합하여 개선 할 수 있습니다.

전략 소스 코드
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("EMMA", max_bars_back = 200)

var up1 = #26A69A
var up2 = #B2DFDB
var down1 = #FF5252
var down2 = #FFCDD2
var confirmationLength = 2

var earliest = timestamp("20 Jan 2024 00:00 +0000")

// Regn u
shortEMA = ta.ema(close, 12)
longEMA = ta.ema(close, 26)
macd = shortEMA - longEMA
signal = ta.ema(macd, 9)
delta = macd - signal
absDelta = math.abs(delta)
previousDelta = delta[1]

signalCrossover = ta.crossover(macd, signal)
signalCrossunder = ta.crossunder(macd, signal)

harskiftetdag = hour(time[confirmationLength]) > hour(time)

enterLongSignal = signalCrossover[confirmationLength] and (macd > signal) and (absDelta >= 0.08)
exitLongSignal = signalCrossunder[confirmationLength] and (macd < signal)

enterShortSignal = signalCrossunder[confirmationLength] and (macd < signal) and (absDelta >= 0.08)
exitShortSignal = signalCrossover[confirmationLength] and (macd > signal)

// Så er det tid til at købe noe
qty = math.floor(strategy.equity / close)

if time >= earliest and not harskiftetdag
    if exitLongSignal 
        strategy.close("long")
    else if enterLongSignal
        strategy.close("short")
        strategy.entry("long", strategy.long, qty = qty)

    if exitShortSignal
        strategy.close("short")
    else if enterShortSignal
        strategy.close("long")
        strategy.entry("short", strategy.short, qty = qty)

// Så er det tid til at vise noe

plot(macd, color=color.blue)
plot(signal, color=color.orange)

// bgcolor(color = delta > 0.1 ? color.new(color.green, 90) : color.new(color.green, 100))
// bgcolor(color = signalCrossover ? color.purple : signalCrossunder ? color.aqua : color.new(color.green, 100))

histogramColor = delta > 0 ? (previousDelta < delta ? up1 : up2) : (previousDelta > delta ? down1 : down2)

plot(
     delta,
     style=plot.style_columns,
     color=histogramColor
     )