
이것은 뉴욕시장 개시구역을 뚫고 거래량 확인과 지수 이동 평균 (EMA) 을 트렌드 필터로 결합한 양적 거래 전략이다. 이 전략은 뉴욕시장 개시 후 첫 15분 동안의 가격 변동 범위를 감시하고 있다. 이 전략은 조정할 수 있으며, 이 구역에서 가격이 형성된 후의 개시구역을 뚫고 거래량 및 EMA 트렌드 확인 조건을 충족하면, 그에 따른 다중 공간 거래 신호를 유발한다.
이 전략은 시장 개시 시 형성된 가격 범위에 중요한 심리적 지원과 저항의 의미가 있다는 시장 사상에 기초한다. 구체적인 작동 원리는 다음과 같다:
거래 신호 생성 논리:
시장 타이밍 잡기: 시장 개시 시점에 초점을 맞추어 이 전략은 기관 투자자의 참여로 인해 발생하는 중요한 아침 가격 움직임을 포착할 수 있습니다. 이는 하루 종일 거래의 방향을 결정하는 경우가 많습니다.
다중 확인 메커니즘: 전략은 가격 돌파, 트렌드 방향 및 거래량 삼중 확인 메커니즘을 결합하여 가짜 돌파의 위험을 크게 줄입니다. 특히 거래량 확인 요구 사항은 충분한 시장 참여가있는 경우에만 거래를 보장합니다.
동적 위험 관리: ATR을 사용하여 동적으로 중지 및 중지 수준을 조정함으로써, 전략은 현재 시장의 변동성에 따라 지능적으로 위험 파라미터를 조정하여 다양한 변동성 환경에서 일관된 위험 수익률을 유지할 수 있습니다.
매개 변수 유연성: 전략은 연장 간 지속 시간, 거래량 배수 요구 사항, EMA 주기 및 ATR 설정을 포함하여 여러 가지 조정 가능한 매개 변수를 제공합니다. 사용자는 다른 거래 품종과 시장 환경에 따라 전략 성능을 최적화 할 수 있습니다.
트렌드 따라하는 특성: EMA 필터를 통해, 전략은 전체적인 트렌드 방향에서만 거래하는 것을 보장하여 거래의 성공률과 지속성을 향상시킵니다.
가짜 브레이크 위험: 복수의 확인 메커니즘에도 불구하고, 시장은 브레이크 후 빠르게 반전하여 스톱 손실을 유발할 수 있습니다. 해결책은 브레이크 확인 지속 시간이나 더 엄격한 거래량 요구 사항과 같은 추가 필터링 조건을 추가하는 것입니다.
시장 소음 영향: 특히 변동성이 높은 시장 환경에서, 오픈 간이 너무 넓거나 너무 좁아질 수 있으며, 전략의 성과에 영향을 미칩니다. 변동성 필터를 사용하여, 비정상적인 변동성 날에 전략 매개 변수를 조정하거나 거래를 중지하는 것을 고려하십시오.
특정 시점 의존성: 전략은 오픈 시점의 가격 행동에 크게 의존하여 다른 시점의 거래 기회를 놓칠 수 있습니다. 여러 시간 창으로 확장하거나 다른 거래 신호와 결합하는 것을 고려할 수 있습니다.
매개 변수 감수성: 전략 성능은 매개 변수 선택에 민감하다. 특히 EMA 길이와 거래량 배수. 전체적인 매개 변수 최적화 및 재검토를 통해 안정적인 매개 변수 조합을 찾는 것이 좋습니다.
시장 환경 적응성: 트렌드가 명확하지 않거나横盘 시장에서 전략은 손실 거래가 더 많이 발생할 수 있습니다. 트렌드 강도 지표 (ADX와 같은) 를 추가 필터로 도입하거나 다른 시장 환경에서 전략 매개 변수를 동적으로 조정할 수 있습니다.
트렌드 필터 강화: 현재 전략은 트렌드 필터로 두 개의 EMA를 사용하며, 트렌드 강도를 평가하기 위해 ADX를 추가하는 것을 고려할 수 있습니다. 트렌드가 명확한 경우에만 거래하십시오. 이것은 가로 시장에서 잘못된 신호를 줄일 것입니다.
동적 거래량 마이너스: 현재 전략은 고정 거래량 배수를 사용한다. 시장의 변동성이나 기간의 동적으로 거래량 요구를 조정하는 것을 고려할 수 있으며, 다양한 시장 환경에서 적절한 민감성을 유지한다.
브레이크 확인 메커니즘: 브레이크 이후의 확인 조건을 추가할 수 있습니다. 예를 들어, 가격이 브레이크 후 일정 시간 (예를 들어, 5 분) 동안 여전히 브레이크 방향에 유지하도록 요구하거나, K 라인 형태를 사용하여 확인하면 가짜 브레이크의 위험을 줄일 수 있습니다.
최적화된 스톱/스트로드 전략: 현재 전략은 동일한 ATR 배수를 사용하여 스톱과 스톱을 설정하고, 비대칭적인 리스크/수익 비율 (예: 1:2 또는 1:3) 을 사용하거나, 이동 스톱 또는 분할 수익과 같은 동적인 스톱 전략을 시행할 수 있다.
시간 필터: 다른 거래 시기의 특성이 다르기 때문에 시간 필터를 추가하여 낮거나 변동성이 좋지 않은 시간, 예를 들어 점심 시간이나 마감 시간 같은 시간을 피할 수 있습니다.
시장 상태 분류: 시장 상태 분류 모델을 개발하여 트렌드, 흔들림, 높은 변동 등과 같은 다양한 시장 환경을 식별하고 각 환경에 대해 다른 전략 매개 변수 또는 거래 규칙을 설정하십시오.
다중 시간 프레임 분석: 더 높은 시간 프레임의 트렌드 판단을 도입하여 거래 방향이 더 큰 시장 추세와 일치하는지 확인하고 전략의 안정성을 향상시킵니다.
상장 간격 돌파 전략은 거래량 확인 및 지수 이동 평균과 결합하여 신중하게 설계된 정량 거래 시스템으로, 시장 오픈 시기의 중요한 가격 정보를 활용하여 기술 지표와 거래량 데이터를 결합하여 완전한 거래 의사 결정 프레임 워크를 형성합니다. 이 전략은 특히 일내의 트렌드 행동을 포착하는 데 적합하며, 여러 확인 메커니즘을 통해 가짜 신호의 위험을 효과적으로 감소시킵니다.
전략의 핵심 장점은 시장 개시 동력을 정확하게 파악하고 엄격한 거래 조건 필터링에 있습니다. 위험은 주로 특정 시점에 대한 의존성과 변수 감수성에서 비롯됩니다. 제안된 최적화 방향, 특히 트렌드 필터링 및 브레이크 확인 메커니즘을 강화함으로써 전략은 안정성과 적응력을 더욱 향상시킬 잠재력을 가지고 있습니다.
양적 거래자에게, 이 전략은 다양한 시장 환경과 거래 유형에 따라 유연하게 조정 및 최적화 할 수있는 구조화된 프레임 워크를 제공합니다. 무엇보다도, 그것은 가격 행동, 거래량 및 추세 분석을 결합하는 것의 중요성을 강조합니다. 이것은 성공적인 거래 시스템의 기본입니다.
/*backtest
start: 2025-05-05 00:00:00
end: 2025-05-11 00:00:00
period: 3m
basePeriod: 3m
exchanges: [{"eid":"Futures_Binance","currency":"DOGE_USDT"}]
*/
//@version=5
strategy("ORB Strategy w/ Volume Confirmation & EMAs", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// INPUTS
rangeDuration = input.int(15, title="Opening Range Duration (minutes)", minval=1)
volumeMultiplier = input.float(1.3, title="Volume Confirmation Multiplier", minval=1.0)
atrLength = input.int(5, title="ATR Length")
atrMultiplier = input.float(1.5, title="ATR Multiplier for SL/TP")
emaShortLen = input.int(20, title="Short EMA Length")
emaLongLen = input.int(50, title="Long EMA Length")
// TIMESTAMPS FOR NY OPEN RANGE
startTime = timestamp("America/New_York", year, month, dayofmonth, 9, 30)
rangeEndTime = startTime + rangeDuration * 60 * 1000
// TRACK OPENING RANGE
var float orHigh = na
var float orLow = na
if time == startTime
orHigh := high
orLow := low
if time > startTime and time <= rangeEndTime
orHigh := math.max(orHigh, high)
orLow := math.min(orLow, low)
// reset next day
if time > rangeEndTime and ta.change(time("D"))
orHigh := na
orLow := na
// PLOT ORB LINES
plot(orHigh, color=color.green, title="ORB High", linewidth=2)
plot(orLow, color=color.red, title="ORB Low", linewidth=2)
// EMAs FOR TREND FILTER
emaShort = ta.ema(close, emaShortLen)
emaLong = ta.ema(close, emaLongLen)
plot(emaShort, color=color.blue, title="20-period EMA")
plot(emaLong, color=color.purple, title="50-period EMA")
// VOLUME CONFIRMATION
avgVol = ta.sma(volume, 20)
highVolOK = volume > avgVol * volumeMultiplier
// ATR FOR S/L AND T/P
atr = ta.atr(atrLength)
// ENTRY CONDITIONS
longCond = time > rangeEndTime
and close > orHigh
and close > emaShort
and close > emaLong
and highVolOK
shortCond = time > rangeEndTime
and close < orLow
and close < emaShort
and close < emaLong
and highVolOK
if (longCond)
strategy.entry("Long", strategy.long)
if (shortCond)
strategy.entry("Short", strategy.short)
// EXIT (ATR-BASED)
stopDist = atr * atrMultiplier
profitDist = atr * atrMultiplier
strategy.exit("Exit Long", from_entry="Long", stop=close - stopDist, limit=close + profitDist)
strategy.exit("Exit Short", from_entry="Short", stop=close + stopDist, limit=close - profitDist)