-
Notifications
You must be signed in to change notification settings - Fork 1
매수 및 매도 기능 구현 과정
sieun edited this page Dec 3, 2024
·
1 revision
위와 같이 클라이언트에서 사용할 3가지의 API를 만들어두었고, 체결에 대해서는 서버 내부적으로 처리하도록 구현하였습니다.
간단하게 동작 방식을 설명드리면, 매수/매도 API를 통해 매수 예약과 매도 예약이 DB에 등록됩니다. DB에 예약이 등록되면서 한국 투자 증권 웹소켓 세션에서 해당 종목에 대한 subscribe를 시작하고 현재 체결가를 실시간으로 서버에서 받게 됩니다. 서버에서 체결가를 받게 되면 해당 종목에 대해 체결 가능한 주문을 DB에서 찾고, 체결해 사용자의 자산과 보유 주식 등등을 업데이트합니다.
처음에는 웹소켓으로 모든 주식 종목을 트래킹해 DB를 업데이트할 계획이었습니다. 그러나, 주식 종목이 너무 많아 DB에 너무 과도하게 많이 접근하게 되는 것이 아닌지 걱정이 되기도 했고, 결정적으로 한국 투자 증권에서는 웹소켓으로 구독하는 정보의 수를 하나의 계좌 당 최대 41개로 제한하고 있었습니다.
그래서, 매도/매수 주문이 들어오는 종목에 한해서만 구독을 하고, 아래와 같이 주문이 취소되거나 체결이 완료될 경우 구독을 취소하는 로직을 추가해 모든 종목을 트래킹하지 않아도 되도록 수정했습니다.
if (
affectedBuyRow + affectedSellRow > 0 &&
!(await this.stockExecuteOrderRepository.existsBy({
stock_code: stockCode,
status: StatusType.PENDING,
}))
)
this.unsubscribeByCode([stockCode]);
- [FE] 프론트엔드 기술스택
- [FE] 라이브러리 없이 차트 구현 이유
- [FE] Canvas API 사용방법
- [FE] 네비게이션 바 애니메이션 구현
- [FE] Socket.io 사용방법
- [FE] Tanstack Router에 대하여...
- [FE] Intl(Internationalization) API
- [FE] React Suspense 적용
- [FE] 한글 입력 방식의 유연성을 높인 검색 시스템 구현하기
- [BE] 백엔드 기술 스택
- [BE] SSE vs Socket.io
- [BE] Redis를 도입하게 된 계기
- [BE] ACG Rule을 활용한 Secure CI CD 파이프라인 구현
- [BE] Nginx 로드밸런싱을 통해 한국 투자 API 소켓 제한 극복
- [BE] 주가 지수 기능 개발 과정
- [BE] 매수 및 매도 기능 개발 과정
- [BE] 실시간 자산 조회 기능 개발 과정
- [BE] 단위 테스트
- [BE] redis를 이용한 한국투자 Open API 세션 관리
- [BE] 데이터베이스 인덱싱
- [FE] React에서의 DOM 요소 접근 (useRef vs getElementById)
- [FE] Outlet을 활용한 공통 레이아웃 관리
- [FE] react hooks가 특정 조건에서 실행되면 안되는 이유 & useQuery에 query function 매개변수가 undefined일 수도 있을 때 어떻게 해결할까
- [FE] cross‐domain 로컬 환경에서 cookie로 인증 처리하기 with vite proxy
- [FE] 크롬&사파리 Composition 차이
- [FE] useEffect 의존성 배열
- [BE] Naver Cloud Platform HTTPS 무응답 현상
- [BE] 한국투자 Open API에서 access token을 발급받지 못하는 문제
- [BE] 한국투자 Open API와 웹소켓 연결이 되지 않던 문제
- [BE] 한국투자 Open API 웹소켓 연결이 중단되는 문제
- [BE] 같은 주식 주문이 동시에 여러 번 체결되는 문제
- [BE] 한국투자 Open API Websocket 세션을 두 개에서 한 개로 변경하기
- [BE] Nginx 로드 밸런싱 중 Socket bad Request 발생하는 현상
- [BE] 매수/매도 체결 로직에 의해 redis pub/sub이 정상적으로 동작하지 않는 문제