전체 글 썸네일형 리스트형 42만 통 쌓인 Gmail을 코드로 정리한 이야기 (feat. Gmail API 함정들) 42만 통 쌓인 Gmail을 코드로 정리한 이야기 어느 날 구글에서 "저장용량이 거의 찼습니다"라는 알림을 받았다. Gmail이 16GB를 먹고 있었다. 나는 메일함을 딱히 관리한 적이 없었고, 광고성 메일만 잔뜩 받는다고 생각했다. 그런데 열어보니 예상과 전혀 달랐다.이 글은 그 42만 통을 코드로 정리하면서 부딪힌 Gmail API의 현실적인 함정들, 그리고 "이걸 남들도 쓰게 배포하려면?"에서 만난 OAuth 검증의 벽을 우회한 방법까지의 기록이다.1. 먼저 진단 — 그런데 숫자가 다 틀렸다정리에 앞서 "무엇이 얼마나 쌓였나"를 봐야 했다. Gmail API의 messages.list는 resultSizeEstimate라는 값을 준다. 그래서 카테고리별로 이걸 찍어봤더니:전체 : 201프.. 더보기 키움 REST 자동매매 멀티스레드 동시성 설계 — OCX STA 졸업, 매입가 race 없이 굴리기 구형 OCX(키움 OpenAPI+)로 자동매매를 만들어 본 사람은 압니다 — 멀티스레드가 사실상 막혀 있었습니다. OCX는 STA(Single-Threaded Apartment) 모델이라 서브 스레드에서 정상 동작하지 않았고, pythoncom.PumpWaitingMessages()로 이벤트를 펌프질하며 32bit 단일 프로세스에 묶여 있었죠. 그래서 KOAPY 같은 도구는 gRPC로 프로세스를 쪼개 우회해야 했습니다.REST API로 오면서 이 족쇄가 풀렸습니다. REST는 그냥 HTTP라 어느 스레드에서 호출하든 상관없습니다 — 진짜 멀티스레드가 됩니다. 그런데 자유에는 대가가 있습니다. 여러 스레드가 같은 상태(포지션·매입가)를 만지는 순간, 동시성 버그가 시작됩니다. 이 글은 그 버그를 코드로 재.. 더보기 키움 REST API 웹소켓 실시간 시세 — 폴링 졸업하고 끊겨도 살아남는 수신 구조 실시간 매매를 한다면서 1분마다 시세를 "조회"(폴링)하고 있다면, 이미 늦습니다. 1분 사이에 가격은 수십 번 움직이고, 폴링은 rate limit도 갉아먹습니다. 실시간 시세의 정답은 WebSocket — 서버가 변할 때마다 밀어주는 push 방식입니다.그런데 입문 예제는 "WebSocket 연결해서 데이터 받기"까지만 보여줍니다. 실제 운영의 핵심은 "연결"이 아니라 "끊겨도 살아남기"입니다. 장중에 연결은 반드시 끊깁니다. 이 글은 키움 WebSocket을 폴링과 비교 → 연결·구독 → 재접속 backoff → 수신/전략 분리까지, 끊겨도 죽지 않는 구조로 정리합니다.참고 — 키움 REST API 자동매매를 직접 만들 시간이 없다면, 맞춤 제작을 의뢰할 수도 있습니다. 키움 자동매매 맞춤 개발 문.. 더보기 키움 REST API 주문 처리 — 부분체결·중복주문·타임아웃까지 (봇이 돈을 흘리지 않는 법) 자동매매에서 돈이 새는 곳은 의외로 전략이 아니라 주문 처리입니다. 주문은 "보내면 끝"이 아니기 때문입니다. 10주 주문했는데 3주만 체결되고 7주는 미체결로 남거나, 네트워크가 느려 응답을 못 받고 같은 주문을 두 번 내보내거나, 타임아웃에 봇이 멈춰 그 사이 손절 주문이 안 나가거나 — 이런 일이 실계좌에서 실제 손실로 이어집니다.입문 글은 대부분 "매수주문 1주 넣기"까지만 보여줍니다. 이 글은 키움 REST API 주문을 발행 → 부분체결 추적 → 중복주문 방지 → 타임아웃 대응 → rate limit까지, 돈을 흘리지 않는 수준으로 정리합니다.참고 — 키움 REST API 자동매매를 직접 만들 시간이 없다면, 맞춤 제작을 의뢰할 수도 있습니다. 키움 자동매매 맞춤 개발 문의 (크몽)※ 아래 코.. 더보기 키움 REST API 토큰 자동 갱신 — 봇이 새벽에 멈추는 진짜 이유 (만료·401·멀티스레드) 자동매매 봇이 잘 돌다가 어느 날 새벽에 조용히 멈춰 있습니다. 에러 로그도 안 남고, 아침에 보면 주문이 하나도 안 나갔습니다. 이런 "조용한 정지"의 1순위 용의자가 접근토큰 만료입니다. 키움 REST API는 토큰에 유효기간이 있고, 만료된 토큰으로 요청하면 401이 떨어지는데, 갱신 로직이 없으면 봇은 그 시점부터 아무 일도 못 합니다.그런데 입문 글 대부분은 "토큰 한 번 발급받기"까지만 다룹니다. 정작 운영에서 사고가 나는 건 발급이 아니라 갱신인데 말이죠. 이 글은 키움 REST API 토큰을 발급 → 만료 감지 → 자동 갱신 → 401 대응 → 멀티스레드 안전까지, 새벽에 안 멈추는 수준으로 정리합니다.참고 — 키움 REST API 자동매매를 직접 만들 시간이 없다면, 맞춤 제작을 의뢰할 .. 더보기 키움 자동매매 모의투자 → 실전 전환, 모의 수익률을 믿으면 안 되는 이유 (REST API 기준) 모의투자에서 한 달 돌려 수익이 났습니다. "이제 실전으로 가도 되겠다" 싶죠. 그런데 막상 실계좌로 바꾸면 같은 전략인데 수익이 줄거나 마이너스가 나는 일이 흔합니다. 이 글은 키움 REST API 기준으로 모의투자 → 실전 전환을 다루되, 입문 글이 잘 안 짚는 부분 — 모의와 실전은 왜 다른가, 언제 전환해야 하나, 전환 직후 무엇이 터지나 — 를 운영자 관점에서 정리합니다.결론부터: "모의 수익률 = 실전 수익률"이 아닙니다. 그리고 REST API에서 전환 자체는 코드 한 줄이라, 진짜 중요한 건 "전환을 결정하는 기준"과 "전환 직후 며칠"입니다.참고 — 키움 REST API 자동매매를 직접 만들 시간이 없다면, 맞춤 제작을 의뢰할 수도 있습니다. 키움 자동매매 맞춤 개발 문의 (크몽)1. 모.. 더보기 키움 REST API 자동매매, OCX에서 갈아타기 — 입문 튜토리얼이 안 알려주는 실전 운영 가이드 키움증권이 REST API를 열면서 "이제 자동매매 시작해야지" 하는 분이 많습니다. 그런데 막상 검색해 보면 대부분 입문 튜토리얼이라, 이미 OCX(OpenAPI+)로 봇을 굴려본 사람에게 정작 필요한 이야기는 잘 없습니다. 이 글은 실제로 OCX 봇을 운영하다 REST로 옮긴 관점에서, 입문 글이 잘 안 다루는 부분 위주로 정리합니다.결론부터 말하면 이렇습니다. REST 전환 자체는 어렵지 않습니다. 진짜 어려운 부분은 OCX든 REST든 똑같이 — 실시간성과 멀티스레드 아키텍처입니다. 이 글의 절반은 거기에 씁니다.참고 — 직접 구축이 부담되면 검증된 키움 자동매매를 바로 쓰는 방법도 있습니다. 크몽에서 보기 (링크 입력)1. OCX의 진짜 진입장벽은 "32bit 종속"이었다키움 OpenAPI+(O.. 더보기 미국주식 매일 아침 8시, 저는 이 알림 한 장으로 하루를 시작합니다 미국주식 매일 아침 8시, 저는 이 알림 한 장으로 하루를 시작합니다2021년까지 저는 새벽 3시에 일어나 차트를 켜는 사람이었습니다. 지금은 8시에 커피를 내리면서 이 알림 한 장을 확인합니다. 바뀐 건 제가 아니라 시스템입니다.1. 시차가 진짜 문제였습니다미국주식을 하면 정확히 두 가지 선택만 남습니다. 새벽에 깨거나, 놓치거나. 저는 둘 다 해봤습니다.새벽 3시에 알람을 맞춰 일어나 체결을 보고, 다시 자려다 7시에 다시 깨서 지수 확인을 했습니다. 그 다음 출근하면 오전 10시부터 졸음이 쏟아졌습니다. 제 미국주식 수익은 건강과 컨디션으로 상쇄되고 있었습니다.2. 한 가지만 바꿨습니다복잡한 걸 한 게 아닙니다. 지정가 주문을 미리 넣어두는 것입니다. 키움증권 영웅문Global은 애초에 그 기능이 .. 더보기 이전 1 2 3 4 ··· 285 다음