브레이크백 스톰 전략은 가격 파업 후의 인회 기회를 포착하여 단기적 반전 내에서 숨겨진 폭발적인 움직임을 포착하는 데 특화되어 있습니다. 가격이 이전 지원 수준으로 다시 끌어당길 때 상승 파업 후 오랫동안 이동하기 위해 트렌드 결정과 반전 신호를 결합하고, 가격이 이전 저항 수준으로 다시 반격 할 때 하락 파업 후 단축됩니다. 전략은 엄격한 파업 검증을 통해 대부분의 가짜 파업을 필터링하여 고품질의 엔트리를 보장합니다.
이 전략은 두 가지 주요 트리거를 기반으로 합니다. 장기 기간 동안의 최근 높은/저한 브레이크와 단기간에 있는 풀백 패턴입니다. 구체적으로, 먼저 가격이 80 기간 최고치를 넘어서 고도 추세를 결정하도록 요구합니다. 둘째, 가격이 전날의 최고치를 넘어서 단기 상승 브레이크를 확인하도록 요구합니다. 긴 신호는 브레이크 후 가격이 전날의 낮은 수준을 넘어서면 트리거됩니다.
쇼트 신호는 대칭적으로 작동하며 최근 낮은 브레이크와 전날의 최고 수준으로 복귀를 요구합니다. 이 조합은 트렌드 방향과 엔트리 포인트의 타이밍의 품질을 보장하며 중점을 피하면서 트렌드의 대부분을 캡처합니다.
이 전략은 두 방향 거래와 브레이크아웃 개념을 결합하여 중요한 우위를 점합니다.
특히, 80주기 필터는 단기 소음에 대한 대부분의 잘못된 브레이크를 피합니다. 전날의 극한점을 깨는 것은 단기 트렌드 진화를 안정적으로 잡습니다. 이러한 품질 신호는 거래의 방향 정확성을 보장합니다.
특정 스톱 로스 버퍼를 제공하는 풀백 엔트리는 트렌드 중부의 대부분을 나중에 캡처합니다. 이것은 전략의 수익성있는 안정성을 보장합니다.
마지막으로, 타이밍 출구 메커니즘은 감정적 간섭을 최소화하여 미리 결과 시나리오를 정의함으로써 수익성과 위험 통제 요인을 모두 균형 잡습니다.
그러나 이 전략에는 몇 가지 위험이 있습니다.
첫 번째 위험은 인하 진입 설정에서 발생합니다. 시장에서 동시 상승 추세와 하락 추세 파도가 나타나면 양쪽의 진입 신호가 밀려들어 양쪽의 진입을 막을 수 있습니다.
이것은 출구 필터를 조정하고 최소 브레이크오웃 범위를 설정하여 신호를 공간으로 설정함으로써 피할 수 있습니다.
두 번째 위험은 빈번한 반전으로 인한 윙사와 관련이 있습니다. 과도한 긴 / 짧은 스위치는 비용과 실제 손실을 증가시킵니다.
이것은 필요없는 출구를 최소화하기 위해 유지 기간과 중지 손실 매개 변수를 조정함으로써 줄일 수 있습니다.
마지막으로, 그 후의 반전 모멘텀은 통일 범위 내에서 충분한 규모가 때때로 부족 할 수 있습니다. 추가 장기 트렌드 메트릭은 저품질의 설정을 피하는 데 도움이 될 수 있습니다.
분석에 근거하여 추가 최적화는 다음과 같습니다.
이윤 정지 또는 손익분기 정지 이동은 처음에는 이윤을 고정시키고 회귀를 피할 수 있습니다.
ATR 및 RVI와 같은 변동성 지표는 또한 낮은 기회 기간을 피하기 위해 변동 체제를 측정 할 수 있습니다.
마지막으로 계절의 변화를 둘러싼 순환적 추세는 부작용을 최소화하기 위해 더 큰 추세 공간을 제공합니다.
전반적으로, 브레이크백 스톰 전략은 트렌드 브레이크오웃 이후 단기 트렌드 역전 기회를 포착하는 것을 목표로 한다. 장기 트렌드 필터, 단기 역전 신호, 브레이크오웃 검증 및 풀백 엔트리를 결합함으로써, 더 큰 트렌드 움직임 내에서 트레이드 풀백을 위한 견고한 프레임워크를 제공한다. 적절한 수익 취득, 변동성 메트릭 및 계절 필터로 최적화되면, 그러한 프레임워크는 다양한 시장 조건에서 안정적인 수익을 창출할 수 있다.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("Smash Day Pattern (Type B)", overlay=true, default_qty_type = strategy.fixed, default_qty_value = 1, initial_capital = 10000) in1 = input(40, "Max Days to Hold") - 1 isLong = strategy.position_size > 0 isShort = strategy.position_size < 0 longTrigger = close[1]<low[2] shortTrigger = close[1]>high[2] longFilter = close[1] > close[80] shortFilter = close[1] < close[80] longEntry = (not isLong) and longTrigger and longFilter shortEntry = (not isShort) and shortTrigger and shortFilter longStop = valuewhen(longEntry, low[1], 0) longPrice = valuewhen(longEntry, high[1], 0) shortStop = valuewhen(shortEntry, high[1],0) shortPrice = valuewhen(shortEntry, low[1], 0) strategy.entry(id = "Long", long = true, stop = longPrice+.001, when = longEntry) strategy.exit(id = "Stop Long", from_entry = "Long", stop = longStop, when = isLong) strategy.close("Long", barssince(longEntry==true)>=in1) strategy.entry(id = "Short", long = false, stop = shortPrice-.001, when = shortEntry) strategy.exit(id = "Stop Short", from_entry = "Short", stop = shortStop, when = isShort) strategy.close("Short", barssince(shortEntry==true)>=in1)