역동 동력 파업 전략

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

img

전반적인 설명

리버스 모멘텀 브레이크아웃 전략 (Reversal Momentum Breakout Strategy) 은 가격 역전 및 모멘텀 지표를 사용하여 거래 신호를 생성하는 양적 거래 전략이다. 이 전략은 "모멘텀 리드 프라이스"의 이론에 기초하여 시장이 역전 기회를 포착하기 위해 핵심 역전 지점에 있는지 여부를 결정하기 위해 특정 기간 동안 가장 높고 가장 낮은 가격을 추적합니다.

전략 원칙

이 전략의 핵심 논리는 특정 뷰백 윈도우 (예를 들어 20 일) 에서 가장 높고 가장 낮은 가격을 계산하여 시장 전환점을 식별하는 것입니다. 구체적인 논리는 다음과 같습니다.

  1. 지난 20일 동안 가장 높은 가격 (window_high) 과 가장 낮은 가격 (window_low) 을 계산합니다.

  2. 오늘 최고가 지난 20일 최대보다 높다면 (새로운 20일 최고), 높은 반전 모니터링 기간을 입력하고 카운터를 5일로 설정합니다.

  3. 새로운 최고가 발생하지 않으면 카운터를 매일 1으로 인하합니다. 카운터가 0에 도달하면 높은 반전 모니터링 기간이 끝납니다.

  4. 가장 낮은 가격에 대한 판단 논리는 비슷합니다. 새로운 최저가 발생하면 낮은 반전 모니터링 기간을 입력합니다.

  5. 반전 모니터링 기간 내에 긴 포지션과 짧은 포지션이 취득됩니다. 주요 반전 지점 근처의 반전 신호는 더 큰 움직임을 캡처 할 수 있습니다.

이 전략은 또한 역사적인 데이터에 신호를 생성하는 것을 피하기 위해 거래 시작 시간을 설정합니다.

이점 분석

리버스 모멘텀 브레이크업 전략은 다음과 같은 주요 장점을 가지고 있습니다.

  1. 역전 트렌드에 적합한 역전 기회를 포착합니다. 시장은 지속적인 상승 추세 또는 하락 추세 후에 종종 어느 정도 반전을 보여줍니다. 이 전략은 이러한 전환점을 포착하는 것을 목표로합니다.

  2. 모멘텀 리드는 상대적으로 민감합니다. 창을 통해 가장 높고 가장 낮은 가격을 추적하면 가격 반전 추세와 타이밍을 민감하게 식별 할 수 있습니다.

  3. 반전 모니터링 기간은 잘못된 신호를 피합니다. 신호는 주요 반전 지점 주변에서만 생성되며 약간의 소음을 필터합니다.

  4. 긴 포지션과 짧은 포지션을 허용합니다. 시장 방향에 따라 긴 포지션과 짧은 포지션을 대체합니다.

  5. 비교적 간단한 논리, 구현하기 쉬운. 주로 가격과 간단한 모멘텀 지표에 의존하고, 코딩하기 쉽습니다.

위험 분석

이 전략의 주요 위험은 다음과 같습니다.

  1. 부적절한 역전 예측. 시장이 방향성향을 보인다면 전략은 손실을 입을 수 있습니다.

  2. 전체 시장 동향은 고려되지 않습니다. 개별 주식 반전은 반드시 시장 반전을 나타내지 않습니다. 시장 분석이 결합되어야합니다.

  3. 잠재적으로 큰 마취량 마취량은 실제 반전 없이 증가할 수 있습니다.

  4. 데이터 적응 편차. 성능은 백테스트와 크게 다를 수 있습니다.

  5. 매개 변수 민감성. 창 기간, 카운터 매개 변수 등이 안정성에 영향을 미칩니다.

이에 대응하는 리스크 제어 방법에는 스톱 로스 최적화, 시장 요인 통합, 매개 변수 조합 조정 및 안정성 검증 등이 포함됩니다.

개선 방향

주요 최적화 방향은 다음과 같습니다.

  1. 시장 지표를 포함합니다. 불리한 큰 그림 환경을 피하기 위해 시장 강도를 평가하십시오.

  2. 다중 인자 주식 선택. 건전한 기초와 과평가 주식을 선택.

  3. 매개 변수 최적화. 최적의 매개 변수 조합을 찾기 위해 창 기간과 카운터 매개 변수를 조정합니다.

  4. 스톱 로스 전략을 추가합니다. 예를 들어 트레일링 스톱, 변동성 스톱, 최대 드래운드를 제어합니다.

  5. 가격 반전의 예측 정확성을 높이는 기계 학습

결론

리버서스 모멘텀 브레이크아웃 전략은 가격과 모멘텀을 추적하여 리버서스 기회를 식별합니다. 민감하게 반응하여 리버서스 트렌드와 타이밍을 식별합니다. 그러나 적절한 최적화와 위험 통제가 필요한 위험이 있습니다. 전반적으로 철저히 이해하고 최적화되면 양적 거래 시스템의 효과적인 구성 요소를 형성 할 수 있습니다.


/*backtest
start: 2023-02-16 00:00:00
end: 2024-02-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("New Highs and Lows Momentum Strategy", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

window = input.int(20, title="New Highs and Lows Window", minval=1)
decay = input.int(5, title="Decay", minval=1)
startDate = input(timestamp("1 Jan 2023"), title = "Start Date")
allowShort = input.bool(false, title = "Allow shorting")

var int highDecayCounter = 0
var bool isHighPeriod = false
var int lowDecayCounter = 0
var bool isLowPeriod = false

inTradeWindow = true

window_high = ta.highest(close, window)
window_low = ta.lowest(low, window)

// Logic for Highs
if window_high > ta.highest(close, window)[1]
    highDecayCounter := decay
    isHighPeriod := true
else
    if highDecayCounter > 0
        highDecayCounter := highDecayCounter - 1
    else
        isHighPeriod := false

// Logic for Lows
if window_low < ta.lowest(low, window)[1]
    lowDecayCounter := decay
    isLowPeriod := true
else
    if lowDecayCounter > 0
        lowDecayCounter := lowDecayCounter - 1
    else
        isLowPeriod := false

// Strategy Execution
if inTradeWindow
    if isHighPeriod and highDecayCounter == decay
        strategy.entry("Long", strategy.long)

    if isHighPeriod and highDecayCounter == 0
        strategy.close("Long")

    if isLowPeriod and lowDecayCounter == decay and allowShort
        strategy.entry("Short", strategy.short)

    if isLowPeriod and lowDecayCounter == 0 and allowShort
        strategy.close("Short")

// Plotting
plot(window_high, color=color.green)
plot(window_low, color=color.red)

더 많은