Skip to content

매수 및 매도 기능 구현 과정

sieun edited this page Dec 3, 2024 · 1 revision

매수/매도 API 구현

image

위와 같이 클라이언트에서 사용할 3가지의 API를 만들어두었고, 체결에 대해서는 서버 내부적으로 처리하도록 구현하였습니다.

간단하게 동작 방식을 설명드리면, 매수/매도 API를 통해 매수 예약과 매도 예약이 DB에 등록됩니다. DB에 예약이 등록되면서 한국 투자 증권 웹소켓 세션에서 해당 종목에 대한 subscribe를 시작하고 현재 체결가를 실시간으로 서버에서 받게 됩니다. 서버에서 체결가를 받게 되면 해당 종목에 대해 체결 가능한 주문을 DB에서 찾고, 체결해 사용자의 자산과 보유 주식 등등을 업데이트합니다.

한국 투자 증권 웹소켓 구독 수 제한

처음에는 웹소켓으로 모든 주식 종목을 트래킹해 DB를 업데이트할 계획이었습니다. 그러나, 주식 종목이 너무 많아 DB에 너무 과도하게 많이 접근하게 되는 것이 아닌지 걱정이 되기도 했고, 결정적으로 한국 투자 증권에서는 웹소켓으로 구독하는 정보의 수를 하나의 계좌 당 최대 41개로 제한하고 있었습니다.

image

그래서, 매도/매수 주문이 들어오는 종목에 한해서만 구독을 하고, 아래와 같이 주문이 취소되거나 체결이 완료될 경우 구독을 취소하는 로직을 추가해 모든 종목을 트래킹하지 않아도 되도록 수정했습니다.

    if (
      affectedBuyRow + affectedSellRow > 0 &&
      !(await this.stockExecuteOrderRepository.existsBy({
        stock_code: stockCode,
        status: StatusType.PENDING,
      }))
    )
      this.unsubscribeByCode([stockCode]);

📜 개발 일지

⚠️ 트러블 슈팅

❗ 규칙

🗒️ 기록

기획
회의록
데일리스크럼
그룹 멘토링
그룹 회고

😲 개별 멘토링

고동우
김진
서산
이시은
박진명
Clone this wiki locally