프로그램을 텔레그램으로 원격제어
이 프로그램은 텔레그램 봇(Telegram Bot)을 통해 프로그램을 원격으로 제어하고,
매매 알림을 받을 수 있는 기능을 포함하고 있습니다.
프로그램 내에서 텔레그램을 사용하는 방법과 기능을 정리해 드립니다.
프로그램을 사용하기 전에 텔레그램 봇을 생성하고 연동해야 합니다.
봇 생성: 텔레그램에서 @BotFather를 검색하여 말을 걸고 /newbot 명령어로 나만의 봇을 만듭니다.
토큰(Token) 확인: 봇 생성이 완료되면 HTTP API Token을 발급받습니다.
Chat ID 확인: 내 봇에게 아무 메시지나 보낸 후, https://api.telegram.org/bot[토큰]/getUpdates 주소로 접속하거나 ID 확인용 봇을 통해 내 고유 ID(숫자)를 알아냅니다.
프로그램 입력:
프로그램의 [1. 시스템/접속] 탭에 있는 '봇 설정 및 연결'란으로 이동합니다.
매매 토큰: 위에서 발급받은 토큰 입력
매매 ID: 내 Chat ID 입력
텔레그램 봇 채팅창에 명령어를 입력하거나, 화면에 뜨는 버튼을 눌러 프로그램을 제어할 수 있습니다.
채팅창에
/메뉴 또는 /menu
라고 입력하면 아래와 같은 버튼형 메뉴가 나타납니다.
매수 설정: 매수 비중(10%, 20%, 50%), 종목 수 제한(ON/OFF), 매수 정지 시간 설정 등을 변경할 수 있습니다.
매도 설정: 익절가(3%, 5%, 10%), 손절가, 트레일링 스탑(TS) 기능을 켜고 끌 수 있습니다.
보유종목 개별청산: 현재 보유 중인 종목 리스트를 보고, 특정 종목만 골라서 즉시 매도할 수 있습니다.
실시간 잔고: 현재 계좌의 평가금액, 수익률, 보유 종목 현황을 조회합니다.
매매 분석: 당일 확정 수익과 현재 보유 수익을 합산한 '오늘의 성적표'를 보여줍니다.
긴급 제어:
자동매매 시작: 매매 로직을 가동합니다.
자동매매 정지: 매매 로직을 멈춥니다.
프로그램 재시작: 프로그램을 원격으로 재부팅합니다.
긴급청산 (PANIC): 보유한 모든 종목을 즉시 시장가로 매도합니다. (비상용)
버튼을 누르지 않고 단축 명령어로도 제어가 가능합니다.
/r 또는 /report, /전체: 실시간 계좌 잔고 리포트를 전송받습니다.
/panic: 긴급 일괄 청산(Panic Sell)을 실행합니다.
/restart: 프로그램을 재시작합니다.
/종료: 자동매매를 정지합니다. (프로그램 종료가 아닌 매매 기능 OFF)
/재개: 자동매매를 다시 시작합니다.
/계좌보호: 신규 매수를 금지합니다 (기존 보유 종목 관리는 유지).
/계좌해제: 신규 매수 금지를 해제합니다.
/보호 [종목명]: 특정 종목을 매도 금지(보호) 상태로 설정합니다.
/해제 [종목명]: 특정 종목의 보호 상태를 해제합니다.
프로그램이 실행되는 동안 다음과 같은 상황에서 자동으로 메시지를 보내줍니다.
매매 체결 알림: 매수 또는 매도가 체결되었을 때 종목명, 가격, 수량 등을 알려줍니다.
상태 알림: 프로그램 로그인 성공, 장 마감 정산, 에러 발생 시 알림을 보냅니다.
새로운 토큰과 ID로 뉴스봇을 따로 만들어도 되고,
매매봇과 같은 토큰과 ID로 같은 방에서 메시지를 받을 수도 있습니다.
(배포용 ID 는 개인적인 필요로 만들었는데, 해당란은 비워두어도 상관없습니다.)
뉴스봇은 크게
수집 → 분석 → 판단 → 행동(매매/알림)의 4단계로 작동합니다.
뉴스 수집 (Collection) NaverApiNewsThread라는 별도의 일꾼(쓰레드)이 돕니다.
네이버 검색 API를 사용하여 등록된 감시 종목들의 뉴스를 실시간으로 검색합니다.
API 호출 제한을 피하기 위해 여러 개의 API 키를 번갈아 가며 사용합니다.
뉴스 분석 (Analysis & Scoring)
뉴스가 포착되면
제목이나 종목명이 스팸 목록에 있는지 확인하여 거릅니다.
점수 산정: 뉴스의 중요도를 계산합니다.
재료 점수: 키워드 등급(S급 30점, A급 20점, B급 10점)에 따라 점수를 부여합니다.
타이밍 점수: 뉴스가 얼마나 신선한지(1보, 2보, 장중 돌발 등)에 따라 추가 점수(+1~9점)를 줍니다.
매매 판단 (Decision)
계산된 총점(Total Score)이 매수탭에 설정된 '매매 점수'(기본 20점)를 넘으면 자동 매수를 시도합니다.
이미 보유 중인 종목이거나, 장 운영 시간이 아니면 매매하지 않습니다.
알림 발송 (Notification)
총점이 '알림 최소 점수'(기본 10점-수정가능)를 넘으면 텔레그램으로 메시지를 보냅니다.
메시지에는 [점수, 재료 등급, 관련 전략, 현재가, 거래량 분석] 등의 정보가 포함됩니다.
코드 내에서 키워드는 하드코딩(고정)되어 있지 않고, 프로그램 화면(UI)에서 직접 수정하고 저장할 수 있도록 설계되어 있습니다.
프로그램 우측 패널에 있는 탭 메뉴 중 [뉴스 필터링] 탭을 클릭합니다.
"⚖️ 뉴스 가중치 키워드 설정"이라는 그룹 박스를 찾습니다.
그 안에 [S급], [A급], [B급]으로 나뉜 탭이 있습니다.
원하는 등급의 탭을 선택한 후, 텍스트 상자에 키워드를 한 줄에 하나씩 입력하거나 수정합니다.
예시: 무상증자, 공급계약, 경영권분쟁 등
수정이 끝났으면 탭 하단에 있는 "필터 설정 저장하기" 버튼을 반드시 눌러야 적용됩니다.
S급: 30점 부여 (강력한 호재)
A급: 20점 부여 (긍정적 호재)
B급: 10점 부여 (일반 뉴스/특징주)
네이버 뉴스 검색을 위해 필요한
Client ID와 Client Secret을 발급받는 절차를 단계별로 안내해 드립니다.
이 키가 있어야 프로그램이 뉴스를 수집해올 수 있습니다.
먼저 네이버 아이디로 로그인을 한 후, 아래 링크로 접속합니다.
사이트 주소: 네이버 개발자 센터 (Naver Developers)
상단 메뉴에서 Application > 애플리케이션 등록을 클릭합니다.
다음과 같이 항목을 입력 및 선택하세요:
애플리케이션 이름: 원하는 이름을 아무거나 입력합니다. (예: MyStockNewsBot)
사용 API: [검색]을 선택합니다. (필수)
참고: '데이터랩(검색어트렌드)' 등이 아닌 반드시 '검색'이어야 뉴스 수집이 가능합니다.
비로그인 오픈 API 서비스 환경: [WEB 설정]을 선택합니다.
웹 서비스 URL: 프로그램에서만 쓰더라도 형식상 입력해야 합니다.
http://localhost 또는 http://google.com 처럼 아무 주소나 입력해도 무방합니다.
등록하기: 하단의 등록 버튼을 누릅니다.
등록이 완료되면 내 애플리케이션 메뉴로 이동합니다. 방금 만든 애플리케이션을 클릭하면 개요 탭에서 두 가지 정보를 확인할 수 있습니다.
Client ID: (예: XyZ123abc...)
Client Secret: (예: a1b2c3d4...) -> '보기' 버튼을 눌러야 보입니다.
⚠️ 주의: Client Secret은 비밀번호와 같으므로 타인에게 노출되지 않도록 주의하세요.
발급받은 키를 프로그램에 적용하는 순서입니다.
프로그램을 실행하고 [1. 시스템/접속] 탭으로 이동합니다.
"API 키 관리" 또는 "뉴스 검색 API 설정" 섹션을 찾습니다.
보통 config.json 파일을 직접 수정하거나, 프로그램 화면 내 입력칸이 있습니다.
Client ID와 Client Secret을 각각 복사하여 붙여넣습니다.
뉴스 검색을 위한 API 키는 '콜론(:)'을 구분자로 사용하여 한 줄에 하나의 키 세트를 입력해야 합니다.
클라이언트ID:클라이언트Secret
저장 버튼을 누릅니다.
팁 (하루 사용량 제한)
네이버 검색 API는 하루에 25,000건의 호출 제한이 있습니다.
혼자 사용하기에는 충분하지만, 만약 감시 종목이 너무 많아(100개 이상) 제한에 걸린다면, 키를 추가로 발급받아 프로그램에 여러 개를 등록하면 번갈아 가며 사용하여 제한을 피할 수 있습니다.