커뮤니티

KRX 파생상품 야간거래 관련 수식작성 유의사항

프로필 이미지
예스스탁
2025-06-05 15:45:38.0
768
- KRX 파생상품 야간거래 -
  • 시 행 일 : 2025년 6월 9일
  • 거래시간 : 18:00~익일 06:00
    17:50~18:00 18:00 18:00~익일 05:50 05:50~06:00 06:00
    시가단일가
    호가접수
    시가단일가
    결정
    접속거래 종가단일가
    호가접수
    종가단일가
    결정
  • 대상상품 : 코스피200선물, 미니코스피200선물, 코스닥선물,
    코스피200옵션, 미니코스피200옵션, 코스피200위클리옵션(월,목)
    미국달러선물, 3년국채선물, 10년국채선물
  • 영업일 변경
    파생상품은 야간시장이 도입되면서 거래소 영업일 변경시간이 기존 08시 45분에서 18시로 변경이 됩니다.
    하루가 18시에서 시작해서 익일 15시45분에 끝나게 됩니다.
<예스랭귀지>
기존 작성해 사용하는 수식을 주간장 차트에 적용하실 때는 변경하실 내용이 없습니다.
하지만 야간장이나 복합장에 적용하시면 크게 아래 3가지 정도를 주의하셔야 합니다.
  1. 날짜변경시 초기화
    일반적으로 수식에서 날짜 변경은 sdate != sdate[1] 혹은 bdate != bdate[1]로 표현해서 사용해 왔습니다. 기존에 주간장 거래만 되었으므로 2개 표현이 모두 당일 첫봉을 의미하는 내용이었습니다.

    하지만 야간장 차트나 복합장 차트와 같이 새벽장의 데이터가 있는 차트에 수식을 적용하실 경우에는 위 표현이 지정하는 봉이 다르므로 유의하셔야 합니다.

    sdate는 달력상 날짜입니다. 밤 0시를 기준으로 변경이 되므로
    sdate != sdate[1]는 밤 0시기준 첫봉이 됩니다.
    밤 0시 이후의 첫봉을 지정할 경우에만 해당 표현을 사용하셔야 합니다.

    bdate는 영업일로 거래소 영업일 변경기준시간으로 변경되는 날짜입니다.
    야간장이 도입되면서 거래소의 영업일이 18시를 기준으로 변경이 됩니다.
    그러므로 bdate != bdate[1]는 18시 이후(야간장시작) 첫봉이 됩니다.

    만약 복합장에서 주간장 첫봉을 지정하고자 하시면 아래와 같이 시간지정해서
    주간장 첫봉을 지정해 주셔야 합니다.
    //8시 45분이후 첫봉
    if (sDate != sDate[1] and sTime >= 84500) or
        (sDate == sDate[1] and sTime >= 84500 and sTime[1] < 84500) Then
  2. 일간함수
    DayOpen / DayHigh / DayLow / DayClose / DayVolume / DayOI

    해당 함수들은 차트 시장 설정에 따라 일간값을 리턴하는데
    기본적으로 영업일 변경이 기준입니다.

    주간차트 : 주간장 시작기준
    야간차트 : 야간장 시작기준
    복합차트 : 야간장 시작기준

    차트가 야간이나 복합이면 18시 기준으로 하는 일간값이 리턴됩니다.
    복합차트에서 주간장 시고저종가나 야간장 시고저종가를 사용하고자 하시면
    아래와 같이 별도로 작성해서 사용하셔야 합니다.
    var : i(0);
    Array : DO[100](0),DH[100](0),DL[100](0),DC[100](0);
    Array : NO[100](0),NH[100](0),NL[100](0),NC[100](0);

    //주간 시고저종가
    if (sDate != sDate[1] and sTime >= 84500) or
        (sDate == sDate[1] and sTime >= 84500 and sTime[1] < 84500) Then
    {
        For i = 99 DownTo 1
        {
            DO[i] = DO[i-1];
            DH[i] = DH[i-1];
            DL[i] = DL[i-1];
            DC[i] = DC[i-1];
        }
        DO[0] = O;
        DH[0] = H;
        DL[0] = L;
    }

    if sTime >= 84500 and sTime <= 154500 Then
    {
        if DH[0] > 0 and H > DH[0] Then
            DH[0] = H;

        if DL[0] > 0 and L < DL[0] Then
            DL[0] = L;

        DC[0] = C;
    }

    //야간 시고저종가
    if (sDate != sDate[1] and sTime >= 180000) or
        (sDate == sDate[1] and sTime >= 180000 and sTime[1] < 180000) Then
    {
        For i = 99 downTo 1
        {
            NO[i] = NO[i-1];
            NH[i] = NH[i-1];
            NL[i] = NL[i-1];
            NC[i] = NC[i-1];
        }
        NO[0] = O;
        NH[0] = O;
        NL[0] = C;
    }

    if sTime >= 180000 or sTime <84500 Then
    {
        if NH[0] > 0 and H > NH[0] Then
            NH[0] = H;

        if NL[0] > 0 and L < NL[0] Then
            NL[0] = L;

        NC[0] = C;
    }
  3. 당일청산
    주간장 차트로 설정하고 거래하실 경우 당일청산은 변경되는 내용이 없습니다.

    SetStopEndofday함수가 0시에 초기화가 되므로 야간차트나 복합차트에서 새벽에
    당일청산하고자 할 경우에는 청산수식을 변경해야만 합니다.

    [복합차트나 야간차트에서 새벽시간에 1회 당일청산하는 경우]
    당일청산함수는 지정한 시간에 포지션이 있으면 청산하고 당일 진입을 제한하게 되므로
    새벽시간에 청산하는 경우 밤 0시에 지정한 시간으로 당일청산 셋팅하고
    08시 45분에 당일청산을 해제를 해주어야 합니다.
    해제하는 내용이 없으면 0시에서 지정한 시간사이에만 진입이 발생하게 됩니다.
    if sDate != sDate[1] Then
        SetStopEndofday(050000);

    if (sdate != sdate[1] and stime > = 84500) or
        (sdate == sdate[1] and stime >= 84500 and stime[1] < 84500) Then
        SetStopEndofday(0);
    [복합차트에서 주간장에 한번, 야간장(새벽)에 한번 당일일청산하는 경우
    0시에 새벽시간 당일청산을 셋팅하고 주간장이 시작되면 주간장 청산시간으로 변경 후에
    야간장 시작시 당일청산 해제하게 작성해 주시면 됩니다.
    if sDate != sDate[1] Then
        SetStopEndofday(050000);

    if (sdate != sdate[1] and stime >= 84500) or
        (sdate == sdate[1] and stime >= 84500 and stime[1] < 84500) Then
        SetStopEndofday(153000);

    if (sdate != sdate[1] and stime >= 180000) or
        (sdate == sdate[1] and stime >= 180000 and stime[1] < 180000) Then
        SetStopEndofday(0);
    [복합차트에서 주간장시간에 1회 당일청산하는 경우]
    당일청산함수는 지정한 시간에 포지션이 있으면 청산하고 당일 진입을 제한하게 되므로
    새벽시간에 청산하는 경우 밤 0시에 지정한 시간으로 당일청산 셋팅하고
    08시 45분에 당일청산을 해제를 해주어야 합니다.
    해제하는 내용이 없으면 0시에서 지정한 시간사이에만 진입이 발생하게 됩니다.
    if sDate != sDate[1] Then
        SetStopEndofday(153000);

    if (sdate != sdate[1] and stime >= 180000) or
        (sdate == sdate[1] and stime >= 180000 and stime[1] < 180000) Then
        SetStopEndofday(0);
<예스스팟>
예스스팟의 파생상품 야간거래와 NXT 관련 업그레이드는 9월 이후에 제공될 예정입니다.

수식내에서 확장차트 객체를 생성할 경우 기존과 같이 주식은 KRX, 파생상품은 주간차트로만 만들어 지게 되며, 종목객체는 주식은 KRX시세만 제공되고 야간거래가 가능한 파생상품이면 야간거래시간에도 실시간 데이터가 자동으로 제공됩니다. 복합차트를 이용하고자 하시면 직접 차트를 열고 아이디를 지정해 연결하는 일반 차트객체를 이용하시기 바랍니다.