본문 바로가기
해외선물/자동매매

해외선물 자동매매 프로그램 기능 및 구조

by 뚝딱뚝뚝딱 2025. 6. 18.
반응형

 

해외선물 매매를 진행하다 보면 심리적인 부분 때문에 진입 기준과 청산 기준을 정확히 지키며 매매하는 것이 쉽지 않습니다. 진입/청산 기준을 명확하게 정의하고 해당 진입점을 정확하게 지키기 위해 자동매매 프로그램을 개발하고 테스트를 진행하고 있습니다. 이번 포스트에서는 현재 테스트 하고 있는 자동매매 프로그램의 기능 및 구조를 정리해 보도록 하겠습니다.

 

해외선물 자동매매를 위해 파이썬 기반으로 다양한 기술 요소를 통합하여 프로그램을 개발하였습니다. 이미지 인식부터 마우스 자동 제어까지, 실전 매매에 필요한 기능들을 체계적으로 구성하였습니다. HTS 화면을 자동 인식하고, 지정된 시간에 매수와 매도를 수행하도록 설계하여 효율성을 높이려고 하였습니다.

 

해외선물 자동매매 파이썬 프로그램

 

 

🧩 전체 구조 이해를 위한 핵심 개요

자동매매 프로그램은 PyQt5를 기반으로 제작된 GUI 프로그램으로, 사용자는 직관적으로 HTS 영역을 설정하고 매매 로직을 자동으로 실행할 수 있습니다. 화면 속 버튼들을 OpenCV를 활용해 이미지 기반으로 탐지하며, pyautogui 모듈을 통해 해당 위치에 마우스 클릭을 수행합니다. config.json 파일을 통해 사용자 설정을 저장하고, 매 실행 시 동일한 환경에서 동작이 가능합니다. 또한 logging 모듈을 통해 로그를 남겨 신뢰성과 디버깅 효율도 확보합니다.

 

🖥️ 사용자 중심의 UI 설계 포인트

프로그램은 화면은 진입 버튼 설정, 신호 영역 설정, 매매 시간 설정 등으로 구성되어 있습니다. 사용자는 버튼 클릭과 마우스 드래그로 직관적인 설정이 가능하며, 설정된 위치는 즉시 화면에 시각적으로 반영합니다. PyQt5의 GridLayout을 기반으로 설계되어 있으며, CSS를 활용한 테마 적용도 가능합니다. GUI가 단순하면서도 실용적인 구조로 설계되어 있어 쉽게 사용할 수 있으며, 기본적인 텍스트와 버튼 중심의 인터페이스는 가독성이 높고 실시간 로그 확인 기능도 함께 제공합니다.

 

🔁 자동매매 실행 로직과 실시간 조건 분기

모니터링 기능은 별도의 QThread에서 수행되며, 비동기적으로 작동하는 MonitoringWorker가 핵심 로직을 담당합니다. 이 클래스는 설정된 매매 시간에 따라 진입 및 청산 조건을 지속적으로 확인하며, 거래 조건이 충족되면 자동으로 매수/매도 동작을 수행합니다. 진입은 신호 영역 내 색상 기반 분석(OpenCV)으로 이루어지며, 마우스 클릭으로 실제 HTS 명령을 실행합니다. 진입 후 청산 신호가 발생하거나 시간이 초과되면 자동 청산까지 처리하여 완전 자동화를 구현하려고 하였습니다.

 

📷 이미지 기반 버튼 탐지의 기술적 특징

프로그램은 OpenCV의 템플릿 매칭 기능을 활용하여 HTS 화면에서 매도, 매수, 청산 버튼의 위치를 찾아냅니다. 템플릿 매칭 정확도는 0.8 이상으로 설정되어 있으며, 일정 이상의 정확도가 감지되면 해당 버튼의 중심 좌표를 저장합니다. 탐색 결과는 화면에 시각적으로 표시되고, 설정된 좌표는 config.json 파일로 기록되어 재사용이 가능합니다. 이미지 파일이 존재하지 않거나 매칭 실패 시 사용자에게 명확한 경고 메시지를 출력합니다.

반응형

⏰ 매매 시간 조건 설정 및 자동 종료 처리

시작 시간, 종료 시간, 청산 시간을 config 파일에서 읽어와 시간 기반으로 조건을 분기합니다. datetime 모듈을 활용해 현재 시간과 비교하며, 매매 종료 시간 이후에는 자동으로 루프를 종료하고 청산 작업을 수행합니다. 이러한 구조는 거래 종료 후 포지션이 남는 것을 방지하여 실질적인 리스크 관리에 기여합니다. 시간 조건은 GUI 상에도 출력되어 사용자가 현재 상황을 실시간으로 확인할 수 있게 설계되어 있습니다. 예기치 않은 상황에서도 안전하게 종료될 수 있는 시스템을 설계하여 안정성과 신뢰도를 높이도록 하였습니다.

 

🖱️ 마우스 자동화 처리의 정밀한 설계

마우스 클릭은 pynput의 Mouse Controller를 통해 실행되며, 신호 발생 시 해당 좌표로 커서를 이동해 클릭 이벤트를 발생시킵니다. 실제 클릭 전후에는 1초의 딜레이를 적용하여 시스템 반응 시간을 고려하였습니다. 자동 클릭은 매수, 매도, 청산 시 모두 활용되며, 반복성과 정확도가 높은 방식으로 구현하였습니다. 좌표는 사용자가 직접 검증하고 설정하기 때문에 개인 환경에 맞춰 조정할 수 있습니다. 모니터링 중에는 마우스를 자동으로 이동시켜 클릭하고, 클릭 후 창을 자동 활성화시키는 기능도 포함되어 있습니다.

 

🧾 실시간 로그 및 오류 처리 체계

logging 모듈을 통해 로그를 기록하며, INFO, WARNING, ERROR 등으로 레벨을 구분합니다. 로그는 텍스트뿐만 아니라 색상 기반으로 GUI에 표시되어 실시간 모니터링이 가능합니다. config 파일 오류, 이미지 불일치, 예외 발생 등 대부분의 오류 상황이 try-except로 처리되어 중단 없이 실행되도록 하였습니다. 로그 파일은 logs 폴더에 자동 저장되어, 사후 검토 및 문제 해결이 용이하도록 하였습니다.

 

🌍 기술적 의미와 미래 확장 가능성

별도의 API 없이 HTS 환경을 직접 조작하는 방식의 자동매매 시스템으로, 특히 제한된 환경에서 유용하게 사용될 수 있습니다. 이미지 인식 기반 진입 및 청산 처리 구조는 다양한 전략에 적용 가능하며, 전략 신호를 자유롭게 구성할 수 있습니다. 향후 AI 기반 신호 분석, 원격 제어 기능, 로그 기반 백테스팅 시스템 등 다양한 확장이 가능합니다. PyQt 기반 GUI 구조는 기능 추가와 커스터마이징에도 유리한 구조로 설계되어 있습니다.

 

📌 마무리: 자동매매 프로그램의 기술력과 실용성

이 프로그램은 자동매매를 구성하는 핵심 기술들을 종합적으로 구현한 프로그램입니다. 이미지 인식, 마우스 제어, 시간 관리, GUI 설계, 예외 처리 등 트레이딩에 필요한 요소를 담고 있습니다. 앞으로 지속적인 테스트를 통해 데이터를 축적하면서 더욱 완성도 높은 자동매매 플랫폼으로 발전시켜 나가고자 합니다.

반응형