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

저자:차오장, 날짜: 2024-02-22 16:07:14
태그:

img

전반적인 설명

이 전략은 주로 이전 거래 날의 높은, 낮은 및 닫는 가격을 현재 날의 지원 및 저항 수준으로 사용합니다. 저항 수준이 깨지면 길고 지원 수준이 백테스트되면 짧습니다. 전형적인 브레이크아웃 전략에 속합니다.

전략 원칙

코드는 먼저 지원 및 저항 수준을 계산하기 위해 함수를 정의합니다. 이는 전날의 거래의 최고, 최저 및 폐쇄 가격을 현재 날의 지원 및 저항 수준으로 추출합니다.

이 함수는 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)


더 많은