NXT 거래소 이용하기#

넥스트레이드(NXT)는 한국의 대안거래시스템(ATS)으로, 기존 KRX와는 다른 거래소입니다. PyQQQ에서는 DataExchange.NXT를 사용하여 NXT 거래소의 데이터를 조회할 수 있습니다.

개요#

NXT 거래소는 2025년 3월 4일부터 운영되었으며, 다음과 같은 특징이 있습니다:

  • 거래 시간: 오전 8:00 ~ 오후 8:00 (12시간 거래)

  • 데이터 제공 시작일: 2025년 3월 4일

  • 지원 데이터: 일봉(daily), 분봉(minutes) 데이터

거래시간 확인#

NXT 거래소의 개장/폐장 시간과 현재 거래 상태를 확인할 수 있습니다.

특정 날짜의 시장 스케줄 조회#

import datetime as dtm
from pyqqq.utils.market_schedule import get_market_schedule
from pyqqq.datatypes import DataExchange

# NXT 거래소의 2025년 3월 4일 스케줄 조회
date = dtm.date(2025, 3, 4)
nxt_schedule = get_market_schedule(date, exchange="NXT")

print(f"거래소: {nxt_schedule.exchange}")
print(f"휴장 여부: {nxt_schedule.full_day_closed}")
print(f"개장 시간: {nxt_schedule.open_time}")
print(f"폐장 시간: {nxt_schedule.close_time}")

get_market_schedule(dtm.date(2025, 3, 3), exchange="NXT")
# ValueError: NXT 거래소는 2025년 3월 4일 부터 운영되었습니다. 이전 날짜는 지원하지 않습니다.
거래소: NXT
휴장 여부: False
개장 시간: 10:00:00
폐장 시간: 20:00:00
Traceback (most recent call last):
...

현재 거래 상태 확인#

from pyqqq.utils.market_schedule import (
    is_trading_time,
    is_full_day_closed,
    is_before_opening,
    is_after_closing
)

# 현재 시간 기준으로 거래 상태 확인
now = dtm.datetime.now()

# 휴장일인지 확인
is_closed = is_full_day_closed(now, exchange="NXT")
print(f"휴장일 여부: {is_closed}")

# 개장 전인지 확인
is_before = is_before_opening(now, exchange="NXT")
print(f"개장 전 여부: {is_before}")

# 폐장 후인지 확인
is_after = is_after_closing(now, exchange="NXT")
print(f"폐장 후 여부: {is_after}")

# 거래 시간인지 확인
is_trading = is_trading_time(now, exchange="NXT")
print(f"거래 시간 여부: {is_trading}")
휴장일 여부: False
개장  여부: False
폐장  여부: False
거래 시간 여부: True

일봉 데이터 조회#

pyqqq.data.daily 모듈을 사용하여 NXT 거래소의 일봉 데이터를 조회할 수 있습니다.

1. 특정 날짜의 모든 종목 OHLCV 조회#

import datetime as dtm
from pyqqq.data.daily import get_all_ohlcv_for_date
from pyqqq.datatypes import DataExchange

# NXT 거래소의 2025년 3월 4일 모든 종목 데이터 조회
date = dtm.date(2025, 3, 4)
nxt_data = get_all_ohlcv_for_date(
    date=date,
    adjusted=True,  # 수정주가 여부
    exchange=DataExchange.NXT  # NXT 거래소 지정
)

print(nxt_data.head())
        close  diff  diff_rate   high    low   open       value  volume
code
032640  10560   -20      -0.19  10700  10500  10580   848611000   80255
010950  56000  -900      -1.58  57350  55800  57100   816733650   14583
023530  62600  -500      -0.79  64200  62300  64000   316878550    5055
120110  34100   700       2.10  34600  33900  34000  1357809875   39678
215000  58400  -800      -1.35  59600  58300  59100   127182050    2172

2. 특정 종목들의 기간별 OHLCV 조회#

from pyqqq.data.daily import get_ohlcv_by_codes_for_period

# LG유플러스(032640), 롯데쇼핑(023530)의 NXT 데이터 조회
codes = ['032640', '023530']
start_date = dtm.date(2025, 3, 4)
end_date = dtm.date(2025, 3, 10)

nxt_period_data = get_ohlcv_by_codes_for_period(
    codes=codes,
    start_date=start_date,
    end_date=end_date,
    adjusted=True,
    ascending=False,  # 최신 날짜부터 정렬
    exchange=DataExchange.NXT
)

# 결과는 딕셔너리 형태로 반환
for code, df in nxt_period_data.items():
    print(code)
    print(df.head())
023530
            close  diff  diff_rate   high    low   open       value  volume
date
2025-03-10  68000   400       0.59  68300  67100  67600   298545550    4399
2025-03-07  67600   300       0.45  69000  66600  69000  1142363350   16858
2025-03-06  67100  1200       1.82  67400  65900  66300  1269966800   18951
2025-03-05  66200  3700       5.92  66300  62600  62700   981820800   15025
2025-03-04  62600  -500      -0.79  64200  62300  64000   316878550    5055
032640
            close  diff  diff_rate   high    low   open       value  volume
date
2025-03-10  10520   -40      -0.38  10620  10510  10620   437502065   41502
2025-03-07  10560  -110      -1.03  10700  10530  10700   634308885   59887
2025-03-06  10640    70       0.66  10710  10590  10670  1408249025  132124
2025-03-05  10590    90       0.86  11000  10490  10500  2432709750  228642
2025-03-04  10560   -20      -0.19  10700  10500  10580   848611000   80255

분봉 데이터 조회#

pyqqq.data.minutes 모듈을 사용하여 NXT 거래소의 분봉 데이터를 조회할 수 있습니다.

1. 특정 시간의 모든 종목 분봉 조회#

from pyqqq.data.minutes import get_all_minute_data

# 2025년 3월 4일 오후 5시 30분의 모든 종목 분봉 데이터 조회
time = dtm.datetime(2025, 3, 4, 17, 30)

nxt_minute_data = get_all_minute_data(
    time=time,
    source="kis",  # 'kis' 또는 'ebest' (NXT는 kis: 2025.3.4~, ebest: 2025.5.12~)
    adjusted=True,
    exchange="NXT"
)

print(nxt_minute_data.head())
                      time  close   cum_value  cum_volume   high    low   open   value  volume
code
010950 2025-03-04 17:30:00  55900   668971050       11926  56000  55900  56000  391900       7
023530 2025-03-04 17:30:00  62600   285307450        4549  62600  62600  62600   62600       1
030000 2025-03-04 17:30:00  17750   181870520       10243  17750  17750  17750       0       0
032640 2025-03-04 17:30:00  10580   680028620       63649  10580  10560  10570  380550      36
120110 2025-03-04 17:30:00  34400  1242202175       36296  34400  34400  34400  206400       6

2. 특정 종목들의 하루 분봉 데이터 조회#

from pyqqq.data.minutes import get_all_day_data

# 특정 종목들의 하루 분봉 데이터 조회
date = dtm.date(2025, 3, 4)
codes = ['032640', '023530']

nxt_day_data = get_all_day_data(
    date=date,
    codes=codes,
    period=dtm.timedelta(minutes=1),  # 1분 간격
    source="kis",
    adjusted=True,
    ascending=True,  # 시간순 정렬
    exchange=DataExchange.NXT
)

# 결과는 딕셔너리 형태로 반환
for code, df in nxt_day_data.items():
    print(code)
    print(df.head())
032640
                      open   high    low  close  volume  value  cum_volume  cum_value
time
2025-03-04 08:00:00  10580  10580  10580  10580       0      0           0          0
2025-03-04 08:01:00  10580  10580  10580  10580       0      0           0          0
2025-03-04 08:02:00  10580  10580  10580  10580       0      0           0          0
2025-03-04 08:03:00  10580  10580  10580  10580       0      0           0          0
2025-03-04 08:04:00  10580  10580  10580  10580       0      0           0          0
023530
                      open   high    low  close  volume  value  cum_volume  cum_value
time
2025-03-04 08:00:00  63100  63100  63100  63100       0      0           0          0
2025-03-04 08:01:00  63100  63100  63100  63100       0      0           0          0
2025-03-04 08:02:00  63100  63100  63100  63100       0      0           0          0
2025-03-04 08:03:00  63100  63100  63100  63100       0      0           0          0
2025-03-04 08:04:00  63100  63100  63100  63100       0      0           0          0