키움 API를 이용한 초단위 매매 전략과 조건 검색식 정리

    키움 API를 사용하면서 초단위 퀀트 매매를 시작하려고 했지만 생각만큼 진도가 나가지 않는다. 결국엔 복불복이란 회오리속에서 빠져나오지 못하고 있는 기분인데 이것을 이겨내려고 1초봉 10초봉까지는 프로그램 상에서 맞출 수 있게 해놓았다.

     

    그런데도 정리가 잘 되지 않는다.

     

    이 글에서 지금 무엇이 필요한지 정리해 봐야겠다.

     

    초단위 매매를 위한 조건검색식

    대부분 상승하는 급등 종목들은 다음과 같다.

     

    1. 장 초 갭상승 1분봉에 거래량 및 거래대금이 많이 실리고 급등 후 종료

    2. 장 중에 거래량이 거의 없다가 갑자기 급등하는 케이스

    3. 장초 갭상승 급등 후 끝나는 종목 그리고 다시 급등하는 종목

     

    세가지에서 오늘은 1번 장 초 갭상승 1 분봉에 거래량 및 거래대금이 많이 실리고 급등 후 종료되는 케이스에 대해 알아보자

     

    1. 장 초 갭상승 1분봉에 거래량 및 거래대금이 많이 실리고 급등 후 종료

    이 전략은 api를 이용한 초단위 매매이다. 그림으로 보면 이해가 더 쉽다.

     

    캐리소프트의 1 분봉단위 첫 1분봉이다. 분봉거래대금이 23억이 터진것이 확인된다. 이것을 1초봉 차트로 보면 다음과 같다.

     

    7억 이상이 터진 것이 확인된다. 장 시작 후 첫 1초봉에 터진 거래대금이 7억 1분봉 단위에서 터진 거래대금이 23억이다.

    여기서 핵심은 이거다 갭상승 이후 거래대금이 실리고 주가가 상승했냐 하지 않았느냐 

     

    이것을 봐야한다.

     

    1분봉상으로 보면, 

     

    위에 표기된 가격은 전일대비이다. 해당 봉의 시가대비 종가는 8480 > 8890 으로 약 4.83 % 상승한 가격이다. 이미 첫 1분봉에서 4프로 넘는 상승율을 보여준 것이다. 물론 그 다음봉에도 상승 봉이 나왔지만 다음봉에 상승이 될 지 하락이 될 지 아무도 모른다.

     

    또한 키움api를 이용해서 퀀트매매를 하는 요점은 초단위 매매를 하기 위함이다. 주식을 가지고 있는 시간을 최대한 짧고 빠르게 수익을 내고 현금으로 전환하는데 목적이 있다. 그래서 이 초단위 매매 전략이 아주 중요하다.

     

    자동매매 프로그램으로 초봉을 만든 이유도 여기에 있다. 그럼 1분봉이 아닌 첫 1초봉을 보자.

     

    시가는 8480 종가는 8470이다. -0.11% 주가등락률과 거래대금은 7.4억 초당 7억이 들어오는 종목이 많지가 않다. 유통량 및 호가 가격대도 고려해야겠지만 그렇다 하더라도 첫 1초봉의 7억은 적은 금액이 아니다. 거기에 주가등락률의 위아래가 낮다.

     

    아직 주가가 오르지 않았다는 것이다. 1분이 지나야 20억이 터졌다는 것을 알게 되고 이 20억과 동시에 주가가 4퍼센트가 올랐기 때문에 추가 상승을 장담할 수 없다. 그래서 장시작 후 첫 1초봉 단위에서 특정 금액 최소 5억과 최소 거래량을 50000 주로 세팅하고 주가 상승률이 적다는 가정하에 주식을 매수하도록 전략을 짠다.

     

    그러면 매수시점을 어디에서 잡을까? 첫 1초봉이 위의 기준을 만족한다고 하더라도 위로 갈지 아래로 갈지는 사실 미지수이다. 내가 봐 온 종목들은 대부분 위를 향하기도 하지만 밑으로 내린 후 다시 상승하는 종목도 있기 때문이다.

     

    어차피 1초봉 10초봉을 퀀트 프로그램으로 알 수 있으니 어떤 조건에서 매수를 할 거냐를 코딩으로 짜주면된다.

    원래는 조건검색식으로 검출된 종목을 바로 매수 혹은 오늘의 시가 고가를 돌파할 때 매수하도록 세팅했지만 복불복이 많아서 최대한 확률을 높이고자 매수하는 포인트도 초봉을 만들고 초봉으로 상승이 확인된 이후에 매수할 수 있도록 프로그램 되어 있다.

     

    매수매도를 하기 위한 조건들만 잘 갖춰주면 된다. 초단위 매매를 위한 매수 조건을 다시 한 번 정리해본다.

     

    1. 갭상승을 해야하고 거래량 및 거래대금이 실려야 한다.

    2. 거래량 및 거래대금은 첫 1초 단위다. 1분 단위로는 늦는다. 1분 안에서도 시세가 터지고 내려오는 종목이 종종 있다. 즉 복불복을 피해야 한다.

    3. 이 첫 1초봉의 거래대금은 5억 이상에 5만주로 한다. 이것은 통상적으로 내가 봐온 것이고 이정도가 터져야 첫 1분봉에 거래대금이 10억 20억 이상 거래량 20만주 이상이 터지기 때문이다.

    4. 첫 1초봉의 주가등락률이 낮아야 한다. 상승이건 하락이건 폭이 낮아야 한다. 그래야 손바뀜 혹은 세력 입성 후 주가가 움직이지 않았기 때문에 상승할 확률이 높기 때문이다.

    5. 매수시점은 이미 첫 1초봉에 거래량 거래대금이 터졌기 때문에 초봉 단위로 0.5퍼센트 상승한 봉이 확인 된 후 매수하도록 한다. 1초봉은 0.5 or 10초봉은 1 퍼센트 상승시 매수 단, 상승을 해야하기 때문에 확인용 1초 10초봉의 종가는 오늘 시가보다 높은 가격으로 설정한다.

     

    다시 간단히 요점만 정리하면 다음과 같다.

     

    1. 일봉 기준 오늘 시가는 어제 종가보다 상승해야하며 갭의 크기는 5퍼센트에서 9.9퍼센트 (10 퍼센트 이상은 vi 및 이 밑의 갭상승은 별도로 정리)

    2. 첫 1초봉의 거래량 5만주 거래대금 5억이상 주가등락률 +/- 1프로 내외

    3. 매수시점은 1초봉 0.5프로 상승 / 10초봉 1프로 상승 단, 초봉의 종가는 오늘 갭뜬 시가의 가격보다는 높아야 한다.

     

    2. 초단위 매매를 위한 키움 HTS의 조건검색식 조건 넣기

    코드를 짜기위한 precondition은 찾았다. 그럼 이런 종목들을 찾기 위해서 키움의 조건검색식을 이용해야한다. 여기서 문제가 발생하는데 키움의 조건검색식은 초단위로 알려주지 않는다. 따라서 이전의 조건검색식은  이처럼 초단위 매매를 위해 검색시간과 1분봉상 0분봉의 거래대금 및 거래량을 조건으로 주었지만 이것도 딜레이되는 문제가 있기 때문에 복불복을 피할 수 없었다.

     

    무슨 말이냐면 위의 전략을 예로 들면 첫 1초봉을 받아야 하는데 1초봉에 대한 조건검색식을 키움에서 지원해주지 않기 때문에 어떤 종목이 갭을 떠서 시작할 지를 별도로 알아야 한다는 것이다. 이미 갭이 뜬다음에 조건검색식에 검출이 되면 첫 1초봉을 받을 수 없기 때문이다. 

     

    1분봉조건으로 현봉에서 받는다고 해도 마찬가지다. 이미 지나버렸기 때문에 같은 문제점이 발생한다. 따라서 조건검색식에서 갭이 뜬 다음에 받는 것은 의미가 없다 장이 시작하기 전에 서버와 연결해서 갭이 뜰 것 같은 종목들을 받아 통신을 위한 소켓을 열어 놓아야 한다.

     

    자 그럼 초단위 매매를 위한 키움 HTS의 조건검색식에 조건을 넣어보자.

     

    초단위 매매를 위한 키움 HTS 조건검색식 도출을 위한 문제점 정리

    1. 갭이 뜬 다음에 종목의 틱단위 체결을 실시간으로 받으면 이미 첫 1초봉이 지난 후에 받기 때문에 의미가 없다. 장 시작 전에 갭이 뜰 종목에 대해 미리 알아두어야 한다.

     

    2. 키움 api는 화면번호 screen number라는 것을 이용해서 종목의 실시간 체결을 받아볼 수 있는데 하나의 화면번호에 총 100개의 종목을 받아볼 수 있다.

     

    해결방법

    키움 조건검색식의 예상체결등락률을 이용하면 전일대비 오늘 시가가 얼마만큼 떠서 시작할 지 예상하는 종목들을 받아볼 수 있다. 이것을 9시 이전에 받아 놓으면 미리 해당 종목에 대해 거래가 이루어질 때마다 시세를 받을 수 있기 때문에 첫 1초봉을 받아볼 수 있다.

     

    될지 안될지는 나도 모른다. 지금이 첫 시도이기 때문이다. 그럼 조건검색식을 보자.

     

     

    조건검색식에 보면 예상체결가 등락률이란 것이 있다 장중에 이용해 보았는데 예상체결가는 vi가 걸리는 단일가 매매에서 실시간으로 알려주는 것 같았다. 그러니 장 시작 09:00 전에 위처럼 해 놓으면 일주기 1봉전 종가대비 예상체결가가 1 ~ 9.9에 해당하는 종목들을 미리 받아서 해당 socket을 열어둘 수 있을 것으로 예상된다.

     

    이 그림을 캡쳐하고 글을 쓰면서 실시간으로 생각이 났는데 키움api의 화면번호를 간과했다. 5 ~ 9.9로 해놨던 이유가 한 화면번호에서 100종목이상을 받아볼 수 없기 때문에 상승 퍼센트율을 나눠둔 것인데 1 ~ 9.9로 해놓으면 분명 100종목이 넘어가서 문제가 생길 수 있다.

     

    따라서 일단 1 ~ 4.9 | 5 ~ 9.9 | 10 ~ 15 단위로 나눠서 만들어 보도록 하자. 

     

     

    이런식으로 세개로 나누어놨다. 분명 1 ~ 4.9의 예상체결가등락률이 가장 많을테니 해당 케이스는 코스닥으로만 한정하고 나머지 두 조건검색식은 코스피/코스닥 모두 설정해 놓았다.

     

    아마 예상체결가등락률이기 때문에 예상일 뿐이지 해당 조건검색으로 추출된 종목들이 모두 맞다고 할 순 없을 것이다. 하지만 상관은 없다. 어떤 종목이 갭상승으로 시작할 지 모르지만 갭상승이 아니더라도 이 것은 종목을 추리기 위한 하나의 수단이기 때문에 첫 1초봉의 조건만 맞으면 매수할 것이기 때문이다.

     

    하루에 많아봐야 두세개다 대부분 없었던 것으로 기억하는데 그래도 확률이 매우 높은 것으로 여겨온 전략이기 때문에 놓칠 수 없다. 한번만 세팅 및 코딩해 놓으면 평생 써먹을 수 있다.

     

    그럼 초단위 매매를 위한 조건검색식도 완료되었다. 이제 코딩으로 넘어가자

     

    나는 개발자가 아니니 코딩 실력은 개판이다. 물론 주식 실력도 개판이다. 그래도 할 수 있다.

     

    3. 키움 API를 이용한 초단위 퀀트매매 전략을 위한 코딩

    이미 프로그램은 잘 돌아간다 .1초봉 10초봉 단위를 만들고 검색시점 이후 특정 퍼센트까지 상승했을 경우 매수하지 말도록 세팅해 놓은 것의 최근 코딩 내용이다. 일단 1초봉 10초봉을 장 중간에 받아서 동작하는 것 까지는 확인했지만 장시작 처음부터 받아서 본적은 없다. 이게 안되면 위 전략은 무용지물이다.

     

    제발 잘 되길 바란다.

     

    일단 조건검색식이 3개고 하나의 조건검색식 당 100개가 검출되지 않도록 예상하며 각각 다음과 같이 키움api를 이용하기 위해 화면번호를 별도로 할당해준다.

     

     

    그리고 첫 초봉이 잘 찍히는지 모든 검출되는 모든 종목에 대해 첫 초봉에 대해 로그를 찍어본다. 

     

    문제가 있다. 첫 1초봉이 원하는 대로 만들어졌는지 조건을 확인 후 0.5퍼센트 오른 시점에 매수하도록 하려했으나 현재 코드 상으로는 불가능하다. 그냥 현 시점에서는 위 조건대로 1초봉이 만들어지면 바로 매수하도록 테스트 한 뒤 향후 개선해야겠다. 따라서 10초봉에 대한 매수조건은 별도로 필요치 않다. 첫 1초봉이 위처럼 만족하면 바로 시장가 매수를 진행한다.

     

    일단 이 상태에서 테스트를 진행해 본다. 가장 베스트한 케이스는 첫 1초봉이 제대로 그려지는 것이다. 그럼 게임 셋.. 사실 어제 만들어 놓고 오늘 아침에 보았으나 오류가 있어서 확인이 안됐다.

     

    내일은 제발 오류없이 잘 진행되길..

     

    테스트에 대한 결과는 다음 포스팅에서 진행하도록 한다. 아래에서 확인할 수 있다.

     

    키움 API를 활용한 초단위 매매전략과 조건검색식 테스트 결과 포스팅

    댓글

    Designed by JB FACTORY