다기간 개장 범위 돌파 전략(지정가 진입) 및 자동 손절매 및 손절매 관리 시스템

ORB 日内交易 突破策略 限价订单 交易系统 风险管理 技术分析 量化交易 OHLC EOD
생성 날짜: 2025-04-09 17:18:24 마지막으로 수정됨: 2025-04-09 17:18:24
복사: 0 클릭수: 576
avatar of ianzeng123 ianzeng123
2
집중하다
319
수행원

다기간 개장 범위 돌파 전략(지정가 진입) 및 자동 손절매 및 손절매 관리 시스템 다기간 개장 범위 돌파 전략(지정가 진입) 및 자동 손절매 및 손절매 관리 시스템

전략 개요

다주기 상장구간 돌파전 전략 (限價入場策略) 은 시장의 이른 상장 동력을 포착하기 위한 일일 거래 시스템이다. 이 전략은 미국 동부 시간 9:30-9:35 (開盤後前5分鐘) 에 기반한 가격구간이 형성되어, 이 구역의 돌파 방향을 모니터링하여 시장의 흐름을 결정한다. 전통적인 돌파전 전략과 달리, 이 전략은 상장구간 가장자리에 제한 주문을 적용하여, 상장률을 높여주고, 더 우수한 입점 가격을 얻는다. 이 전략은 자동 상장, 동적 상장 배수 세팅 및 거래일 종료 전에 강제 포지션 평준화 제도를 갖추고 있으며, 완전한 위험 관리 시스템을 형성한다.

전략 원칙

전략의 핵심 논리는 다음과 같은 몇 가지 핵심 단계에 기반합니다.

  1. 개방된 공간미국 동부 시간 9:30-9:35 (오프닝 후 5분) 의 최고점과 최저점을 포착하여 “오프닝 간격”을 형성한다.
  2. 방향 인식: 가격이 오픈 범위를 완전히 뚫을 때까지 기다립니다 (즉, 이 범위에 완전히 위에 있거나 아래에 있습니다) 트렌드 방향을 확인합니다.
  3. 제한된 입장료: 방향이 확정되면 즉시 시장가격에 따라가지 않고, 구간 경계 (Resistance Shift Support 또는 Support Shift Resistance Bit) 에 제한 가격 주문을 두어, 가격이 구간 경계로 회귀할 때 입장을 기다린다.
  4. 위험 관리: 스톱 로즈는 오픈 영역의 반대편에 위치하여 위험 경계선을 명확하게 형성한다.
  5. 정지 전략: 스톱 거리 곱하기 구성 가능한 배수 ((비용 2.0) 를 기반으로, 동적 스톱 목표를 설정하십시오. 가격이 주문 전에 계산 된 스톱 목표를 초과 한 경우, 가격 극한을 스톱 위치로 사용합니다.
  6. 탈퇴 시간거래가 정지 또는 상쇄를 유발하지 않으면 오전 15시 55분 EST에서 자동으로 청산하여 밤새의 위험을 피하십시오.

전략 구현에는 파인 스크립트의 상태 관리 메커니즘이 사용되며, 각 거래 날의 시작에 모든 변수가 재설정되어 서로 다른 거래 날 사이에 서로 독립성을 보장한다. 가격 제한 주문 메커니즘을 통해, 전략은 추세가 확인된 후, 더 유리한 가격으로 진입할 수 있으며, 미끄러짐의 영향을 줄이고 위험과 수익률을 높일 수 있다.

전략적 이점

코드에 대한 심층적인 분석을 통해, 이 전략은 다음과 같은 중요한 장점을 가지고 있습니다:

  1. 디스크의 움직임을 정확하게 포착합니다.시장 개시 후 첫 5 분은 일반적으로 많은 주문이 축적되고 주요 참가자의 초기 입장을 반영합니다. 이 전략은 높은 정보의 시간 창을 효과적으로 활용합니다.
  2. 제한 가격 입장이 비용 절감가격 제한 입장은 상가 입장에 비해 우수한 입장을 얻을 수 있으며, 이는 경차 비용을 줄이고 전반적인 전략의 성과를 향상시키는 데 중요합니다.
  3. 거래 영역을 시각화전략은 시장 구조를 직관적으로 이해하는 데 도움이 되는 명확한 시각적 보조를 제공하며, 오픈 구역과 잠재적인 거래 지역을 보여줍니다.
  4. 동적 위험 관리: 정지배수는 시장의 변동성에 따라 조정될 수 있으며, 다른 시장 환경에 더 잘 적응할 수 있다.
  5. 자동화 작업 프로세스입시 인식에서 퇴출 관리에 이르기까지 모든 거래 과정이 완전히 자동화되어 인간의 개입과 감정적 인 영향을 줄입니다.
  6. 일간 거래는 밤새의 위험을 피합니다.: 강제적으로 상장하기 전에 상장할 수 있는 메커니즘은 하룻밤 사이에 상장할 수 있는 위험에서 벗어날 수 있습니다.
  7. 논리적으로 명확하고 확장 가능전략 구조는 모듈화되어 있으며, 각 기능이 독립되어 있어 향후 전략 최적화 및 확장이 용이하다.

전략적 위험

이 전략은 합리적으로 설계되었지만, 다음과 같은 잠재적인 위험들이 있습니다.

  1. 너무 좁은 구간으로 인해 자주 오류가 발생합니다.: 만약 5분 전의 변동이 아주 작다면, 형성된 간격이 너무 좁아지면, 스톱피스가 너무 가깝게 되어 쉽게 트리거 될 위험이 증가할 수 있다. 해결 방법: 최소 간격 폭 제한을 증가시킬 수 있다, 또는 역사적인 변동률에 따라 동적으로 조정할 수 있다.

  2. 높은 변동성 시장에서의 미끄러짐 위험: 제한 가격 주문이 사용되었지만, 극단적으로 변동하는 시장에서 가격이 출입 가격을 빠르게 통과하여 주문이 거래되지 않습니다. 해결 방법: 대안 추적 출입 메커니즘을 추가하는 것이 고려 될 수 있습니다.

  3. 가짜 함정을 뚫고: 가격이 오픈 디스크 범위를 뚫은 후 빠르게 다시 내려가 가짜 브레이크를 형성할 수 있다. 해결 방법: 확인 필터를 추가할 수 있다. 예를 들어, 브레이크 이후의 지속 시간이나 브레이크 강도가 특정 값에 도달하도록 요구한다.

  4. 고정 시간 창의 한계다른 거래 날의 시장 활동은 다를 수 있으며, 고정된 5분 오픈 간격이 항상 최적이 아닐 수 있습니다. 해결 방법: 변동율의 동력에 따라 시간 창의 길이를 조정하는 것이 고려 될 수 있습니다.

  5. 근본적인 충격은 고려되지 않았습니다.전략은 기술적인 방향이며, 주요 뉴스나 경제 데이터 발표가 시장에 미치는 영향을 고려하지 않습니다. 해결책: 경제 달력 필터 기능을 통합하여 중요한 데이터 발표일에는 전략 매개 변수를 조정하거나 거래를 중지합니다.

전략 최적화 방향

코드 분석을 바탕으로, 이 전략은 다음과 같은 방향으로 최적화될 수 있습니다:

  1. 개장 영역에 적응: 현재 전략은 고정된 5분 시간창을 사용하며, 시장의 변동율에 따라 개량된 오픈 간격의 길이를 조정할 수 있습니다. 이것은 다른 시장 조건에 더 잘 적응할 수 있으며, 낮은 변동의 날에 간격의 길이를 늘려 더 의미있는 간격을 잡을 수 있습니다.

  2. 다중 인증 메커니즘: 추가적인 기술 지표가 도입될 수 있습니다 (예: 거래량, RSI 또는 이동 평균) 돌파구 확인 조건으로, 가짜 돌파구 위험을 줄입니다. 동시에 충족되는 여러 조건을 요구함으로써 출입 신호의 신뢰도를 높일 수 있습니다.

  3. 동적 정지 최적화: 현재 스톱은 고정 배수로 설정되어 있으며, ATR (평균 실제 파장) 에 기반한 동적 스톱으로 개선할 수 있으며, 트래킹 스톱 기능을 구현하여 트렌드가 지속될 때 더 많은 수익을 잠금 할 수 있습니다.

  4. 시장 상태 필터: 전체 시장 상태에 대한 평가를 추가합니다. 예를 들어, 전체 시장과 추세 시장을 구분하고, 다른 시장 상태에서 다른 전략 파라미터를 사용하거나 거래를 중지합니다.

  5. 다중 시간 프레임 분석: 더 높은 시간 프레임의 트렌드 방향 판단을 통합하고, 오직 낮의 트렌드가 더 높은 시간 프레임의 트렌드와 일치할 때만 출전하여 승률을 높인다.

  6. 계절적 최적화: 다른 달, 주, 또는 특정 시장 사건 전후의 전략 성과를 분석하고, 다른 기간에 대한 사용자 정의 매개 변수 설정을 합니다.

  7. 자금 관리 최적화: 현재 전략은 고정된 재원 비율을 사용한다. (설정값은 100%) 이고, 역대 성과와 현재 철수 상태를 기반으로 포지션 크기를 동적으로 조정하여 보다 세밀한 리스크 제어를 구현할 수 있다.

요약하다

다주기 오픈 간격 돌파 전략은 기술 분석, 위험 관리 및 실행 최적화를 결합한 완전한 거래 시스템이다. 오픈 초기의 시장 동력을 포착하고 제한 주문을 활용하여 최적화된 입장을 통해 전략의 간결성을 유지하면서 높은 실행 효율을 달성한다. 이 전략은 특히 명확한 규칙과 자동화된 실행을 찾는 거래자에게 적합하다.

전략의 주요 장점은 명확한 논리 프레임 워크와 포괄적 인 위험 관리 조치, 사전 설정된 중지, 동적 정지 및 시간 퇴출 메커니즘에 있습니다. 동시에 거래 지역을 시각적으로 표시함으로써 전략의 설명 가능성과 사용자 경험을 향상시킵니다.

이 전략의 기본 프레임 워크는 상당히 완성되었지만, 특히 구역 정의의 적응성, 입시 확인의 신뢰성 및 정지 장치의 유연성에서 더 많은 최적화가 가능합니다. 지속적인 매개 변수 최적화 및 기능 확장으로 이 전략은 다양한 시장 환경에 적응하여 더 안정적인 장기적인 성능을 제공할 잠재력을 가지고 있습니다.

마지막으로, 이 전략은 자동화되는 특성을 가지고 있지만, 시장 경험과 위험 관리 원칙과 결합하여 사용해야 한다는 점을 강조할 필요가 있습니다. 특히 높은 변동성이나 주요 시장 이벤트 기간 동안.

전략 소스 코드
/*backtest
start: 2025-04-01 00:00:00
end: 2025-04-08 00:00:00
period: 4m
basePeriod: 4m
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy("Opening Range Breakout (Limit Entry)", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// === Parameters ===
startHour = 9
startMinute = 30
endHour = 9
endMinute = 35
closeHour = 15
closeMinute = 55

// Take Profit Multiplier
tpMultiplier = input.float(2.0, title="Take Profit Multiplier", step=0.1)

// === Time Filters ===
sessionStart = timestamp("America/New_York", year, month, dayofmonth, startHour, startMinute)
sessionEnd = timestamp("America/New_York", year, month, dayofmonth, endHour, endMinute)
closeTime = timestamp("America/New_York", year, month, dayofmonth, closeHour, closeMinute)
barTime = time

inOpeningRange = barTime >= sessionStart and barTime <= sessionEnd
rangeLockedTime = barTime > sessionEnd
exitTime = (time_close == timestamp("America/New_York", year, month, dayofmonth, closeHour, closeMinute))

// === Session Day Tracking ===
var int sessionKey = na
currentKey = year * 10000 + month * 100 + dayofmonth
newDay = na(sessionKey) or sessionKey != currentKey
if newDay
    sessionKey := currentKey

// === Opening Range and State Variables ===
var float openingHigh = na
var float openingLow = na
var bool directionSet = false
var bool directionUp = false
var float entryPrice = na
var float stop = na
var float target = na
var float interimMax = na
var float interimMin = na
var bool orderPlaced = false
var bool rangeLocked = false
var int rangeStartIndex = na

// === Daily Reset & Opening Range Update ===
if newDay
    openingHigh := na
    openingLow := na
    directionSet := false
    directionUp := false
    entryPrice := na
    stop := na
    target := na
    interimMax := na
    interimMin := na
    orderPlaced := false
    rangeLocked := false
    rangeStartIndex := na

if inOpeningRange and not rangeLocked
    openingHigh := na(openingHigh) ? high : openingHigh
    openingLow := na(openingLow) ? low : openingLow
    rangeStartIndex := na(rangeStartIndex) ? bar_index : rangeStartIndex

// === Lock the range after the window ===
if rangeLockedTime and not rangeLocked and not na(openingHigh) and not na(openingLow)
    rangeLocked := true

// === Detect first candle fully outside the opening range ===
outOfRange = rangeLocked and not directionSet and ((low > openingHigh and high > openingHigh) or (high < openingLow and low < openingLow))

if outOfRange
    directionUp := low > openingHigh
    directionSet := true

// === Entry Setup ===
var box tradeBox = na

if directionSet and not orderPlaced
    interimMax := high
    interimMin := low
    if directionUp
        entryPrice := openingHigh
        stop := openingLow
        target := entryPrice + tpMultiplier * (entryPrice - stop)
        if interimMax > target
            target := interimMax
        strategy.entry("Long", strategy.long, limit=entryPrice)
        strategy.exit("TP/SL", from_entry="Long", limit=target, stop=stop)
        orderPlaced := true
    else
        entryPrice := openingLow
        stop := openingHigh
        target := entryPrice - tpMultiplier * (stop - entryPrice)
        if interimMin < target
            target := interimMin
        strategy.entry("Short", strategy.short, limit=entryPrice)
        strategy.exit("TP/SL", from_entry="Short", limit=target, stop=stop)
        orderPlaced := true

// === Exit near end of day ===
if exitTime and orderPlaced
    strategy.close_all(comment="EOD Close")

// === Plotting ===
plot(openingHigh, color=color.green, title="Opening High")
plot(openingLow, color=color.red, title="Opening Low")