고빈도 양적 거래에서의 추세 매칭 및 종료 최적화 전략

EMA SMA HFT
생성 날짜: 2025-02-18 13:44:12 마지막으로 수정됨: 2025-02-18 13:44:12
복사: 1 클릭수: 393
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

고빈도 양적 거래에서의 추세 매칭 및 종료 최적화 전략

개요

이 전략은 다중 시간 주기 트렌드 분석과 양 가격 관계를 결합한 고 주파수 수량 거래 시스템이다. 이는 주로 3분과 1시간의 두 시간 주기 지수 이동 평균 (EMA) 을 통해 시장 추세를 판단하며, 거래 신호를 확인하기 위해 트래픽 분석을 결합하고, 하루 최고 가격과 고정 시간 지점에 기반한 이중 탈퇴 장치를 설계한다.

전략 원칙

전략의 핵심 논리는 세 가지 주요 부분으로 구성됩니다.

  1. 단기 트렌드 판단: 3분 주기 50주기 EMA를 단기 트렌드 지표로 사용하여, 가격이 평균선 위에 있을 때 단기 상승 트렌드로 간주한다.
  2. 양확인: 현재 거래량과 20주기 거래량 평균값의 관계를 비교하여, 현재 거래량이 평균값의 1.5배를 초과할 때, 발생량이 신호를 증폭시킬 수 있다고 본다.
  3. 장기 트렌드 필터: 1시간 주기의 50주기 EMA를 장기 트렌드 필터로 도입하여 가격이 이 평균선 위에 있을 때만 입장이 허용된다.

입시 신호는 위의 세 가지 조건을 동시에 충족해야 한다. 출구 전략은 가격이 하루 최고점을 만지거나 오후 3시에 도착하는 두 가지 조건 중 어느 하나라도 채택한다.

전략적 이점

  1. 여러 시간 주기의 분석은 가짜 신호의 위험을 낮춰줍니다.
  2. 양값과 함께 신호의 신뢰성을 높여줍니다.
  3. 이중 탈퇴 메커니즘은 상승세를 충분히 파악하고, 하룻밤 동안 지분을 보유하는 위험을 방지합니다.
  4. 전략 논리는 명확하고, 이해하기 쉽고, 구현하기 쉽습니다.
  5. 변동성이 높고 유동성이 풍부한 품종에 적합하다

전략적 위험

  1. 급격한 변동 시장은 거래 빈도를 높일 수 있습니다.
  2. 양에너지 지표의 효과는 다른 시장 환경에서 다를 수 있습니다.
  3. 고정 시간 출구가 중요한 가격 돌파구를 놓칠 수 있습니다.
  4. EMA 변수의 선택은 다른 거래 품종에 대해 최적화해야 합니다.
  5. 정지 손실이 설정되지 않은 경우 극단적 인 경우 더 큰 손실이 발생할 수 있습니다.

전략 최적화 방향

  1. 시장 환경의 동력에 따라 조정되는 적응된 양 에너지 값을 도입합니다.
  2. 위험 관리 능력의 증대
  3. 최적화된 퇴출 시간, 역사 데이터 분석에 따라 최적화된 퇴출 시간을 고려할 수 있습니다.
  4. 전략에 부합하지 않는 시장 환경에서 자동으로 거래를 중단하는 시장 환경 필터를 추가합니다.
  5. 가격 변동성 지표 도입을 고려하고 시장 진입 시기를 최적화

요약하다

이 전략은 다중 시간 주기 분석과 수량 가격 관계를 결합하여 비교적 완전한 거래 시스템을 구축한다. 이 전략은 논리적으로 명확하고 구현이 간단하지만 여전히 위험 제어 측면에서 최적화가 필요하다. 거래자는 실장에 사용하기 전에 충분한 역사 데이터 테스트를 수행하고 특정 거래 품종의 특성에 따라 매개 변수를 최적화하는 것이 좋습니다.

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

//@version=5
strategy("Intraday + 1-Hour Trend Match", overlay=true)

// Inputs
emaLength3Min = input.int(50, title="EMA Length (3-Min)")
emaLength1Hr = input.int(50, title="EMA Length (1-Hour)")
volumeMultiplier = input.float(1.5, title="Volume Spike Multiplier")

// Intraday (3-Minute) EMA and Volume Spike
ema3Min = ta.ema(close, emaLength3Min)
volumeSMA = ta.sma(volume, 20)
isVolumeSpike = volume > (volumeSMA * volumeMultiplier)

// 1-Hour Trend (EMA)
ema1Hr = request.security(syminfo.tickerid, "60", ta.ema(close, emaLength1Hr))
is1HrUptrend = close > ema1Hr

// Intraday Signal
buyCondition3Min = close > ema3Min and isVolumeSpike

// Combined Signal: Match 3-Min Signal with 1-Hour Trend
finalBuyCondition = buyCondition3Min and is1HrUptrend

// All-Day High Tracking
var float allDayHigh = na
if (hour == 9 and minute == 0)
    allDayHigh := high // Reset the all-day high at market open
else
    allDayHigh := math.max(allDayHigh, high) // Update all-day high

// Debugging Plots
plot(ema3Min, color=color.blue, title="EMA 3-Min")
plot(ema1Hr, color=color.orange, title="EMA 1-Hour")
plotshape(isVolumeSpike, style=shape.circle, color=color.blue, title="Volume Spike (3-Min)")
plotshape(finalBuyCondition, style=shape.triangleup, color=color.green, title="Buy Signal")
plot(allDayHigh, color=color.red, title="All-Day High", linewidth=2)

// Strategy Execution
if (finalBuyCondition)
    strategy.entry("Buy Signal", strategy.long)

// Exit Conditions
exitCondition = (close == allDayHigh) or (hour == 15 and minute >= 0)
if (exitCondition)
    strategy.close("Buy Signal")