키움API 초단타 스켈 자동 퀀트 매매 조건검색식 + 초봉 코드 업데이트

    아래 포스팅에서 이어지는 초단타 스켈 자동매매 방법이다.

     

    키움API 초단타 스켈 자동 퀀트 매매를 위한 조건검색식

    키움 API 초단타 스켈 자동 퀀트 매매를 위한 조건검색식 키움증권에서는 자동 퀀트매매를 할 수 있도록 API를 제공하고 있다. 이 API를 이용해서 초단타 스켈 자동 퀀트 매매를 할 수 있도록 조건

    play-in-stock.tistory.com

    현재까지의 정리는 시가가 뜬 종목들에서 첫 1초봉의 체결강도가 300이 넘고 첫 1초봉의 크기가 작은 종목들에 대해서 장 시작 후 7 ~ 180초 사이에 -1퍼센트 정도 내려가는 1초봉이 만들어지면 매수하는 방법론이다. 

     

    그런데 보다 더 세밀한 매수 타점을 잡기 위해서 조금의 소스코드를 수정한다.

     

    키움 API 초단타 스켈 자동 퀀트매매 조건검색식 + 초봉 코드 업데이트

    위 상태에서 매수를 한다면 매수 후 바로 내려가는 경우가 생길 수 있다. 시가 대비 -1퍼센트 안의 가격이 항상 저점이라고 볼 수는 없고 대략 이정도에 매수하면 가능성이 있겠구나라는 것을 예상한 기대결과값이기 때문이다.

     

    매수 타점을 보다 더 정교하게 잡기 위해서는 지지하는 구간을 필요로 한다. 이 전에 이 부분의 내용을 적기 전 틱 단위로 갑자기 수급이 들어오는 부분을 정확히 잡으면 좋겠지만 종종 그런 종목이 나오긴 하지만 정확히 모든 종목에서 공통점이 있는 지는 모르겠다. 따라서 틱단위가 아닌 초단위로 지지하는 부분을 보고 매수타점을 잡기로 한다.

     

     

    확실하게 수급이 들어오는 부분을 알 수 있다면 좋으련만 아직까지는 공통점을 찾지는 못했다. 이 부분이 찾아진다면 이 부분에 대한 별도의 업데이트를 통해 매수조건을 주면 좋을 것 같다.

     

    알로이스

     

    분봉상으로 5퍼센트가 넘는 슈팅을 보여준다. 틱 단위로 보자.

     

    9시 4분 10초의 1초봉이다 이 시점부터 수급이 들어오는 것이 확인된다. 틱데이터는?

     

    9시 10초의 틱데이터 체결강도는 100을 넘고 수급이 쏠리는것이 확인된다. 하지만 확연하게 높다고는 말할 수 없다.

     

     

    이런 틱 데이터가 여러개가 쌓여야 1초봉상으로 저렇게 상승하는 시점이 확인된다. 저 화살표 하나당 각각 0.5퍼센트의 등락률을 기록하고 있다 잊지 말아야 할 것은 이것들은 모두 1초봉 이라는 것이다. 그럼 6초 정도에 2 퍼센트가 넘는 등락률을 보여주고 있다.

     

    5초봉 09:03:55

     

    0.98퍼센트의 등락률을 보여주고 있다. 

     

     

    틱단위 데이터를 보면 체결강도 82퍼센트에 등락률이 높은 모습은 아니다. 즉 틱 데이터 한두개로는 불가능하고 이것을 초봉으로 따졌을 때도 특정 수급이 실린다는 느낌을 받을 수가 없다는 말이다.

     

    이 봉을 보고 들어가면 단기간내 추가 상승을 하지 못한다. 그러니까 이렇게 초당 1퍼센트 이상 체결강도가 100을 넘는다고 바로 슈팅이 나온다는게 아니라는 말이다. 그러니 초당 1퍼센트가 넘든 안넘든 이렇게 슈팅을 주기 전 어떤 모습을 보느냐가 중요하다.

    정점에 다다르면 1퍼센트가 오르고 체결강도는 100이상으로 전환되었을 몇 초 전보다 더 많이 높아진다 더 갈거라고 생각하지만 초단위로는 사실상 여기가 끝점

     

    그러면 매수 시점을 체결강도가 100으로 전환되는 시점부터 모니터링하고 주가등락률이 높지 않은 상태가 몇개가 보여지면 매수 or 09:04초 처럼 0.5퍼센트 정도 주가등락률이 몇개가 보이면 매수 

     

    여기도 체결강도가 전환되는 시점은 09:04:10 오르기 시작하는 초입부분

     

    오르기 전의 모습은 아래 박스권과 같은 모습으로 

     

    다 캡쳐는 안하겠지만 본격적으로 오르기 전까지의 체결강도는 모두 100 이하다 대신 주가는 횡보를 하거나 약간 상승이고 본격적으로 오르기 시작하는 순간부터는 초당 주가등락률도 상승이며 체결강도도 항상 100이 넘는다.

     

    즉 한두개로의 틱 데이터로는 불가능하지만 상승하기 전 여러개의 초 데이터 단위로 봤을 때는 어느정도 차이점이 존재한다.

     

    그럼 체결강도와 초당 등락률이 상승하는 시점부터 고점에 이르기까지의 체결강도는 어떤 모습을 보여지는지 확인해보자

    09:04:10 부터 09:04:41 까지만 보도록한다 저기까지가 고점이니 아니다 떨어지는 부근까지 본다 그래야 확실히 알 수 있으니 보면 체결강도는 첫 시작부터 내려가는 지점까지 100이상으로 떨어진 적이 없다.

     

    즉 상승하는 초입부분의 기준점으로 사용할 수 있을지는 몰라도 고점을 찍는 매도 순간의 기준점은 될 수 없다는 말과 같다.

     

    우측의 화살표가 잘못되었는데 저 지점보다 더 바닥이다. 120일선 부근이다 마지막 시간은 그 이후로 주가는 추가 상승을 하긴한다.

     

    위 세개 화살표는 모두 체결강도가 100으로 전환되는 시점부터 고점 및 저점까지의 모습이다. 그 이후로도 상승하는 모습을 보여주나 추가적으로 볼 필요는 없을 것 같다 어차피 체결강도가 100이상이 된다고 해서 항상 주가가 오르는 것은 아니기 때문이다.

     

    단, 체결강도가 100언더에서 주가가 왔다갔다 거리다가 100이상으로 넘어가면서 주가가 상승한다면 어느정도 초입부분으로는 생각해 볼만하다.

     

    그래서 이런 조건들을 넣기 위해선 전 1초봉의 하나만 가지고는 불가능하기 때문에 이 전봉들을 추가로 볼 수 있는 단위가 필요하다. 즉 몇개의 초봉들의 주가등락률이 심하지 않고 이 시점이 오늘 시가대비 몇 퍼센트의 지점에 있고 체결강도는 얼마나 유지가 되었는지 말이다. 그리고 100이 넘어가는 시점부터 주가등락률의 변화가 있는지 거래량이 조금 더 실리는지를 알 수 있다면 수급이 실린것을 보다 더 확실하게 알 수 있다.

     

     

    초입분분에는 그 전 초봉 보다 확실히 거래량도 더 실리는 모습이 확인된다.

     

    이 부분도 47초부터 체결강도가 100이 넘기 시작한다. 거래량은 쉽사리 확인되지 않는다. 거래량의 조건을 조금 더 보완해 주면 될 듯 하다.

     

    체결강도가 100이하에서 100으로 변경되는 첫 시점부터 다음 화살표 체결강도가 100 밑으로 떨어지는 마지막 부근까지 주가는 상승한 뒤 하락하는 모습을 보여준다.

     

    다시 상승을 하긴 하지만 이건 어디까지나 결과론적인 모습이다. 일단 두 부분의 공통점은 체결강도가 100으로 전환되는 시점이 상승초입이 될 가능성이 있다는 것이고 이게 100이상을 계속 유지한다고 해서 주가가 꾸준히 상승하는 것도 아니라는 것이다. 매도 조건은 될 수 없다. 매수 조건은 될 수 있다.

     

    그럼 매수조건을 넣을 때 하나의 1초봉만으로는 결정할 수 없다. 그 전봉들의 체결강도가 100이 넘었는지를 하나로만으로는 구분할 수가 없기 때문이다. 따라서 몇개의 초봉들을 기억할 수 있도록 해야한다. 즉, 키움hts 조건검색식으로 주는 부분을 내 피씨에서 스스로 기억하고 매수조건으로 쓸 수 있도록 만들어야 한다는 말이다.

     

    이게 물론 모든 종목에 해당하는지는 모르겠다. 그런데 적어도 있으면 활용가치는 매우 높을 듯 하다. 초봉뿐만 아니라 등록해 놓은 분봉들에도 이런 모습으로 상승하는 종목들이 많기 때문이다. 급등 차트들이 특히 그렇다. 

     

    -- 주가 변동폭이 하루종일 없다가 갑자기 상승하는 종목들이 이렇다.

     

    현재는 저런 조건들을 보지 않고 위에서 말한 조건을 만족하면 매수한다. 이 기능을 넣은 것이랑 그냥 원래의 조건만으로 하는 거랑 두개를 가지고 테스트를 진행해 보도록 한다.

     

    이 기능을 사용하려면 검색해보니 파이썬의 데크라는 기능이 필요하다. 이 부분을 수정한다. 

     

    키움 api 초단타 매매를 위한 소스코드 업데이트

    초봉을 만들어서 바로 다음 초봉으로 업데이트를 하지 않고 현재 계산된 초봉들을 기억할 수 있도록 파이썬 내장함수 데크를 사용한다. 이것은 첫 초봉이 만들어질 때 생성자로써의 역할만 하고 실제로 업데이트 되는 것은 첫 초봉이 그려지면서 부터 내용을 저장하도록 한다.

     

    참고로 데크라는 것은 리스트와 비슷한데 quee와 stack을 편하게 사용하고 속도면에서 차이가 많이 난다고 한다. 리스트는 저장하고 지우는 것을 하나씩 하면 눈으로 보기에는 하나가 지워지고 하나가 들어가는 것이지만 그 안의 데이터들이 하나씩 옆으로 모두 이동해야 하기 때문에 속도가 느려질 수 있다.

     

    그에 비해 데크는 maxlen이라는 옵션을 넣어주면 알아서 자동으로 하나씩 옆으로 빠져나가기 때문에 보다 더 빠르다고 한다. 자세한 내용은 모르겠다. 그리고 코드를 작성하기도 훨씬 수월한 듯 싶다.

     

    그럼 첫 초봉이 만들어질 때 초봉을 기억할 dict에서 key값을 주고 value 자리에 deque를 넣는다.

     

    그리고 첫 초봉이 만들어지면 리스트이 append와 같이 값을 넣을 수 있다 maxlen 옵션을 10개까지 주었기 때문에 10개까지 차면 맨 왼쪽 즉 0번째 자리의 데이터가 사라지고 하나씩 업데이트 된다.

     

    결론적으로 초봉을 받기 시작한 이후부터 10개까지 한꺼번에 저장이 가능하다는 소리이며 최신으로 계속 유지할 수 있다. 여기서 [0]번째 자리가 가능 마지막 데이터이며 [9]번째 자리의 데이터가 가장 최근 즉 바로 계산된 1초전 봉으로 볼 수 있다. 여기서 maxlen을 3600으로 해 놓으면 3600개의 초봉을 저장할 수 있다는 소리고 이게 1시간이다.

    키움hts의 조건검색식을 스스로 만드는 것과 같다. 이것을 분단위로 만들면 분봉이 되는 것이다. 그럼 여기에서 필요한 부분들을 추려 놓는다. 시간, 거래량, 거래량비율, 체결강도, 전초봉대비 시/종/저/고 비율을 저장한다. 최대 10개까지 말이다.

     

    그리고 이 저장된 데이터를 가지고 어느 시점에 매수를 할 것인지 매수 조건을 넣어주고 이 값들이 맞으면 True를 리턴해서 매수할 수 있도록한다. 이 외 다른조건들도 True가 되어야 매수를 할 것이다.

     

    아무튼 여기까지가 지금 현 상태이며 이 코드가 정상으로 동작하는 지는 모르겠다. 이 기능이 없는 별도의 프로그램과 이 코드를 넣고 테스트를 해서 잘 동작하면 매수 조건을 업데이트 하면 된다. 현재는 프린트만 찍어보고 문제가 없는 지 일단 확인해야 한다. 문제가 없으면 이제 초단타 퀀트 매수 조건으로 넣어줄 수 있다.

     

    이제 이것을 분봉으로 업데이트 해 보자 그럼 분단위의 조건들로 체결강도가 갑자기 오르면서 주가등락률이 생기는 것들을 포착할 수 있을 것이다.

     

    다음 포스팅 보기 > 키움 api 초단타 매매 소스코드 업데이트 테스트 결과

    댓글

    Designed by JB FACTORY