간격 기반 거래 전략


생성 날짜: 2024-02-23 15:09:48 마지막으로 수정됨: 2024-02-23 15:09:48
복사: 0 클릭수: 581
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

간격 기반 거래 전략

개요

간격 거래 전략은 이동 평균을 기반으로 한 트렌드 추적 전략이다. 이 전략은 30일 지수 이동 평균을 사용하여 가격 트렌드를 식별하고, 가격이 평균을 돌파했을 때 진입하고, 가격이 평균 아래로 돌아갔을 때 진출한다. 이 전략은 30분에서 일선 시간 프레임의 거래에 적용된다.

전략 원칙

이 전략은 주로 가격과 30일 지수 이동 평균의 관계를 기반으로 입수 및 퇴출 신호를 판단한다. 구체적으로:

  1. 30일 EMA 지수 이동 평균을 계산하여 동향을 판단하는 기준으로 사용한다.
  2. 가격 상승이 EMA를 돌파했을 때, 여러 신호를 발산하고, 진입한다.
  3. 가격 하락이 EMA를 돌파했을 때, 평지 신호를 발산하고 퇴장한다.

따라서, CAPTURE 가격 트렌드에 대한 돌파구를 통해 트렌드 거래 기회를 잠금합니다.

우위 분석

이 전략은 다음과 같은 장점이 있습니다.

  1. 전략 논리는 간단하고 명확하며, 구현을 이해하기 쉽고, 운영비용은 낮습니다.
  2. EMA를 사용하여 가격 소음을 제거하여 주요 트렌드를 고정하십시오.
  3. 30일 EMA를 선택하면 중장선 트렌드를 식별할 수 있고, 중장선 기회를 추적할 수 있습니다.
  4. 다양한 품종과 시장 환경에 맞는 사용자 정의 가능한 매개 변수

위험과 해결책 분석

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

  1. whipsaw 위험: 가격의 흔들림이 EMA를 뚫은 후 급격히 철회하여 손실을 초래한다. EMA 주기를 적절히 연장할 수 있다.
  2. 트렌드 반전 위험: 중장선 트렌드 반전이 발생하면, 큰 손실이 발생할 수 있다. 손실을 줄이기 위해 중지 전략을 설정할 수 있다.
  3. 매개 변수 선택 위험: EMA 주기가 적절하게 설정되어 있지 않아 트렌드를 효과적으로 추적할 수 없습니다. 자기 적응 EMA 또는 다중 EMA 조합 방식을 사용할 수 있습니다.

전략 최적화 방향

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

  1. 자율 적응 EMA: 시장의 변동성과 품종 특성에 따라 자동으로 EMA 매개 변수를 조정하여 안정성을 향상시킵니다.
  2. 다중 EMA 시스템을 추가: 단기 및 장기 EMA를 조합하여 장단기 트렌드를 추적합니다.
  3. 손해 제도를 늘리세요: 이동적 손해 제도를 설치하거나, 단편적 손해를 줄이기 위해 정리적 손해 제도를 설치하세요.
  4. 다른 지표와 결합: 통합 운동량 지표, 변동률 지표 등의 필터 신호, 전략 효율성을 높인다.
  5. 매개 변수 최적화: 최적의 매개 변수 조합을 찾기 위해 기계 학습과 같은 방법을 사용합니다.

요약하다

간격 거래 전략은 가격의 EMA 돌파를 포착하는 방식으로 트렌드 추적을 수행하는 간단한 실용적인 계량화 전략입니다. 이 전략은 중장선 지점을 보유하거나 단선 거래를 할 수 있도록 유연하게 조정 및 최적화 할 수 있습니다.

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

//@version=5
strategy("Spaced Out Trading Strategy", overlay=true)

// Define strategy parameters
emaPeriod = input(30, title="EMA Period")  // Longer EMA period for more spaced-out trades
stopLossPct = input(2.0, title="Stop Loss Percentage")  // Stop loss percentage
takeProfitPct = input(3.0, title="Take Profit Percentage")  // Take profit percentage

// Calculate EMA
emaValue = ta.ema(close, emaPeriod)

// Define entry and exit conditions
enterLong = ta.crossover(close, emaValue)
exitLong = ta.crossunder(close, emaValue)

// Place orders
contractsQty = 5  // Number of contracts to buy
var float lastTradePrice = na  // Track the last trade price
if enterLong and strategy.position_size == 0
    strategy.entry("Buy Call", strategy.long, qty = contractsQty)
    lastTradePrice := close
else if exitLong and strategy.position_size > 0
    strategy.close("Buy Call")
    lastTradePrice := na

// Calculate stop loss and take profit
stopLossPrice = lastTradePrice * (1 - stopLossPct / 100)
takeProfitPrice = lastTradePrice * (1 + takeProfitPct / 100)
strategy.exit("Sell Call", "Buy Call", stop = stopLossPrice, limit = takeProfitPrice)