
거래 시간 상대적으로 강한 지수 교차 동적 전략은 주식 지수 선물 (나스닥 NQ, 스탠포드 500 ES, 다우스 YM 등) 을 위해 특별히 설계된 경량급 일간 거래 시스템이다. 이 전략은 30분 시간 사이클 차트를 기반으로 운영되며, 상대적으로 약한 지수 (RSI) 를 핵심 기술 지표로 사용하고, 미국 정규 거래 시간 (8시 30분~15시 00분, 월요일 ~ 금요일) 내에 거래하는 것을 엄격히 제한한다. RSI가 상향으로 판매 경계를 넘으면, 시스템은 자동으로 다단위 포지션에 들어간다.
이 전략의 핵심 원칙은 상대적으로 강한 지수 ((RSI) 의 동적인 변동성 특성과 엄격한 거래 시간 필터링 메커니즘에 기반합니다.
RSI 신호 생성전략: 표준 RSI 지표를 사용하여 기본 주기 14을 설정할 수 있습니다. RSI와 이러한 경계가 교차하는 상황을 모니터링하여 출장 신호를 생성합니다.ta.crossover(vrsi, overSold)RSI가 상향으로 넘어간 경우를 탐지하는 데 사용됩니다.ta.crossunder(vrsi, overBought)RSI가 하향으로 넘어가는 경우를 탐지하기 위해 사용되며, 공허의 입장을 유발한다.
시간 필터링 시스템전략은 정확한 거래 시간 제어를 구현하여 미국 표준 거래 시간 (8시 30분 ~ 15시 00분, 월요일 ~ 금요일) 내에서만 거래를 수행합니다. 이것은 다음과 같은 조건의 조합을 통해 실현됩니다.
weekdayFilter = dayofweek >= dayofweek.monday and dayofweek <= dayofweek.friday강제폐지: 하룻밤의 위험을 피하기 위해, 전략은 매 거래일 15:00에 모든 포지션을 필수적으로 평정한다. 코드는 현재 시간이 종료 시간을 달성했거나 초과했는지를 확인하여 평정 포지션 명령을 촉발한다:strategy.close_all(comment="Close All by 15:00 CT")。
시각적 도움말: 전략은 선택 가능한 배경 색채 기능을 제공하며, 다단계 지위를 보유 할 때 녹색 배경, 공백 지위를 보유 할 때 빨간색 배경을 표시하여 거래 상태의 직관적 인식을 강화합니다.
이 전략의 코드를 분석하면 다음과 같은 중요한 장점을 찾을 수 있습니다.
일일 거래에 집중하세요.거래시간을 제한하고 강제적으로 상장할 수 있도록 함으로써, 이 전략은 하룻밤의 위험을 완전히 방지하고, 하룻밤 동안 지주들이 직면할 수 있는 격차 위험과 변동의 위험을 줄여줍니다.
시장에 적응하는 방법RSI는 반전 지표로서, 시장의 과매매 상태에서 가격 반전 기회를 효과적으로 포착할 수 있으며, 특히 일일 거래에서 단기 가격 변동을 파악하는 데 적합합니다.
매개 변수 조정전략: 전략은 RSI 주기의 길이, 초고가, 초저가 등과 같은 여러 가지 사용자 정의 가능한 매개 변수를 제공하여 거래자가 다른 시장 환경과 개인 위험 선호도에 따라 최적의 조정을 할 수 있습니다.
명확한 시각적 피드백: 배경 색상 기능은 직관적인 포지션 상태를 제공하여 거래자가 현재 포지션 상태를 한눈에 볼 수 있도록합니다.
코드는 간결하고 효율적입니다.전략: 논리적으로 명확하고, 코드 구조가 간소하고, 계산 부담이 낮으며, 실시간 실행에 적합하며, 시스템 지연이나 성능 문제를 일으키지 않습니다.
안정적인 반응제공된 NQ 2025년 6월 계약 30분 시간 프레임의 재검토 데이터에 따르면, 전략은 높은 수익 인자 ((4.61) 와 수용 가능한 승률 ((57.1%) 을 보여주며, 최대 회수 제어는 합리적인 범위 ((0.22%) 에 있다.
이 전략은 여러 장점이 있지만 다음과 같은 잠재적인 위험도 있습니다.
신호 주파수 제한: RSI 교차 신호는 하루 거래 시간 동안 상대적으로 드물 수 있으며, 특히 시장 추세가 명확한 경우 거래 기회가 부족하여 전체 수익에 영향을 미칠 수 있습니다. 해결 방법: 보충 지표를 추가하거나 RSI 매개 변수를 조정하여 신호 주파수를 적당히 높이는 것이 고려 될 수 있습니다.
가짜 침입 위험: RSI 지표는 특히 시장의 변동이 심하지만 명확한 방향이없는 경우 가짜 돌파 신호를 일으킬 수 있습니다. 해결 방법: 확인 지표를 추가하거나 거래량 확인 또는 추세 방향 필터와 같은 추가 필터 조건을 설정할 수 있습니다.
시간대 설정 민감전략: 올바른 시간대 설정에 의존하고, 잘못된 시간대 구성은 거래 시간 필터 기능이 실패로 이어질 수 있습니다. 해결 방법: 실시간으로 거래하기 전에 시간대 설정을 신중하게 검사하고 검증하여 목표 시장의 거래 시간과 정확히 일치하도록하십시오.
손해 방지 장치의 부재: 현재 전략은 동적 중지 기능을 구현하지 않으며, 극한 시장 조건에서 큰 손실을 입을 수 있습니다. 해결 방법: 변동률이나 고정 점수를 기반으로 한 중지 장치를 구현하여 단일 거래의 최대 손실을 제한합니다.
고정 종결 시간에 의존15:00에 강제적으로 종결하는 것은 종결 전의 잠재적인 반전 기회를 놓치거나 유리한 추세에서 조기 퇴출을 초래할 수 있다. 해결 방법: 더 유연한 종결 전략을 적용하는 것이 고려될 수 있다.
정책 코드의 심층적인 분석을 바탕으로 다음과 같은 몇 가지 최적화 방향을 제시합니다.
동적 RSI: 고정된 오버 바이 오버 소드 값을 역사적인 변동률 또는 ATR (Average True Range) 에 기초하여 동적으로 조정된 값으로 바꾸어, 다른 시장 환경의 변동 특성에 맞게 한다. 이렇게하면 높은 변동률의 시장에서 더 넓은 값을 사용할 수 있고, 낮은 변동률의 시장에서 더 좁은 값을 사용할 수 있으며, 신호 품질을 향상시킬 수 있다.
트렌드 필터 추가: 트렌드 지표 (예를 들어 이동 평균, MACD 또는 ADX) 를 방향 필터로 도입하고, 주 트렌드 방향으로만 포지션을 개시하여, 정비 시장에서 자주 거래하는 것을 피하고, 가짜 신호를 줄인다.
부분 평점 논리를 구현현재의 전체 평점 메커니즘과는 달리, 특정 수익 목표를 달성했을 때 일부 위치를 평점하고 더 큰 추세를 잡기 위해 일부 위치를 유지하는 것과 같은 분기 평점 전략을 구현 할 수 있습니다.
변동률 조정 포지션에 참여: 시장의 변동률 (예: ATR) 에 따라 역동적으로 포지션 크기를 조정하고, 낮은 변동률 시장에서 포지션을 증가시키고, 높은 변동률 시장에서 포지션을 감소시키고, 리스크 수익률을 최적화한다.
통합 트래픽 확인: RSI 신호 생성에 기초하여 거래량 확인 조건을 추가하고 거래량이 지원되는 경우에만 거래를 수행하여 신호 신뢰성을 향상시킵니다.
지능형 손해 방지 장치 구현: 지지를 하는 저항점이나 근래의 변동 범위를 기반으로 하는 지능형 손해 중지 메커니즘을 도입하여 간단한 시간 평점을 대체하여 위험을 더 효과적으로 제어한다.
거래 시간 상대적으로 약한 지수 교차 동적 전략은 RSI 기술 지표와 엄격한 거래 시간 필터를 결합하여 효율적인 거래 논리를 실현하는 수시 거래 시스템입니다. 전략의 핵심 장점은 하루 중 위험을 피하고 하루 중 초과 구매 및 판매 역전 기회를 포착하고 명확한 시각적 피드백을 제공하는 것입니다.
/*backtest
start: 2024-05-27 00:00:00
end: 2024-12-22 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"SOL_USDT"}]
*/
//@version=6
strategy("Futures Trading Hours RSI Strategy", overlay=true)
// ——— INPUTS ——————————————————————————————
length = input(14, "RSI Length")
overSold = input(30, "RSI Oversold Level")
overBought = input(70, "RSI Overbought Level")
price = close
vrsi = ta.rsi(price, length)
// ——— TIME FILTER (CENTRAL TIME) ——————————————————
startHour = 8
startMinute = 30
endHour = 15
endMinute = 0
// Offset in hours from UTC to CST (not accounting for DST)
var timezoneOffset = 0
adjustedTime = time + (timezoneOffset * 60 * 60 * 1000)
adjustedHour = hour(adjustedTime)
adjustedMinute = minute(adjustedTime)
// Only trade Monday (1) through Friday (5) in the chart’s default time zone.
weekdayFilter = dayofweek >= dayofweek.monday and dayofweek <= dayofweek.friday
// Determine if the current bar is within the session (08:30–15:00 CT)
inSession = (adjustedHour > startHour or (adjustedHour == startHour and adjustedMinute >= startMinute)) and (adjustedHour < endHour or (adjustedHour == endHour and adjustedMinute < endMinute))
// ——— SIGNALS ————————————————————————————————
co = ta.crossover(vrsi, overSold)
cu = ta.crossunder(vrsi, overBought)
// ——— ENTRY LOGIC ————————————————————————————
if not na(vrsi) and inSession and weekdayFilter
if co
strategy.entry("RsiLE", strategy.long, comment="RsiLE")
if cu
strategy.entry("RsiSE", strategy.short, comment="RsiSE")
// ——— EXIT ALL ORDERS AT/AFTER 15:00 CT ——————————————————
// Closes any open positions once the clock hits 15:00 CT or later on weekdays
if weekdayFilter and (adjustedHour > endHour or (adjustedHour == endHour and adjustedMinute >= endMinute))
strategy.close_all(comment="Close All by 15:00 CT")
// ——— (Optional) Plot ————————————————————————————
//plot(strategy.equity, title="Equity", color=color.red, linewidth=2, style=plot.style_areabr)
// ——— BACKGROUND SHADING WHEN POSITION IS OPEN ——————————————————
longOpen = strategy.position_size > 0
shortOpen = strategy.position_size < 0
bgcolor(longOpen ? color.new(color.green, 90) : na, title="Long Position Shading")
bgcolor(shortOpen ? color.new(color.red, 90) : na, title="Short Position Shading")