조건검색으로 종목이 알아서 들어오게 만든 다음, 나는 그걸 전부 봇에 실시간 등록했다. 200개가 넘는 종목이 화면에 좌르륵 찍히는 걸 보면서 이제 됐다 싶었다.
이상함을 느낀 건 며칠 뒤였다. 분명 조건에 걸릴 만한 종목이 움직였는데 봇이 미동도 없었다. 신호가 안 잡히는 게 아니라, 아예 없는 종목 취급을 하고 있었다. 처음엔 조건식이 또 잘못됐나 싶었다. 4편에서 겨우 실시간 연동을 뚫어놨는데 그게 반쪽짜리였다는 건 한참 뒤에야 알았다.
목차
등록은 됐는데, 봇은 안 보고 있었다
봇을 켜면 종목들이 순서대로 실시간 등록되는 로그가 찍힌다. 나는 그걸 진행바처럼 봤다. 이만큼 등록됐으니 이만큼 감시하고 있겠구나, 하고. 그날도 200개 넘는 리스트가 다 올라가는 걸 확인하고 자리를 떴다.
며칠 뒤 종목이 안 잡히는 게 이상해서 로그를 뒤로 쭉 올려봤다. 그런데 등록 로그가 어느 지점부터 모양이 바뀌어 있었다.
📡 실시간 등록: 056090 (type=1) 📡 실시간 등록: 058470 (type=1) 📡 실시간 등록: 065450 (type=1) 🛑 실시간등록 제한으로 스킵: 072470 🛑 실시간등록 제한으로 스킵: 079550 🛑 실시간등록 제한으로 스킵: 085910 🛑 실시간등록 제한으로 스킵: 086820
065450까지는 실시간 등록. 그다음 072470부터는 전부 실시간등록 제한으로 스킵. 등록이 되다가 어느 순간 뚝 끊긴 거였다. 세어보니 성공한 건 정확히 60개였고, 61번째부터는 한 개도 안 들어갔다.
60개가 벽이었다
키움 OpenAPI+에서 실시간 시세를 받으려면 종목을 실시간 등록해야 한다. 문제는 이 실시간 등록에 화면번호당 등록할 수 있는 종목 수 한도가 있다는 거였다. 한 화면번호에 무한정 종목을 밀어 넣을 수 없고, 초과분은 그냥 조용히 잘린다.
내 봇은 종목 하나하나를 같은 화면번호에 계속 쌓는 구조였다. 그러니 앞쪽 60개만 감시 목록에 올라가고, 뒤쪽 수백 개는 스킵 처리된 채 방치됐다. 조건검색으로 아무리 좋은 종목을 걸어놔도, 등록 순번이 61번 이후면 봇 입장에선 존재하지 않는 종목이었다.
가장 무서웠던 건 이게 에러가 아니었다는 점이다. 프로그램은 안 죽는다. 빨간 에러도 안 뜬다. 그냥 스킵 한 줄 남기고 멀쩡히 돌아간다. 4편에서도 겪었지만, 이 봇에서 제일 위험한 건 요란하게 터지는 에러가 아니라 아무 일 없는 척 조용히 절반만 일하는 상태다. 이게 딱 그거였다.
같은 종목이 하루 종일 스킵되고 있었다
스킵된 종목 하나를 잡아서 로그 전체에서 검색해봤다. 072470 하나만 따라가 봤는데, 이게 하루 종일 나온다.
12:54:10 🛑 실시간등록 제한으로 스킵: 072470 13:03:27 🛑 실시간등록 제한으로 스킵: 072470 13:28:10 🛑 실시간등록 제한으로 스킵: 072470 13:29:46 🛑 실시간등록 제한으로 스킵: 072470
봇을 껐다 켤 때마다, 재시작할 때마다 이 종목은 매번 같은 자리에서 스킵됐다. 아침에 스킵되면 그날 장 마감까지 계속 스킵이다. 한 번 등록 순번에서 밀리면 그날은 영영 봇 눈에 안 보이는 종목이 된다는 뜻이었다. 이걸 며칠을 모르고 지나갔다고 생각하니 허무했다.
지금 이 로그로 검색해 들어온 사람에게
혹시 지금 실시간등록 제한으로 스킵이 로그에 찍혀서, 또는 등록한 종목 중 일부만 실시간 데이터가 들어와서 검색해 들어온 사람이 있다면. 조건식부터 뜯어보지 마라. 나처럼 시간 버린다. 먼저 세어봐야 할 건 실제로 등록에 성공한 종목이 몇 개인지다. 60개 언저리에서 딱 끊겨 있으면 한도에 걸린 것이다.
해결 방향은 종목을 여러 화면번호에 쪼개서 등록하는 것이다. 한 화면에 다 밀어 넣지 말고, 일정 개수 단위로 화면번호를 나눠서 등록하면 스킵 없이 다 올라간다. 화면번호별 정확한 한도 값은 본인 환경에서 직접 등록해보며 확인하는 걸 권한다. 문서 값과 실제 체감이 다를 수 있어서, 나는 결국 로그에서 스킵이 시작되는 지점을 기준으로 잡았다.
등록했다는 착각을 버렸다
이 일 이후로 나는 봇을 켤 때 종목이 등록되는 로그를 더 이상 진행된 것으로 안 본다. 등록 요청을 보냈다는 것과, 봇이 그 종목을 실제로 감시하고 있다는 것은 완전히 다른 얘기였다. 요청은 200번 보냈어도 실제로 담고 있는 건 60개뿐일 수 있다.
그렇게 감시할 종목을 겨우 정리하고 나니, 이번엔 다른 문제가 기다리고 있었다. 봇이 종목을 다 잡아놓고도 하루 종일 한 주도 안 사는 것이다. 그 이야기를 다음 글에서 풀어보려 한다.
이 글은 내가 직접 만든 프로그램의 개발 기록일 뿐, 특정 종목이나 매매 방식을 권하는 글이 아니다. 투자 판단과 그 결과는 각자의 몫이다.
댓글 쓰기