🛠️ Dev & Tools (투자 도구 개발)

[계좌 리팩토링] 20편(운영). "회사 PC에선 차트 못 켜니까!" 내 손안의 텔레그램 양방향 리모컨 구축기

코딩버핏 2026. 6. 4. 23:12

내 손안의 텔레그램 양방향 리모컨 구축기

 

1. 왜 하필 텔레그램 '양방향' 리모컨인가?

안녕하세요! 내 계좌를 위한 자동매매 시스템을 빚어가는 [계좌 리팩토링] 시리즈, 대망의 20편입니다. 지난 시간까지 우리는 봇의 뇌(로직)와 심장(웹소켓), 그리고 한정된 자원을 배분하는 혈관(슬롯 관리 알고리즘)까지 모두 완성했습니다.

이제 봇은 클라우드 서버 위에서 24시간 돌아가기 시작했습니다. 하지만 실전 운영에 돌입하면 곧바로 현실적인 장벽에 부딪힙니다. 일반적인 기업 환경, 특히 내부 보안망이 엄격한 비IT 기업 사무실에서는 개인적인 터미널 창이나 화려한 트레이딩 대시보드를 모니터에 하루 종일 띄워두는 것이 현실적으로 불가능합니다.

점심시간이나 회의 중간중간, 스마트폰으로 빠르게 봇의 상태를 확인하고 즉각적인 명령을 내릴 수 있는 '무선 리모컨'이 절실해집니다. 그래서 저는 단순한 알림(Push) 기능을 넘어, 메신저에서 직접 명령어를 치면 서버가 반응하는 텔레그램 양방향 봇(Interactive Bot)을 구축했습니다.

2. 철통 보안: "내 계좌는 나만 움직인다"

가장 먼저 신경 써야 할 것은 보안입니다. 텔레그램 봇 주소만 알면 누구나 제 봇에게 "삼성전자 풀매수!" 같은 장난을 칠 수 있다면 끔찍하겠죠. 이를 방지하기 위해 봇은 실행 중인 상태에서 사전에 등록된 채팅 ID(Chat ID)에서 온 메시지만 검증하여 작동하도록 철저한 화이트리스트 기반으로 설계했습니다.

3. 실전 필수 명령어 (Command Set) 아키텍처

스마트폰 키보드로 길게 타이핑할 여유는 없으므로, 슬래시(/)로 시작하는 직관적인 명령어 체계를 기획했습니다.

  • 종목 동적 추가 (/add): 시장 주도주가 바뀌었을 때 서버를 껐다 켤 필요 없이 즉각 종목을 편입합니다.
    • /add 005930 10: 국내 주식(KR) 종목을 비중 10%로 추가합니다.
    • /add AAPL 10, TSLA, NVDA 20: 미국 주식(US) 다중 추가도 지원하며, 비중을 생략할 경우 기본 5%로 자동 설정됩니다.
  • 종목 덜어내기 (/del): /del 005930, AAPL 명령어로 모멘텀이 꺾인 감시 종목을 즉시 삭제(웹소켓 슬롯 회수)할 수 있습니다.
  • 상태 브리핑 (/list & /report):
    • /list: 현재 봇이 감시하고 있는 종목 리스트와 각각의 비중을 한눈에 확인합니다.
    • /report: 가장 중요한 '오늘 거래 리포트(손익 요약)'를 출력해, 퇴근길 지하철에서 하루 농사를 결산해 줍니다.
  • 알림 제어 및 헬프 (/noti & /guide): /noti on, /noti off로 알림을 켜고 끌 수 있으며, /guide를 통해 전체 사용 가이드를 언제든 출력할 수 있습니다.

4. 수면권 보장 프로젝트: '에티켓 모드' 도입

제가 가장 공들인 기능 중 하나는 바로 '에티켓 모드'입니다. 제 봇은 변동성이 큰 미국 주식(US)도 함께 다루다 보니, 새벽 내내 매수/매도 알림이 울려대면 다음 날 회사 출근에 치명적인 지장을 줍니다.

이를 막기 위해 서버 내부에 메시지 큐(Queue)를 구현했습니다. 새벽 1시부터 8시 사이에는 알림을 즉시 발송하지 않고 큐에 조용히 적재해 둔 뒤, 아침 08:00 KST가 되면 일괄 발송하도록 처리했습니다. 밤새 봇이 일한 흔적을 아침 출근길에 신문 보듯 한 번에 훑어볼 수 있죠.

다만, 심각한 시스템 에러나 그날의 거래를 결산하는 EOD(End of Day) 리포트 같은 중요 알림은 에티켓 모드를 무시해야 합니다. 이때는 내부 함수인 sendDirect()를 호출하여 에티켓 모드를 무시하고 즉시 전송되도록 예외 처리를 두었습니다.

5. 마무리하며: 진정한 의미의 '시스템화'

이제 저는 업무 중에도, 화장실에서도 텔레그램 창 하나만 열면 Parker Brooks(봇)에게 종목을 던져주고 성과를 보고받을 수 있게 되었습니다. AWS 콘솔을 열 필요도, SSH로 터미널에 접속할 필요도 없습니다.

자동매매 시스템은 로직을 잘 짜는 것도 중요하지만, 그 시스템을 내 일상생활의 리듬과 회사 생활에 거슬리지 않게 조화시키는 운영적 디테일이 최종 성패를 가릅니다. 텔레그램 연동과 에티켓 모드는 그 디테일의 정점이라고 할 수 있겠네요!