주식 자동매매 프로그램은 조건을 계산하고, 신호가 성립했는지 확인하고, 정한 주문을 내고, 처리 결과를 기록한다. 무엇을 자동화할지 먼저 고르면 증권사 HTS 기능으로 충분한지, 공식 API로 직접 만들어야 하는지가 선명해진다. 하루 종일 화면을 볼 수 없다면 감시부터 맡기는 식으로 시작할 수 있다.
조건에서 기록까지 네 단계
첫 단계는 조건이다. 종목 범위와 계산 기준을 정한다. 예를 들어 “코스피·코스닥 종목 가운데 종가가 짧은 이동평균선 위에 있고 거래량이 정한 배수 이상인 종목"처럼 쓴다. 키움증권 “조건검색"에서는 기술적분석·패턴분석·재무분석·순위분석·시세분석 지표를 조합해 일치하는 종목을 실시간으로 찾고 관심종목으로 등록할 수 있다.
둘째는 신호다. 프로그램은 새 가격이 들어올 때마다 조건을 계산하고 참인지 거짓인지 가른다. 같은 조건이 이어지는 동안 매번 주문할지, 처음 성립한 순간에만 실행할지도 정해야 한다. 트레이딩뷰 얼러트는 한 번만, 매번, 봉 마감 시마다 한 번, 1분마다 한 번 가운데에서 발동 빈도를 고를 수 있다.
셋째는 주문이다. 매수·매도 구분, 종목, 수량이나 금액, 주문 시점을 입력한다. 신호가 종목을 찾는 문장이라면 주문은 그 종목을 어떻게 처리할지 적은 문장이다. 넷째는 기록이다. 신호 발생 시각, 주문 요청, 체결 여부, 보유 수량을 남기면 규칙이 의도한 순서로 실행됐는지 다시 볼 수 있다.
HTS 기능으로 할 수 있는 일
코드를 쓰지 않고 시작하려면 증권사 HTS 기능을 살핀다. 키움증권에서는 “조건검색"으로 종목을 찾고 “성과검증"으로 조건식의 과거 모습을 확인할 수 있다. 이어서 “자동감시주문"에 보유종목이나 특정종목의 감시조건과 주문 설정을 저장하면 조건 충족 시 주문이 실행된다.
이 방식은 제공된 입력칸과 메뉴 안에서 조건과 주문을 정한다. 설치된 HTS에서 조건을 만들고, 감시할 종목과 시간을 고르고, 주문 설정을 저장하는 순서다. 필요한 일이 실시간 종목 검색, 보유종목 매도 감시, 신규종목 매수 감시라면 먼저 이 범위에서 구성해 볼 수 있다.
증권사 기능을 쓰면 조건 감시와 주문이 증권사의 공식 기능 안에서 이어진다. 키움증권 자동감시주문은 HTS·MTS 화면을 꺼도 서버에서 감시를 계속한다. 직접 실행 프로그램을 계속 켜 두는 구조와 구분되는 부분이다.
API로 직접 만들면 달라지는 것
공식 API를 쓰면 조건 계산, 종목 선정, 주문, 기록의 순서를 코드로 구성할 수 있다. 키움증권은 Open API+와 REST API를 제공한다. 한국투자증권 “KIS Developers"는 국내주식, 국내선물옵션, 해외주식, 해외선물옵션, 장내채권 카테고리별 API를 제공한다.
직접 만드는 프로그램에서는 언제 데이터를 읽고 어떤 계산을 할지 정할 수 있다. 여러 조건을 차례로 검사하거나 신호가 발생한 내용을 자신의 기록 형식으로 남길 수도 있다. 그만큼 계좌 연결, 인증 정보, 주문 요청, 실행 상태를 관리하는 부분도 프로그램의 구성에 들어간다.
API를 고를 때는 거래하려는 상품을 먼저 본다. 키움증권 REST API의 거래 범위는 현재 국내주식이며 ETF와 ETN을 포함한다. 국내주식과 해외주식을 함께 다룰 계획이라면 한국투자증권 “KIS Developers"가 공개한 상품 카테고리처럼 공식 제공 범위를 확인해 설계를 시작한다.
어떤 프로그램을 고를지 정하는 기준
프로그램 이름보다 자동화할 일을 먼저 적는다. “조건에 맞는 종목만 모으고 주문은 내가 한다"면 조건검색이나 얼러트가 출발점이다. “보유종목의 가격을 계속 감시해 정한 주문을 낸다"면 자동감시주문 범위를 확인한다. “여러 계산과 주문 기록을 한 순서로 묶는다"면 API 방식이 맞는다.
사용할 장소도 기준이 된다. PC의 HTS에서 규칙을 만들 것인지, 휴대폰으로 상태를 볼 것인지, 자신이 관리하는 실행 환경에서 코드를 돌릴 것인지 정한다. 다음으로 거래 상품, 감시 시간, 주문 종류, 기록할 항목을 적는다. 이 네 가지가 공식 도구에서 제공되는지 맞춰 보면 선택지가 줄어든다.
자동화 범위는 한꺼번에 넓힐 필요가 없다. 종목 찾기만 실행해 결과를 모은 뒤 감시를 붙이고, 다음에 주문을 연결할 수 있다. 각 단계의 입력과 출력을 기록하면 어느 조건에서 다음 단계로 넘어갔는지 읽기 쉽다.
규칙과 프로그램의 경계
프로그램은 이동평균, 거래량, 이격도 같은 값을 빠르게 계산하고 같은 조건을 반복해서 검사한다. 그러나 어떤 지표를 묶을지, 진입 뒤 언제 청산할지, 한 종목에 얼마를 쓸지는 사람이 정한다. “신호가 나오면 매수” 한 줄만으로는 종료 조건과 금액이 빠져 있다.
완성된 규칙은 조건, 신호 발생 방식, 주문, 기록 항목을 한 문서에 적어 둔다. 예를 들면 “봉 마감 때 조건 확인 → 처음 성립하면 정한 금액으로 주문 요청 → 청산 조건까지 감시 → 신호와 주문 시각 기록"처럼 쓸 수 있다. 이 문장이 프로그램의 작업 순서가 된다.
처음 한다면 이 순서로
- 종목 찾기, 알림, 주문, 기록 가운데 자동화할 범위를 고른다.
- 조건과 신호 발생 시점을 계산할 수 있는 문장으로 적는다.
- HTS의 “성과검증"이나 전략 검사 기능으로 과거 모습을 확인한다.
- HTS 기능과 API의 제공 범위를 비교해 실행 도구를 정한다.
- 알림과 기록부터 확인한 뒤 정한 주문 단계를 연결한다.
책에서 이어지는 것
진입 신호만 보지 않고 금액과 청산을 한 세트로 만드는 법은 제8장 그래서 차트를 어디에 씁니까에서 이어진다. 골든크로스의 뜻은 제2장 골든크로스는 매수 신호입니까, 서로 다른 재료의 지표를 조합하는 법은 제5장 보조지표 사용설명서에서 다룬다.