동적 추세 포착 시스템: SMA 금/데스 크로스 일간 롱 포지션 양적 전략

SMA 简单移动平均线 黄金交叉 死亡交叉 趋势跟踪 日线策略 长仓策略 技术分析
생성 날짜: 2025-08-14 09:23:18 마지막으로 수정됨: 2025-08-14 09:23:18
복사: 3 클릭수: 285
avatar of ianzeng123 ianzeng123
2
집중하다
319
수행원

동적 추세 포착 시스템: SMA 금/데스 크로스 일간 롱 포지션 양적 전략 동적 추세 포착 시스템: SMA 금/데스 크로스 일간 롱 포지션 양적 전략

개요

다이내믹 트렌드 캡처 시스템은 단순 이동 평균 (SMA) 교차 신호에 기반한 양적 거래 전략으로 중장기 시장 트렌드를 포착하는 데 중점을 두고 있다. 이 전략의 핵심은 50일과 200일 단순 이동 평균 (SMA) 사이의 황금 교차와 죽음의 교차를 거래 신호로 사용하여 다중 거래만을 수행하는 것이다. 단기 SMA (50일) 을 상향으로 가로질러 긴 SMA (200일) 을 가로질러 황금 교차가 형성되면 시스템에서 구매 신호를 생성한다. 단기 SMA (50일) 를 상향으로 가로질러 긴 SMA (200일) 를 가로질러 죽음의 교차가 형성되면 시스템 평점으로 빠져 나간다.

전략 원칙

이 전략은 기술 분석의 고전적인 트렌드 추적 이론에 기초하고 있으며, 핵심 논리는 다음과 같다.

  1. 이동 평균 교차 신호전략은 50일과 200일 두 개의 간단한 이동 평균을 사용합니다. 이 두 개의 주기는 시장에서 널리 사용되는 표준 변수입니다.

    • 골든 크로스 (Golden Cross): 50일 SMA에서 200일 SMA를 넘으면, 단기 동력이 장기적인 경향을 초과하여 시장이 상승 추세에 들어갈 수 있음을 나타냅니다.
    • 죽음의 십자 (Death Cross): 50일 SMA가 200일 SMA를 넘으면, 단기 동력이 장기적인 경향보다 약하여 시장이 하향 경향으로 들어갈 수 있음을 나타냅니다.
  2. 거래 규칙

    • 입시 조건: 금이 교차할 때 현재 지분을 보유하지 않은 경우onlyOneTradeAtATime매개 변수 제어), 시스템은 다수 상위 포지션을 열게 됩니다.
    • 출전 조건: 데드 크로스 (Dead Cross) 가 발생하면, 시스템은 모든 포지션을 청산한다.
    • 포지션 관리: 기본으로 계좌의 100% 자금을 사용하여 거래합니다. 입력 파라미터를 통해 조정할 수 있습니다.
  3. 시각화 표기

    • 전략은 차트에 황금십자 (上三角) 과 죽음의십자 (下三角) 을 표시한다.
    • 지분 보유 기간 동안, 그래프 배경은 밝은 녹색으로 표시됩니다.
    • 두 개의 이동 평균은 각각 다른 색으로 표시됩니다: 50 일 SMA는 푸른 녹색이며, 200 일 SMA는 주황색입니다.
  4. 위험 관리

    • 이 전략은 0.05%의 거래 수수료를 설정합니다.
    • 피라미딩 기능이 비활성화되었습니다.
    • 재입시를 막기 위한 옵션이 제공되고, 이미 입지를 가지고 있는 경우 재입시를 막기 위한 옵션이 제공된다.

전략적 이점

  1. 간단하고 효과적입니다.전략 논리는 간단하고 명확하며, 이해하기 쉽고 실행할 수 있으며, 복잡한 지표 조합이나 변수 최적화가 필요하지 않습니다.

  2. 트렌드 추적 능력: 두 개의 시간 간격이 큰 이동 평균의 교차를 포착하여 시장 소음을 효과적으로 필터링하고 중기 및 장기 경향 변화를 식별한다.

  3. 위험 관리 메커니즘사망의 교차 신호는 명확한 탈퇴 지점을 제공하여 낙하 위험을 통제하고 수익을 보호하는 데 도움이됩니다.

  4. 장점 제한이 전략은 다자 거래만 수행하여, 코스피의 추가적인 위험과 복잡성을 회피하며, 특히 추세 시장에 적합하다.

  5. 융통성

    • 빠른 SMA와 느린 SMA의 주기 길이를 사용자 정의 할 수 있습니다.
    • 입금 청산 후 재입금 허용 여부를 선택할 수 있다.
    • 재원 분배 비율을 조정할 수 있습니다.
  6. 시각적 도움말: 전략은 차트에 명확하게 표시된 교차 신호와 포지션 상태를 통해 거래자가 시장 상황을 직관적으로 판단할 수 있다.

  7. 경고 기능: 내장 된 금 교차와 사망 교차의 경고 조건, 거래자에게 알릴 수 있다.

전략적 위험

  1. 뒤떨어진 모습이동 평균은 본질적으로 지연된 지표이며, 특히 200일 SMA는 느리게 반응하여 진입 및 출구 신호에 큰 지연을 초래할 수 있으며, 빠르게 변하는 시장에서 중요한 전환점을 놓칠 수 있습니다.

  2. 위기시장은 적용되지 않습니다.이 전략은 수평 상동 시장에서 빈번한 잘못된 신호를 발생시킬 수 있으며, 이로 인해 연속적인 손실 거래가 발생할 수 있습니다.

  3. 탈퇴 위험: 전략이 오직 죽음의 교차로에 있을 때만 포지션을 청산하기 때문에, 시장은 죽음의 교차로가 형성되기 전에 이미 크게 조정되어 수익이 반전되는 결과를 초래할 수 있다.

  4. 매개변수 민감도:50일과 200일은 일반적으로 사용되는 파라미터이지만, 모든 시장과 기간에 적용되는 것은 아니며, 다른 파라미터 선택은 매우 다른 결과를 초래할 수 있다.

  5. 단일 기술 지표 의존: 전략은 다른 확인 지표와 결합되지 않고 SMA 교차에만 의존하여 가짜 신호의 위험을 증가시킬 수 있습니다.

  6. 자금 관리 위험: 모든 거래에 100%의 자금을 기본으로 사용하며, 자금 분배의 다양성이 부족하여 과도한 위험 집중으로 이어질 수 있습니다.

  7. 거래 비용의 영향: 거래 수수료가 설정되어 있지만 실제 거래에서는 슬라이드 포인트, 세금과 같은 다른 거래 비용도 전략 성과에 영향을 미칩니다.

전략 최적화 방향

  1. 확인 지표를 추가합니다.

    • 트렌드 변화의 유효성을 확인하기 위해 거래량 지표를 조합한다.
    • 상대적으로 약한 지수 (RSI) 또는 무작위 지수 (Stochastic) 와 같은 진동기를 추가하여 거짓 신호를 필터링하십시오.
    • MACD 또는 ADX와 같은 트렌드 강도 지표를 포함하는 것을 고려하여 트렌드 신뢰성을 평가하십시오.
  2. 출전 및 출전 메커니즘의 변경

    • 골드 크로스 오프 때 분량 입수하는 것과 같은 부분 포지션 관리를 실시한다.
    • “죽음의 교차”가 아닌 “피해 방지 장치”가 추가되었습니다.
    • 지원/저항 지점이나 변동률 통로를 추가적으로 이용하는 것을 고려하십시오.
  3. 변수 동적 조정

    • SMA 주기의 적응 조정, 시장의 변동성에 따라 최적화 파라미터를 구현한다.
    • 지수 이동 평균 ((EMA) 을 SMA 대신 사용하여 최근 가격 변화에 대한 민감성을 높이는 것을 고려하십시오.
  4. 시장 환경 필터링

    • 시장 상태 판단 기능을 추가하여 트렌드 시장에서만 전략을 활성화하십시오.
    • ATR 또는 다른 변동률 지표를 사용하여 포지션 크기를 조정하는 것을 고려하십시오.
    • 계절적 또는 시장 주기적 특성에 따라 전략 매개 변수를 조정하십시오.
  5. 자금 관리 최적화

    • 시장 위험 수준이나 전략의 역사적인 성과에 따라 역동적인 포지션 조정을 실시한다.
    • 매장 및 매장 하락 규칙을 설계하여 자본 사용 효율을 최적화하십시오.
    • 최대 철수 제어 장치를 추가하십시오.
  6. 재검토 및 검증 개선

    • 다른 시장 조건과 시간대에 대해 좀 더 포괄적으로 재검토하기 위해서입니다.
    • 워크-포워드 테스트 (Walk-Forward Testing) 를 실시하여 전략의 안정성을 평가한다.
    • 몬테카를로 시뮬레이션 분석을 추가하는 것을 고려하십시오.

요약하다

동적 트렌드 캡처 시스템은 SMA 골드 크로스 및 데이트 크로스 기반의 고전적인 트렌드 추적 전략으로, 단순성과 효과는 양적 거래 분야에서 일반적으로 사용되는 방법입니다. 이 전략은 중장기 트렌드를 포착하는 데 특히 적합하며, 지속적으로 상승하는 시장에서 잘 작동합니다.

그러나, 미흡한 지표에 기반한 시스템으로서, 이 전략은 빠르게 변화하는 시장이나 변동하는 시장에서 도전을 받을 수 있다. 확인 지표를 추가하고, 진출 출구 메커니즘을 변경하고, 동적 매개 변수를 조정하고, 자금 관리를 최적화함으로써, 전략의 강도와 성능이 크게 향상될 수 있다.

결국, 모든 거래 전략의 성공은 올바른 실행, 지속적인 모니터링 및 적절한 위험 관리에 달려 있습니다. 거래자는 자신의 위험 용량과 투자 목표에 따라 전략에 필요한 조정을 하고 최적화해야합니다.

전략 소스 코드
/*backtest
start: 2024-08-14 00:00:00
end: 2025-08-12 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Golden/Death Cross (Daily) — Long Only",
     overlay=true,
     initial_capital=100000,
     commission_type=strategy.commission.percent,
     commission_value=0.05,      // 0.05% per trade, tweak as needed
     pyramiding=0,
     default_qty_type=strategy.percent_of_equity,
     default_qty_value=100)

// === Inputs ===
fastLen = input.int(50,  "Fast SMA (Golden Cross)", minval=1)
slowLen = input.int(200, "Slow SMA (Death Cross)",  minval=1)
onlyOneTradeAtATime = input.bool(true, "Block re-entry until flat")

// === SMAs (on current chart timeframe; use 1D for this strategy) ===
smaFast = ta.sma(close, fastLen)
smaSlow = ta.sma(close, slowLen)

// === Signals ===
goldenCross = ta.crossover(smaFast, smaSlow)
deathCross  = ta.crossunder(smaFast, smaSlow)

// === Entries / Exits ===
// Enter long on golden cross (optionally only if flat)
canEnter = onlyOneTradeAtATime ? strategy.position_size == 0 : true
if (goldenCross and canEnter)
    strategy.entry(id="Long", direction=strategy.long, comment="Golden Cross Long")

// Exit ALL positions on death cross
if (deathCross)
    strategy.close_all(comment="Death Cross Exit")

// === Plots & Visuals ===
plot(smaFast, color=color.new(color.teal, 0),  title="SMA Fast")
plot(smaSlow, color=color.new(color.orange, 0), title="SMA Slow")

plotshape(goldenCross, title="Golden Cross",
     style=shape.triangleup, location=location.belowbar, size=size.tiny, text="GC", color=color.teal)
plotshape(deathCross, title="Death Cross",
     style=shape.triangledown, location=location.abovebar, size=size.tiny, text="DC", color=color.red)

bgcolor(strategy.position_size > 0 ? color.new(color.teal, 90) : na)

// === Alerts (optional) ===
alertcondition(goldenCross, title="Golden Cross", message="Golden Cross: SMA50 crossed above SMA200")
alertcondition(deathCross,  title="Death Cross",  message="Death Cross: SMA50 crossed below SMA200")