역추세 돌파 거래 시스템: 여러 날의 가격 패턴과 변동성 필터링을 기반으로 한 양적 전략

ATR SMA
생성 날짜: 2025-02-25 10:49:30 마지막으로 수정됨: 2025-02-25 10:49:30
복사: 2 클릭수: 598
avatar of ianzeng123 ianzeng123
2
집중하다
319
수행원

역추세 돌파 거래 시스템: 여러 날의 가격 패턴과 변동성 필터링을 기반으로 한 양적 전략 역추세 돌파 거래 시스템: 여러 날의 가격 패턴과 변동성 필터링을 기반으로 한 양적 전략

개요

역동성 돌파 거래 시스템은 일선 도표를 위해 특별히 설계된 긴 라인 거래 전략으로, 가격 행동 패턴 식별과 변동률 필터링 메커니즘을 교묘하게 결합한다. 핵심 아이디어는 시장이 연속적으로 하락한 후 잠재적인 역전 기회를 찾는 것이며, 변동률 조건을 통해 시장이 충분한 동력을 확보하여 거래를 지원하는 것이다. 이 전략은 “ 역동성 사고 ” 방식을 채택하여 거래한다.

전략 원칙

역동적인 거래 시스템은 다음과 같은 핵심 원칙에 기초하여 작동합니다.

  1. 입학 조건:

    • 가격행동의 촉발: 시장에서 3개의 연속 적색 기둥이 나타났을 때 (매일 상장 가격이 상장 가격보다 낮다) 시스템은 가능한 초매상태로 인식하고 상장 준비한다.
    • 변동율 필터: 현재 ATR ((평균 실제 파동, 기본 주기는 12) 가 30일 간단한 이동 평균보다 크면만 입장이 허용된다. 이것은 시장이 거래를 지원하기에 충분한 변동성을 보장한다.
  2. 출전 조건:

    • 반전 신호: 3개의 연속적인 녹색 기둥이 나타났을 때 (매일 상장 가격이 상장 가격보다 높다) 시스템은 상승 추세가 끝났을 것으로 판단하여 평점으로 퇴출한다.
    • 시간 제한: 시장 조건과 상관없이, 최대 거래 기간 (설정 22 일) 에 도달한 모든 거래는 강제 평지 처리가 됩니다. 이것은 정체 또는 불리한 시장 조건의 위험 노출을 제한하는 데 도움이됩니다.
    • 출전 조건 선택: 전략은 거래자가 “3개의 녹색 기둥” 출구 조건을 활성화 할 것인지 여부를 선택할 수 있도록 허용하여 시간 기반의 출구 메커니즘을 개별적으로 사용할 수 있습니다.
  3. 매개변수 설정:

    • 최대 거래 기간 ((일): 기본 22일
    • ATR 주기: 12일
    • 3개의 초록색 기둥으로 출전: 이 출전 조건을 활성화 또는 비활성화 할 수 있습니다.

코드는 정확한 거래 논리를 구현하고 있으며, 거래 기간을 계산하기 위해 입시 기둥 지수를 기록하고 거래 종료 후 관련 변수를 재배치합니다. 또한, 전략은 입시 및 출구 신호의 그래픽 표시와 현재의 ATR 및 30 일 평균의 곡선을 제공하는 시각적 요소를 제공합니다.

전략적 이점

코드의 심층적인 분석을 통해, 이 전략은 다음과 같은 중요한 장점을 보여준다:

  1. 역설적 사고이 전략은 시장이 계속 하락한 후 시장에 진입하는 역으로 사고하는 것으로, 이는 ‘공황 상태에서 구매’하는 고전적인 거래 지혜에 부합하며, 오버셀 반발 기회를 잡는 데 도움이 됩니다.

  2. 변동율 필터현재 ATR이 30일 이동 평균보다 크기를 요구함으로써, 전략은 시장에서 충분한 변동성이 있을 때만 거래하도록 보장하고, 변동성이 적은 평준화 시장에 진입하는 것을 피합니다.

  3. 명확한 출전 메커니즘전략은 두 가지 출구 메커니즘을 제공합니다. 반전 신호에 기반한 출구와 시간에 기반한 출구로, 거래자가 위험을 유연하게 관리하고 거래의 긴 정체를 방지할 수 있습니다.

  4. 변수 사용자 정의: 최대 거래 지속 시간, ATR 주기 및 출구 조건과 같은 중요한 매개 변수는 다른 시장과 거래자의 선호도에 따라 조정할 수 있습니다.

  5. 리스크 관리 내장: 최대 거래 지속 시간 설정은 시장이 명확한 출구 신호를 주지 않더라도 어떤 단일 거래의 위험 노출 시간을 강제적으로 제한합니다.

  6. 시각 확인 도구이 전략은 입출력 신호의 그래픽 표시와 ATR 지표의 시각화를 포함하고 있어 거래자가 전략의 실행을 감시할 수 있다.

  7. 간단하지만 효과적입니다.개념은 단순하지만, 전략은 가격행동과 변동률 분석을 결합하여 거래 의사결정의 질을 향상시키고, 복잡한 지표가 초래할 수 있는 지연과 변수 과다 적합 문제를 피합니다.

전략적 위험

이 전략은 합리적으로 설계되었지만, 코드를 분석한 결과 다음과 같은 잠재적인 위험들이 발견되었습니다.

  1. 가짜 침입 위험3일 연속 하락은 반드시 반전이 다가오고 있다는 것을 의미하지 않으며, 시장이 계속 하락하는 추세를 지속할 수 있기 때문에 진입점이 바람직하지 않습니다.

    • 해결 방법추가적인 확증 지표가 추가되는 것을 고려하십시오. 상대적으로 강하고 약한 지표 (RSI) 또는 과매매 상태를 확인하기 위해 무작위 지표.
  2. 변동률 위험높은 변동성은 시장이 불안정하다는 것을 의미할 수 있으며 거래 기회를 제공하지만 급격한 가격 변동의 위험을 증가시킵니다.

    • 해결 방법: 더 엄격한 손해 제도를 적용하거나, 기회와 위험을 균형을 맞추기 위해 변동율 필터의 파라미터를 조정한다.
  3. 시간으로 빠져나가는 맹목성: 시장의 현재 상황을 고려하지 않고 고정된 날짜에 기반한 탈퇴는 유리한 흐름에서 조기 탈퇴 또는 불리한 흐름에서 너무 늦은 탈퇴로 이어질 수 있다.

    • 해결 방법: 이동 상쇄 또는 가격 수준에 따른 탈퇴 조건을 고려하여 더 유연하게 출전을 할 수 있습니다.
  4. 매개변수 민감도: 전략 성능은 ATR 주기, 최대 거래 지속 시간 등과 같은 파라미터 선택에 매우 민감할 수 있다.

    • 해결 방법: 특정 시장 조건에 적합한 견고한 파라미터 조합을 찾기 위해 철저한 파라미터 최적화 및 재검토를 수행하십시오.
  5. 손해 방지 장치의 부재현재 전략은 전통적인 의미에서 손실을 막는 기능을 수행하지 못하고 있으며, 이는 시장의 급격한 변동으로 인해 과도한 손실을 초래할 수 있습니다.

    • 해결 방법: 고정된 비율 또는 ATR 배수를 기반으로 하는 손해 차단 장치를 추가한다.
  6. 시장 상황에 따라 달라집니다.: 이 전략은 특정 시장 조건에서 잘 작동할 수 있지만 다른 시장 단계에서는 좋지 않을 수 있습니다.

    • 해결 방법: 시장 상태 필터를 개발하여 전략에 적합한 시장 조건에서만 거래를 활성화하십시오.

전략 최적화 방향

코드 분석을 바탕으로 이 전략의 잠재적인 최적화 방향은 다음과 같습니다.

  1. 자동 ATR 필터를 추가합니다.: 현재 고정된 30일 ATR 평균선을 변동률 기준으로 사용하며, 자기 적응 주기 (自适应周期) 를 사용하여 시장 상황의 동성에 따라 ATR 참조 주기 (ATR reference cycle) 를 조정할 수 있다. 이렇게하면 트렌드 시장과 종합 시장에서 이상적인 ATR 참조 주기 (ATR reference period) 가 달라질 수 있기 때문에, 다양한 시장 환경에 더 잘 적응할 수 있다.

  2. 동적인 최대 거래 지속 시간: 최대 거래 기간은 시장의 변동성이나 트렌드 강도에 따라 동적으로 조정할 수 있습니다. 강한 트렌드 시장에서 더 긴 지분 시간을 허용하고 약한 트렌드 또는 정리 시장에서 지분 시간을 줄일 수 있습니다.

  3. 손해 방지 장치 추가: ATR 배수를 기반으로 한 중지 손실 설정을 도입하여 단일 거래의 최대 손실을 제한하고 자금 관리 효율성을 향상시킵니다. 예를 들어, 시작 가격으로 현재의 ATR 값을 2배로 줄인 중지 손실을 설정할 수 있습니다.

  4. 트렌드 필터에 포함됩니다.: 더 넓은 트렌드 필터를 추가하여 (예를 들어, 더 긴 기간의 이동 평균을 기반으로) 큰 트렌드 방향에서만 거래하도록 보장하고, 큰 트렌드의 역으로 상향으로 거래하는 것을 피하십시오.

  5. 입학 조건의 최적화: 더 복잡한 가격 모형을 사용하거나 기술 지표 (RSI, MACD와 같은) 를 결합하여 진입 신호를 확인하고 진입 품질을 향상시키는 것을 고려하십시오.

  6. 일부 수익 잠금: 거래가 일정 수준의 수익을 달성한 후, 일부 포지션을 청산하여 수익의 일부를 잠금 할 수 있으며, 잠재적인 더 큰 움직임을 잡기 위해 나머지 포지션을 계속 보유 할 수 있습니다.

  7. 거래량 검증을 추가합니다.: 거래량을 신호 확인의 추가 조건으로 삼는 것, 예를 들어 연속적으로 하락하는 날의 거래량이 점차적으로 줄어들도록 요구하는 것 (매매자의 동력이 약화), 이는 더 높은 품질의 역전 기회를 나타낼 수 있다.

  8. 계절적 조정: 다른 시장 계절 (달, 분기 등) 이 전략의 성과에 미치는 영향을 분석하고, 특정 기간 동안 계절 효과를 대응하기 위해 전략 매개 변수를 비활성화하거나 조정할 수 있습니다.

요약하다

역동성 돌파 거래 시스템은 가격 행동 패턴과 변동률 필터링을 결합한 양적 거래 전략으로, 시장이 단기간에 과매매된 후의 부진 기회를 포착하기 위한 것이다. 시장이 3일 연속으로 하락하고 변동률이 평균보다 높을 것을 입시 조건으로 요구하면서, 명확한 신호 또는 시간에 기반한 출구 메커니즘을 설정하는 이 전략은 이론적으로 거래 기회와 위험 통제를 균형을 잡을 수 있다.

전략의 주요 장점은 간단하고 직관적인 논리, 내장된 위험 관리 메커니즘 및 사용자 정의 가능한 매개 변수 설정으로 인해 다양한 거래자 선호도 및 시장 환경에 적합합니다. 그러나 전략은 가짜 돌파구, 변동률 위험 및 매개 변수 민감성 등의 도전에 직면하여 확인 지표를 추가하고, 손해 방지 장치를 구현하고, 매개 변수 설정을 최적화하여 관리해야합니다.

자동 적응 ATR 필터, 동적인 최대 거래 지속 시간, 스톱 로드 메커니즘을 추가하는 것과 같은 추가 최적화 을 통해 전략의 안정성과 적응성을 강화할 수 있습니다. 무엇보다도 거래자는 실제 배치 전에 충분한 회귀와 매개 변수 최적화를 통해 특정 시장 조건에서 전략의 유효성을 확인하고 개인의 위험 용량과 투자 목표에 따라 매개 변수를 조정해야합니다.

이 전략은 기술 분석과 위험 관리 원칙을 결합하여 거래자에게 구조화된 방법을 제공하여 시장의 역전 기회를 잡을 수있는 가치있는 수량 거래 프레임 워크를 제공합니다. 그것은 거래 시스템을 설계하기 위해 가격 행동과 변동률을 활용하는 방법을 보여주는 것뿐만 아니라 성공적인 거래에서 출구 전략과 위험 통제의 중요성을 강조합니다.

전략 소스 코드
/*backtest
start: 2024-02-25 00:00:00
end: 2024-12-14 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"SOL_USDT"}]
*/


//@version=6
strategy("3 Red / 3 Green Strategy with Volatility Check", overlay=true, initial_capital=100000, currency=currency.USD)

// Input parameters
maxTradeDuration = input.int(title="Maximum Trade Duration (days)", defval=22, minval=1)
useGreenExit   = input.bool(title="Use 3 Green Days Exit", defval=true, tooltip = "Exit condition: either 3 consecutive green days (if enabled) or if the trade duration reaches maxTradeDuration days.")
atrPeriod      = input.int(title="ATR Period", defval=12, minval=0, step=1, tooltip="Use zero to disable ATR filter")

// Define red and green days based on open vs close prices
redDay   = close < open
greenDay = close > open

// Conditions: 3 consecutive red days trigger an entry; 3 consecutive green days trigger an exit.
threeRed   = redDay and redDay[1] and redDay[2]
threeGreen = greenDay and greenDay[1] and greenDay[2]

var float currentATR = 0.0
var float averageATR = 0.0
var bool atr_entry = true

// Calculate ATR and its 30-day average
if(atrPeriod>0)
    currentATR := ta.atr(atrPeriod)
    averageATR := ta.sma(currentATR, 30)

atr_entry := (currentATR > 0 and averageATR > 0) ? (currentATR > averageATR) : true
// Persistent variable to record the bar index when the trade is entered.
var int entryBarIndex = na

// Entry: When no position is open, 3 consecutive red days occur, and current ATR is above its 30-day average, enter a long trade.
if (strategy.position_size == 0 and threeRed and atr_entry)
    strategy.entry("Long", strategy.long)
    entryBarIndex := bar_index

// Compute trade duration in days using the absolute difference
tradeDuration = not na(entryBarIndex) ? math.abs(bar_index - entryBarIndex) : 0

// Exit condition: either 3 consecutive green days (if enabled) or if the trade duration reaches maxTradeDuration days.
exitCondition = (useGreenExit and threeGreen) or (tradeDuration >= maxTradeDuration)

if (strategy.position_size > 0 and exitCondition)
    strategy.close("Long")

// Reset the entry bar index when a trade just closed.
if (strategy.position_size[1] > 0 and strategy.position_size == 0)
    entryBarIndex := na

// Optional: Plot signals and ATR values for visual confirmation.
plotshape(threeRed, title="Entry Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.tiny)
plotshape(threeGreen, title="Green Exit Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.tiny)
plot(currentATR, title="Current ATR", color=color.blue)
plot(averageATR, title="30-Day Average ATR", color=color.orange)