모멘텀 브레이크아웃 백테스트 지원 저항 전략


생성 날짜: 2024-02-22 16:07:14 마지막으로 수정됨: 2024-02-22 16:07:14
복사: 0 클릭수: 619
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

모멘텀 브레이크아웃 백테스트 지원 저항 전략

개요

이 전략은 주로 전날 거래의 최고 가격, 최저 가격 및 종결 가격을 그날의 지원 및 저항 지점으로 사용하며, 저항 지점을 돌파 할 때 더 많이 하고, 지원 지점을 다시 테스트 할 때 공백을 낸다. 전형적인 돌파 전략이다.

전략 원칙

코드는 먼저 지원 저항 지점을 계산하는 함수를 정의합니다. 이 함수는 전 거래일 최고 가격, 최저 가격 및 종식 가격을 추출하여 당일 지원 저항 지점으로 사용합니다.

이 함수를 호출하면 3가지의 값이 나오고, 그림이 나타난다.

재측정 논리에서는, 만약 종결 가격이 전날 최저 가격보다 낮아지고 현재 가격이 그 최저 가격보다 높으면 브레이크를 구성한다. 더 많이 한다. 만약 종결 가격이 전날 최고 가격보다 높고 현재 가격이 그 최고 가격보다 낮은 것이 브레이크를 구성한다.

이런 획기적인 모델로 트렌드를 판단하고 거래 신호를 생성할 수 있다.

전략적 이점

  1. 이전 거래일 데이터를 사용하여 당일 지원 저항 지점을 구성하여 변수 최적화 문제를 피합니다.
  2. 지원 저항 지점은 실제 시장 거래 데이터에서 비롯된 것으로, 특정 기준값을 가지고 있습니다.
  3. 리포트 모델은 간단하고 직관적이며 이해하기 쉬운 구현입니다.
  4. 지원 저항 지점을 시각화하여 가격에 대한 인식을 형성합니다.
  5. 실시간으로 돌파구를 감시하고 거래 기회를 잡습니다.

전략적 위험

  1. 지원 저항 지점은 시간이 지남에 따라 변할 수 있으며, 그 유효성을 확인할 수 없습니다.
  2. 트렌드 방향을 예측할 수 없는 상황에서는 역전을 놓칠 수 있습니다.
  3. 가짜 침입에 취약하고 조기 입학 위험
  4. 파격의 지속성을 확인할 수 없으며, 조기 중단될 가능성이 있다.
  5. 주식 시장이 급격하게 변동할 때 주식 지탱력이 떨어질 가능성이 높습니다.

대책:

  1. 더 많은 요소와 함께, 진출의 효과에 대해 판단합니다.
  2. 트렌드를 잡기 위해 스톱 로드를 적절히 확대합니다.
  3. 지위를 세분화하여 주식 변동의 영향을 줄이십시오.

전략 최적화

  1. 5일선, 10일선 가격과 같은 저항 지점을 판단하는 더 많은 역사적 데이터를 추가합니다.
  2. 거래량과 같은 지표와 함께 돌파구의 유효성을 판단합니다.
  3. 실제 변동에 따라 스톱 리스 설정
  4. 자금 관리를 최적화하고 단독 손실을 통제합니다.

요약하다

이 전략은 전체적으로 전형적인 브레이크 전략으로, 단순하고 직관적이며, 전 거래일 데이터를 통해 당일 지지 저항을 구성하고, 그 브레이크를 재검토한다. 장점은 구현을 이해하기 쉽고, 지지 저항을 직접 볼 수 있다는 것이다. 단점은 가짜 브레이크 위험이 존재하고, 트렌드 지속성을 결정할 수 없다는 것이다. 다음 단계는 브레이크 효과를 확인하고, 위험을 제어하고, 자금 관리를 최적화하는 등의 측면에서 최적화할 수 있다.

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

//@version=5
strategy("Support and Resistance with Backtesting", overlay=true)

// Function to calculate support and resistance levels
calculateSupportResistance() =>
    highPrevDay = request.security(syminfo.tickerid, "D", high[1], lookahead=barmerge.lookahead_on)
    lowPrevDay = request.security(syminfo.tickerid, "D", low[1], lookahead=barmerge.lookahead_on)
    closePrevDay = request.security(syminfo.tickerid, "D", close[1], lookahead=barmerge.lookahead_on)
    [highPrevDay, lowPrevDay, closePrevDay]

// Call the function to get support and resistance levels
[supResHigh, supResLow, supResClose] = calculateSupportResistance()

// Plotting support and resistance levels
plot(supResHigh, color=color.red, linewidth=2, title="Previous Day High")
plot(supResLow, color=color.green, linewidth=2, title="Previous Day Low")
plot(supResClose, color=color.blue, linewidth=2, title="Previous Day Close")

// Backtesting logic
backtestCondition = close[1] < supResLow and close > supResLow
strategy.entry("Long", strategy.long, when=backtestCondition)

// Plotting buy/sell arrows for backtesting
plotarrow(backtestCondition ? 1 : na, colorup=color.green, offset=-1, transp=0)