이중 이동 평균 교차 동적 위치 전략

SMA MA
생성 날짜: 2024-07-30 16:04:59 마지막으로 수정됨: 2024-07-30 16:04:59
복사: 1 클릭수: 459
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

이중 이동 평균 교차 동적 위치 전략

개요

쌍평평선 교차 동적 포지션 전략은 두 개의 다른 주기 간단한 이동 평균 (SMA) 교차 신호에 기초하여 거래를 하는 양적 거래 전략이다. 이 전략은 단기 및 장기 이동 평균의 교차를 사용하여 시장 추세를 판단하고 교차 신호와 가격과 장기평선과의 관계에 따라 포지션 방향을 조정한다. 전략은 일선 차트에 작동하며, 다른 이동 평균 파라미터를 설정하여 전략의 민감성과 반응 속도를 유연하게 조정할 수 있다.

전략 원칙

  1. 이동 평균 계산: 전략은 9일과 21일에 두 개의 간단한 이동 평균 ((SMA) 을 사용합니다.
  2. 거래 신호 생성:
    • 구매 신호: 단기 평균선 ((9일 SMA) 위에 장기 평균선 ((21일 SMA) 을 착용
    • 판매 신호: 단기 평균선 아래에서 장기 평균선을 통과합니다.
  3. 포지션 관리:
    • 포지션 개설: 구매 신호가 발생했을 때 여러 상점 포지션을 개설; 판매 신호가 발생했을 때 빈 상점 포지션을 개설
    • 평점 포지션과 역점 포지션: (a) 다중 상위 포지션을 보유할 때, 상위 가격이 장기 평균보다 낮거나 판매 신호가 발생하면 상위 상위를 평행하고 공백을 열어 (b) 공백 지점을 보유할 때, 개시 가격이 장기 평균보다 높거나 구매 신호가 발생하면 공백을 평면화하고 다수 지점을 개설합니다.
  4. 위험 관리: 전략은 고정된 스톱로드를 설정하지 않고, 포지션 방향을 동적으로 조정하여 위험을 관리합니다.

전략적 이점

  1. 트렌드 추적: 큰 트렌드에서 상당한 수익을 얻을 수 있도록 시장 트렌드를 평균선 교차로 활용
  2. 동적인 포지션 유지: 가격과 장기 평균의 관계에 따라 포지션을 유연하게 조정하여 전략의 유연성과 적응력을 향상시킵니다.
  3. 간단하고 이해하기 쉬운: 전략의 논리는 명확하고, 이해하기 쉽고, 실행하기 쉽다.
  4. 변수 조정 가능: 평균 회기를 조정하여 다른 시장 환경과 거래 품종에 적응할 수 있습니다.
  5. 온천 거래: 전략은 시장 상태의 제한 없이 다양한 시장 조건에서 지속적으로 작동할 수 있습니다.
  6. 자동화 실행: 전략은 인간의 감정적 간섭을 줄여서 완전히 자동화된 거래를 프로그래밍 할 수 있습니다.
  7. 리스크 관리: 포지션 방향을 동적으로 조정하여 고정 스톱로즈로 인한 슬라이드 포인트 손실을 방지합니다.

전략적 위험

  1. 불안정한 시장의 단점: 수평 정리 또는 불안정한 시장에서 거래 빈도가 손실로 이어질 수 있습니다.
  2. 지연성: 이동 평균은 본질적으로 지연된 지표이며 급격한 변화의 초기 단계를 놓칠 수 있습니다.
  3. 가짜 브레이크 위험: 단기 가격 변동으로 인해 평균 선의 가짜 브레이크가 발생할 수 있으며 잘못된 거래 신호가 발생할 수 있습니다.
  4. 중지 손실의 부재: 전략이 고정된 중지 손실을 설정하지 않았기 때문에 극단적인 상황에서는 더 큰 손실이 발생할 수 있습니다.
  5. 과도한 거래: 자주 포지션 조정으로 인해 거래 비용이 증가할 수 있습니다.
  6. 매개 변수 민감성: 전략 성능은 평균선 매개 변수 선택에 민감하며, 다른 매개 변수는 매우 다른 결과를 초래할 수 있다.
  7. 단일 지표의 한계: 평행선 교차에만 의존하면 다른 중요한 시장 정보를 무시할 수 있습니다.

전략 최적화 방향

  1. 추가 지표 도입: RSI, MACD 등의 지표와 결합하여 신호 신뢰성을 향상시킵니다.
  2. 진입 시기를 최적화: 거래량, 변동성 등의 필터 조건을 증가시키고, 가짜 돌파구를 줄여줍니다.
  3. 스톱 메커니즘을 추가: 고정 스톱 또는 추적 스톱을 설정하여 단일 거래 위험을 제어하십시오.
  4. 포지션 규모 조정: 시장의 변동성에 따라 포지션 크기를 조정하고 자금 관리를 최적화
  5. 시장 상태 판단을 높이는 것: 추세와 흔들리는 시장을 식별하고, 다른 시장 상태에서 다른 전략을 사용합니다.
  6. 최적화 변수 선택: 역사 데이터를 사용하여 역검사하여 최적의 평균선 변수 조합을 찾습니다.
  7. 트렌드 강도 필터를 추가: ADX와 같은 지표를 도입하여 강한 트렌드 시장에서만 거래
  8. 자기 적응 파라미터를 구현합니다: 시장의 변동성에 따라 평균 주기를 자동으로 조정하여 전략의 적응력을 향상시킵니다.

요약하다

쌍평선 교차 동적 포지션 보유 전략은 평선 교차 신호를 포착하고 포지션 방향을 동적으로 조정하여 시장 추세를 파악하는 고전적이고 실용적인 수량 거래 방법입니다. 이 전략은 간단하고 이해하기 쉽고, 완전히 자동화되어 있으며, 트렌드 추적 능력과 유연성을 갖추고 있습니다. 그러나 전략에는 흔들림 시장의 부실성과 신호 지연 등의 잠재적인 위험도 있습니다.

전략 소스 코드
/*backtest
start: 2024-06-29 00:00:00
end: 2024-07-29 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title="MA Cross Backtest", overlay=true, default_qty_type=strategy.cash, default_qty_value=10)

// Parâmetros das Médias Móveis
shortlen = input.int(9, "Short MA Length", minval=1)
longlen = input.int(21, "Long MA Length", minval=1)

// Cálculo das Médias Móveis
short = ta.sma(close, shortlen)
long = ta.sma(close, longlen)

// Plotagem das Médias Móveis
plot(short, color=color.orange, title="Short MA")
plot(long, color=color.green, title="Long MA")

// Sinal de Compra baseado no cruzamento das médias móveis
buySignal = ta.crossover(short, long)

// Sinal de Venda (Short) baseado no cruzamento das médias móveis
sellSignal = ta.crossunder(short, long)

// Plotagem dos Sinais de Compra e Venda
plotshape(series=buySignal, location=location.belowbar, color=color.blue, style=shape.labelup, text="Buy", title="Buy Signal")
plotshape(series=sellSignal, location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell", title="Sell Signal")

// Condições para alertas
alertcondition(buySignal, title="Buy Signal", message="MA Cross Buy Signal")
alertcondition(sellSignal, title="Sell Signal", message="MA Cross Sell Signal")

// Lógica da Estratégia de Backtest
if (buySignal)
    // Se não há posição aberta ou se a posição atual é curta, feche a posição curta antes de abrir uma nova posição longa
    if (strategy.position_size < 0)
        strategy.close("Short", comment="Closing Short Position before Long Entry")
    strategy.entry("Long", strategy.long)

    // Alerta de compra
    alert("MA Cross Buy Signal", alert.freq_once_per_bar_close)

if (strategy.position_size > 0)
    // Se o preço abrir abaixo da média longa
    if (open < long)
        strategy.close("Long", comment="Price Opened Below Long MA")
        strategy.entry("Short", strategy.short, comment="Switched to Short")
        // Alerta de venda
        alert("Price Opened Below Long MA - Switched to Short", alert.freq_once_per_bar_close)
    // Se a média móvel curta cruzar abaixo da média móvel longa
    else if (sellSignal)
        strategy.close("Long", comment="Short MA Crossed Below Long MA")
        strategy.entry("Short", strategy.short, comment="Switched to Short")
        // Alerta de venda
        alert("Short MA Crossed Below Long MA - Switched to Short", alert.freq_once_per_bar_close)

if (strategy.position_size < 0)
    // Se o preço abrir acima da média longa
    if (open > long)
        strategy.close("Short", comment="Price Opened Above Long MA")
        strategy.entry("Long", strategy.long, comment="Switched to Long")
        // Alerta de compra
        alert("Price Opened Above Long MA - Switched to Long", alert.freq_once_per_bar_close)