L-ATS 3.0 시스템은 크게 아래 두 가지 프로그램으로 구성된다.
Windows Application
OS : Windows 11
개발 환경 : 개인 데스크탑, MS Visual Studio 2019, 이베스트 투자증권 XingAPI
개발 언어 : C#, Winform
운영 환경 : AWS Cloud
LINUX Server Program
OS : CentOS 8.x
개발 환경 : Raspberry Pi, Vim Editor, MariaDB
개발 언어 : python3
운영 환경 : AWS Cloud
시스템의 큰 구성은 기존 L-ATS 2.0의 구조를 승계했다.
Windows Application은 매수할 종목의 자동 인식과 실제 매매 업무를 담당하고 LINUX Server Program은 매수를 위한 종목 정보관리 업무를 담당한다.
L-ATS 3.0의 큰 흐름을 도식화 하면 다음과 같다.
L-ATS 3.0.exe
Windows Application
- 화면 캡처 처리
- Visual Studio를 통해 C# 프로그래밍으로 화면을 캡쳐하는 방식을 구현하기는 쉽지 않았다.
- 관련된 예시나 소스는 많지만 원하는 크기, 원하는 위치의 화면을 캡쳐하는 방식의 화면 캡쳐 구현은 존재하지 않았다.
- 그래서 유용한 정보들을 수집해서 몇가지의 예시 기능을 결합해서 구현했다.
- 캡쳐된 문자 이미지의 OCR 처리
- 캡쳐된 화면을 바로 OCR 요청해서 Text로 변환하는 기능을 한다.
- Apple이나 Google, NAVER에서 제공하는 OCR은 한국어 인식능력이 뛰어나지만 비용적인 측면의 문제가 있었다.
- 때문에 무료로 사용 가능한 Tessaract OCR을 사용했다. (인식률이 많이 좋아지긴 했지만...부족하다...)
Tessaract OCR의 정확도가 낮지만 그래도 효용성이 있다고 판단한 이유는 하루에 많은 뉴스 종목들 중에 정확히 인식되는 몇몇개 종목에 대해 데이터 분석을 통해 높은 확률로 수익을 낼수 있는 조건을 만든다면 사용해도 무방하다고 생각했다.
- 이베스트 투자증권 API를 사용한 Trading 처리
- OCR 결과 Text에서 패턴 분석을 통해 종목명을 추출한다.
패턴 분석을 위해서는 해당 뉴스방에서 어떤 형태의 문자열로 뉴스를 알려주는지 공통점을 찾아내야 한다. 동일한 방법으로 많은 수의 뉴스 분석이 가능하고 종목추출이 가능한 패턴을 분석한다.
-
- 추출된 종목명은 LINUX Server Program으로 전송하여 Database에 저장된 종목의 Code 정보를 가져온다.
- Code 정보를 확보하면 증권사 API를 사용하여 매수 요청한다.
- 매매 결과 정보를 LINUX Server Program으로 전송하여 파일에 기록할 수 있게 한다.
L-ATS-3.0-Server.py
LINUX Python Program
- OCR 결과에서 추출한 종목명을 수신한다.
- 수신한 종목명으로 Database를 조회하여 종목의 존재 여부를 확인하고 존재할 경우 종목 코드를 Windows Application으로 전달한다.
- 수신한 매매 결과 정보를 모니터링 가능하도록 로그로 기록한다.
stocks_collector.py
LINUX Python Program
- KRX의 국내 주식 정보를 스크래핑 해온다. (pykrx 모듈 사용)
- KOSPI, KOSDAQ 주식 정보를 Database에 저장한다.
- crontab에 등록하여 정해진 시간에 정기적으로 수행하도록 한다.
L-ATS Monitoring (v3.5 구현 예정)
LINUX Python Program | Mobile APP
- 일일 매매 결과를 요청하고 수신하여 표시한다.
- 실시간 시스템 처리 로그를 표시한다.
대략적인 시스템 구조와 구현해야 할 기능, 그리고 어떤 모듈들을 사용할지 선정을 완료했다.
현재 Windows 화면 캡쳐와 OCR 처리 테스트 프로그램을 만들고 있는데 테스트가 완료되면 바로 서비스 구축에 들어갈 예정이다. 테스트 프로그램 완성에 따라 하반기에는 전체 솔루션 검증을 진행할 예정이다.
'Trading' 카테고리의 다른 글
[Trading] L-ATS 3.0의 운영과 ChatGPT (0) | 2023.10.20 |
---|---|
[Trading] L-ATS 3.0의 User Interface 설계 (0) | 2023.04.08 |
[Trading] L-ATS 3.0의 시작 (0) | 2023.03.03 |
[Trading] xingAPI - 데이터 표시하기 (4) | 2021.11.07 |
[Trading] xingAPI - 반복 데이터 조회 (2) | 2020.10.10 |