모멘텀 브레이크업 전략

저자:차오장, 날짜: 2024-01-17 13:58:19
태그:

img

전반적인 설명

이 전략은 가격 동력 지표를 활용한 트렌드 다음 전략입니다. 특정 기간 동안의 종료 가격 변화를 계산하여 시장 트렌드를 판단하고 지속적인 상승 또는 하락 가격 추세가있을 때 해당 긴 또는 짧은 항목을 만듭니다.

전략 논리

이 전략의 핵심 지표는 가격 동력입니다. 동력은 이렇게 계산됩니다.

momentum = close - close[n] 

여기서 n는 동력 기간의 길이를 나타냅니다. 동력 > 0이면, 현재 기간 동안 가격이 상승하고 있음을 의미합니다. 동력 < 0이면, 현재 기간 동안 가격이 하락하고 있음을 의미합니다.

전략은 먼저 confirmBars 매개 변수를 설정하여 거래를 실행하기 전에 트렌드 판단에 필요한 촛불의 수를 나타냅니다. 백테스트 범위 내에서 confirmBars 촛불에 대한 추진력 > 0이 지속되는 경우 긴 엔트리가 이루어집니다. confirmBars 촛불에 대한 추진력 < 0이 지속되는 경우 짧은 엔트리가 이루어집니다.

전략의 트렌드 판단의 핵심은 bcount 및 scount 변수를 통해 달성되는 0보다 크거나 작은 연속 촛불의 수를 계산하는 데 있습니다. 해당 조건이 충족되면 1으로 증가하고 조건이 충족되지 않을 경우 0으로 재설정됩니다. 카운트가 confirmBars에 도달하면 해당 긴 또는 짧은 거래가 실행됩니다.

전략적 장점

이것은 다음과 같은 장점을 가진 전략에 따라 비교적 간단한 추세입니다.

  1. 이해하기 쉽고 실행하기 쉬운 간단한 논리
  2. 동력 지표는 가격 변화에 민감하며 빠르게 추세를 파악할 수 있습니다.
  3. 판단 감수성을 조정할 수 있는 매개 변수
  4. 다양한 시장 환경에서 사용할 수 있습니다.

전략 위험

이 전략은 또한 몇 가지 위험을 안고 있습니다.

  1. 여러 차례 오스실레이션 거래 및 오버 트레이딩에 유연합니다.
  2. 합리적인 매개 변수 구성이 필요합니다. 특히 오시레이션을 필터하기 위해 확인 바
  3. 갑작스러운 시장 사건의 영향에 효과적으로 대처할 수 없습니다.
  4. 백테스트와 라이브 거래의 차이점, 데이터 및 매개 변수 최적화가 필요합니다.

전략 최적화

이 전략은 몇 가지 측면에서 최적화 될 수 있습니다.

  1. 거래 리스크별 제어에 스톱 로스 로직을 추가합니다.
  2. 가격 변동으로부터 잘못된 신호를 피하기 위해 브레이크아웃 필터를 추가합니다.
  3. 다른 제품과 시장 환경에 따라 확인 바르 등을 매개 변수를 조정
  4. 항목을 확인하기 위해 다른 지표를 포함
  5. 매개 변수와 필터를 조정하기 위해 기계 학습 방법을 사용

요약

요약하자면, 이 모멘텀 브레이크아웃 전략은 도입적 양 거래 전략으로 적합한 간단한 그리고 실용적인 트렌드 다음 전략이다. 응용에서는 거래 빈도를 제어하고 과잉 거래를 방지하는 데 주의가 필요합니다. 한편, 매개 변수와 필터는 전략이 최대 성능을 달성하기 위해 실제 제품과 시장 환경에 따라 조정 및 최적화되어야합니다.


/*backtest
start: 2024-01-09 00:00:00
end: 2024-01-16 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Momentum Strategy [TS Trader]", overlay=true)

confirmBars = input(1)
momentumLength = input(14, title="Momentum Length")

price = close
momentum = close - close[momentumLength]

// === INPUT BACKTEST RANGE ===
fromYear = input.int(2019, title="Backtest Start Year")
fromMonth = input.int(1, title="Backtest Start Month", minval=1, maxval=12)
fromDay = input.int(1, title="Backtest Start Day", minval=1, maxval=31)
toYear = input.int(2023, title="Backtest End Year")
toMonth = input.int(12, title="Backtest End Month", minval=1, maxval=12)
toDay = input.int(31, title="Backtest End Day", minval=1, maxval=31)

startTimestamp = timestamp(fromYear, fromMonth, fromDay, 00, 00)
endTimestamp = timestamp(toYear, toMonth, toDay, 23, 59)

inBacktestRange = true

// === STRATEGY LOGIC ===
bcond = momentum > 0
bcount = 0
bcount := bcond ? nz(bcount[1]) + 1 : 0
if (bcount == confirmBars and inBacktestRange)
    strategy.entry("Buy", strategy.long, comment="Long")

scond = momentum < 0
scount = 0
scount := scond ? nz(scount[1]) + 1 : 0
if (scount == confirmBars and inBacktestRange)
    strategy.entry("Sell", strategy.short, comment="Short")

// Plotting Momentum
plot(momentum, title="Momentum", color=color.purple)


더 많은