거리가 있는 거래 전략

저자:차오장, 날짜: 2024-02-23 15:09:48
태그:

img

전반적인 설명

스페이즈드 아웃 트레이딩 전략 (Spaced Out Trading Strategy) 은 이동 평균에 기반한 트렌드 추종 전략이다. 30일 지수 이동 평균 (EMA) 을 이용하여 가격 트렌드를 파악하고 가격이 EMA 위에/하에 돌파할 때 트레이드를 입력한다. 가격이 EMA 라인 아래/하에 다시 떨어질 때 트레이드를 종료한다. 이 전략은 30분에서 일일 시간 프레임에서 잘 작동한다.

전략 논리

핵심 논리는 가격과 30일 EMA 사이의 관계에 의존하여 엔트리 및 엑시트 신호를 생성합니다. 구체적으로:

  1. 트렌드의 기준으로 30일 EMA를 계산합니다.
  2. 가격이 EMA를 넘을 때 긴 거래를 합니다.
  3. 가격이 EMA 아래로 떨어지면 거래 종료.

트렌드 브레이크를 포착함으로써, 트렌드 다음의 기회와 동력 움직임을 활용하는 것을 목표로 합니다.

이점 분석

이 전략의 주요 장점은 다음과 같습니다.

  1. 이해하기 쉽고 저렴한 비용으로 구현하기 쉬운 간단한 논리입니다.
  2. EMA를 이용해서 가격 변동을 완화하고 주요 추세에 초점을 맞추고 있습니다.
  3. 30일 EMA는 스윙 트렌드와 장기 트렌드를 포착하는 중장기 렌즈를 제공합니다.
  4. 제품과 시장 체제에 따라 조정 가능한 매개 변수.

위험 및 완화

주요 위험 중 일부는 다음과 같습니다.

  1. EMA의 일시적인 파기 후 가격 반전에서 Whipsaw 위험. 더 긴 EMA 기간을 사용할 수 있습니다.
  2. 지속된 트렌드 역전으로 인한 누적 손실 위험
  3. 최저 EMA 기간 리스크. 적응 EMA 또는 여러 EMA를 합성할 수 있습니다.

더 나은 기회

이 전략이 개선될 수 있는 몇 가지 방법:

  1. 시장 변동성과 자산 특성에 맞춘 적응 가능한 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)

더 많은