이중 이동 평균 추세 교차 양적 거래 전략의 연구 및 최적화

SMA MA CROSSOVER momentum
생성 날짜: 2025-02-20 11:10:22 마지막으로 수정됨: 2025-02-27 17:48:50
복사: 0 클릭수: 263
avatar of ianzeng123 ianzeng123
2
집중하다
319
수행원

이중 이동 평균 추세 교차 양적 거래 전략의 연구 및 최적화 이중 이동 평균 추세 교차 양적 거래 전략의 연구 및 최적화

개요

이 전략은 쌍평선 교차를 기반으로 한 트렌드 추적 거래 시스템이다. 9일과 21일) 의 상대적 위치 관계를 비교하여 시장 추세의 전환 시점을 포착한다. 전략은 고전적인 기술 분석 이론을 적용하고, 현대적인 양적 거래 방법과 결합하여 완전히 자동화된 거래 의사 결정 과정을 구현한다.

전략 원칙

전략의 핵심 논리는 두 개의 다른 주기 이동 평균의 교차 신호를 기반으로 합니다. 단기 평균 (일) 9일 상향이 장기 평균 (일) 21일 상향을 통과하면, 시스템은 시장 동력이 상향으로 전환되어 여러 신호를 유발한다고 생각합니다. 단기 평균 (일) 9일 상향이 장기 평균 (일) 21일 상향을 통과하면, 시스템은 시장 동력이 하향으로 전환되어 거래가 종료됩니다. 또한, 전략에는 거래 통계를 포함하고 있으며, 총 거래 수, 수익 수 및 손실 수를 실시간으로 추적하여 거래자의 전략 수행을 평가하는 데 도움이됩니다.

전략적 이점

  1. 논리는 간단하고 명확하며 이해하기 쉽고 유지하기 쉽습니다.
  2. 가격 데이터에 전적으로 기반하여 다른 복잡한 지표가 필요하지 않습니다.
  3. 트렌드 추적 기능으로 중·장기 트렌드를 효과적으로 파악할 수 있습니다.
  4. 전략적 평가를 위한 완전한 거래 통계 시스템
  5. 완전히 자동화되어 인간의 개입으로 인한 정서적 영향을 줄입니다.

전략적 위험

  1. 시장의 흔들림으로 인해 빈번한 잘못된 신호가 발생할 수 있습니다.
  2. 출전과 출전 시간이 다소 늦어졌다.
  3. 손실을 막는 장치가 설치되지 않아 급격한 변동에 큰 손실이 발생할 수 있습니다.
  4. 다차원적 시장 분석이 없는 평평한 지표에만 의존하고 있다.
  5. 매개 변수가 고정되어 있고, 다른 시장 환경에 적응하기가 어렵습니다.

전략 최적화 방향

  1. 시장 환경에 대한 전략의 적응성을 높이기 위해 적응 평균 순환을 도입합니다.
  2. 변동율 필터를 늘리고, 흔들리는 시장의 가짜 신호를 줄여라
  3. 역동적인 손실 제도를 설계하여 하향 위험을 제어합니다.
  4. RSI 또는 MACD와 같은 다른 기술 지표와 결합하여 신호 신뢰성을 향상시킵니다.
  5. 시장 환경 인식 모듈 개발, 지능화 파라미터 조정

요약하다

이것은 양평선 교차를 통해 시장 동력의 변화를 포착하는 고전적이고 실용적인 트렌드 추적 전략이다. 약간의 지연과 잘못된 신호의 위험이 있지만, 그것의 단순하고 안정적인 특성은 양적 거래의 중요한 도구로 만든다. 제안된 최적화 방향에 의해 전략의 안정성과 수익성이 더욱 향상될 것으로 보인다.

전략 소스 코드
/*backtest
start: 2024-05-20 00:00:00
end: 2024-12-13 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy("Simple MA Crossover Strategy", overlay=true)

// Input parameters
shortMA = ta.sma(close, 9)
longMA = ta.sma(close, 21)

// Buy/Sell conditions
buyCondition = ta.crossover(shortMA, longMA)
sellCondition = ta.crossunder(shortMA, longMA)

// Plot moving averages
plot(shortMA, color=color.blue, title="Short MA")
plot(longMA, color=color.red, title="Long MA")

// Execute trades
if (buyCondition)
    strategy.entry("Buy", strategy.long)

if (sellCondition)
    strategy.close("Buy")

// Track trades, wins, and losses
var int totalTrades = 0
var int totalWins = 0
var int totalLosses = 0

if (strategy.opentrades > 0)
    totalTrades := totalTrades + 1

if (strategy.opentrades == 0 and strategy.opentrades[1] > 0)
    if (strategy.netprofit > 0)
        totalWins := totalWins + 1
    else
        totalLosses := totalLosses + 1

// Plot trade statistics
var label tradeStats = na
if (not na(tradeStats))
    label.delete(tradeStats)

tradeStats := label.new(bar_index, high, text="Trades: " + str.tostring(totalTrades) + "\nWins: " + str.tostring(totalWins) + "\nLosses: " + str.tostring(totalLosses), style=label.style_label_down, color=color.white, textcolor=color.black)