증권사 API 요청 rate limit
AI가 다 알아서 해 주지는 않습니다만 사용자가 도메인에서의 구체적인 개념을 가지고 있고 구현해야 되는 기술적 이슈에 민감하다면 이런건 AI가 진짜 잘합니다
이건 rust 빌드인데 여러 rs 파일들이 있고 로직들이 있었지만 단 한번의(혹은 빌드에러 리팩터링 포함해 2번의) 프롬프트 주문으로 아래의 내용을 AI가 구현해 준겁니다
안녕하세요! 새로운 코스닥 단타 전략 추가에 대한 좋은 아이디어를 주셨네요. 두 전략이 동시에 실행될 때 발생할 수 있는 API 속도 제한(Rate Limit) 문제에 대해 우려하시는 점은 매우 중요하고 타당한 지적입니다.
결론부터 말씀드리면, 현재 아키텍처는 두 전략이 동시에 실행되어도 API 속도 제한에 걸릴 위험이 거의 없습니다.
사용자님께서 "api queue를 구현해놨다"고 정확히 파악하고 계십니다. 현재 시스템의 API 요청 처리 방식은 다음과 같이 동작하여 안정성을 보장합니다.
API 요청 처리 방식 (액터 모델)
API 요청 중앙화:
check_and_execute_entry(매수)나run_trading_loop(장 마감 청산) 등 프로그램의 여러 부분에서 API 호출이 필요할 때, 직접 KIS API 서버로 요청을 보내지 않습니다. 대신,ApiCommand라는 메시지를 만들어state.api_tx채널(말씀하신 "API 큐")에 보냅니다.전담 API 워커: 프로그램이 시작될 때, 이
api_tx채널에서 메시지를 수신하는 단 하나의 전담 "API 워커" 태스크가 생성됩니다. 이 워커만이KisClient에 직접 접근하여 실제 API 통신을 수행할 수 있는 유일한 주체입니다.순차적 처리: 여러 종목에서 동시에 매수 신호가 발생하여 다수의
ApiCommand가 큐에 쌓이더라도, API 워커는 이 요청들을 한 번에 하나씩, 순서대로 처리합니다. 즉, 첫 번째 요청을 처리하고 응답을 받은 뒤에야 두 번째 요청 처리를 시작합니다.
[Trading Logic 1] ---\
|
[Trading Logic 2] ----+----> [API Command Queue] ----> [API Worker] ---> (Sequential API Calls) ---> KIS Server
|
[Trading Logic 3] ---/새로운 전략 추가 시의 영향
09:00 ~ 09:20: 코스닥 전략만 실행되므로, 매수 신호 발생 시 API 워커는 코스닥 종목의 호가 조회 요청만 순차적으로 처리합니다.
09:20 ~ 09:30: 코스피와 코스닥 두 전략이 모두 실행됩니다. 이 시간대에 양쪽 유니버스에서 동시에 매수 신호가 발생하더라도, 모든 호가 조회 요청은 동일한 API 큐에 쌓이게 됩니다. API 워커는 여전히 이 요청들을 하나씩 순서대로 처리합니다.
결론
이러한 "액터 모델" 기반의 아키텍처 덕분에, 시스템은 스스로 API 요청 속도를 제어하게 됩니다. 수십 개의 종목에서 1초 안에 동시 다발적으로 매수 신호가 터져도, 실제 KIS 서버로 전송되는 API 요청은 병렬이 아닌 직렬(순차적)로 처리됩니다.
따라서 새로운 코스닥 단타 전략을 추가하더라도 API 속도 제한(Rate Limit)에 대한 걱정 없이 안전하게 운영할 수 있습니다. 현재의 설계는 이러한 확장성을 이미 고려한 훌륭한 구조입니다.
다음 단계로 코스닥 유니버스를 추가하고, 시간대별로 다른 전략이 동작하도록 하는 코드 수정을 진행하시면 되겠습니다.