| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
- 매수로직
- 주식자동매매
- 증권
- 주식투자
- 매매일지
- 주식프로그램
- 키움자동매매
- 주식
- 시스템트레이딩
- 매도로직
- 코스피
- 스윙매매
- 업데이트
- API
- 키움OpenAPI
- 자동매매일지
- 코스닥
- 자동매매
- 무료자동매매
- xingAPI
- 이베스트
- 키움증권
- 주식매매일지
- 키움
- 중소형주
- 단타매매
- OpenAPI
- 자동매매개발
- 키움API
- 시스템매매
- Today
- Total
팡규의 시스템 매매 블로그
2026년 7월 4일 자동매매 프로그램 개발일지 – 매수보다 검증에 집중한 자동매매 시스템 구축 과정 본문
키움 OpenAPI를 활용한 주식 자동매매 시스템을 계속 개발하고 있습니다.
이번 개발의 목표는 단순히 자동으로 매수하고 매도하는 프로그램을 만드는 것이 아닙니다.
실시간 조건검색으로 후보 종목을 찾고, 프로그램 내부에서 한 번 더 판단한 뒤, 실제 매매 결과를 다시 분석할 수 있는 구조를 만드는 것이 핵심입니다.
처음에는 자동매매라는 말 그대로 “어떻게 하면 자동으로 매수하고 매도할 수 있을까”에 초점이 맞춰져 있었습니다.
하지만 개발을 진행하면서 더 중요한 부분은 따로 있다는 것을 느끼고 있습니다.
바로 왜 매수했는지, 왜 매수하지 않았는지, 매도 판단은 적절했는지 기록으로 남기는 것입니다.
현재는 수익을 내는 기능만 바라보기보다, 잘못된 매수를 줄이고 매매 결과를 검증할 수 있는 구조를 만드는 데 집중하고 있습니다.
1. 자동매매 시스템의 기본 구조
현재 개발 중인 자동매매 시스템은 Windows 기반 데스크톱 프로그램으로 구성되어 있습니다.
키움 OpenAPI를 통해 실시간 조건검색, 주문, 체결, 잔고 정보를 받아오고, 프로그램 내부에서는 후보 종목 추적, 매수 판단, 매도 판단, 보유 종목 관리, 거래 결과 기록을 처리합니다.
데이터는 프로그램 내부 저장소와 CSV 리포트를 함께 사용하고 있습니다.
프로그램 내부 저장소는 장중 상태 관리와 거래 기록 보관에 사용하고, CSV 리포트는 장중 또는 장마감 후 매매 결과를 분석하는 용도로 활용하고 있습니다.
이 구조를 통해 단순히 매매를 실행하는 것에서 끝나는 것이 아니라, 장마감 이후 오늘의 판단이 적절했는지 다시 확인할 수 있도록 만들고 있습니다.
2. 조건검색과 실제 매수 판단 분리
현재 시스템에서 조건검색은 실제 매수 신호가 아니라 후보 종목을 찾기 위한 첫 단계로 사용하고 있습니다.
조건검색에 종목이 들어왔다고 해서 바로 매수하지 않습니다.
조건식은 관심 종목을 빠르게 찾는 역할만 하고, 실제 매수 여부는 프로그램 내부의 추가 판단 과정을 거쳐 결정됩니다.
이렇게 구성한 이유는 조건식에 들어온 종목이 모두 좋은 매수 대상은 아니기 때문입니다.
일부 종목은 이미 상승이 많이 진행된 상태일 수 있고, 일부 종목은 순간적인 거래량이나 일시적인 흐름 때문에 조건에 들어올 수도 있습니다.
따라서 조건검색 결과를 그대로 매수로 연결하면 불필요한 매수가 많아질 수 있습니다.
현재 개발 방향은 매수를 많이 하는 것이 아니라, 위험하거나 애매한 매수를 줄이는 쪽에 맞춰져 있습니다.
3. 후보 종목 추적 기능 개선
최근 개발에서 중요한 부분은 후보 종목을 추적하는 방식의 개선입니다.
기존에는 조건검색에 들어온 종목의 현재 상태를 기준으로 판단하는 비중이 컸습니다.
하지만 실제 매매에서는 현재 상태뿐만 아니라, 처음 조건에 들어온 이후 어떤 흐름을 보였는지가 중요합니다.
예를 들어 같은 종목이라도 처음부터 강하게 움직인 경우와, 한 번 눌렸다가 다시 반등하는 경우는 다르게 봐야 합니다.
그래서 조건검색에 들어온 시점별로 후보 흐름을 구분해 추적할 수 있도록 구조를 보강했습니다.
이 개선을 통해 단순히 “조건식에 들어온 종목인가”가 아니라,
“언제 들어왔고, 이후 흐름이 어떻게 바뀌었는가”를 확인할 수 있게 되었습니다.
이 부분은 앞으로 놓친 종목이나 매수하지 않은 종목을 분석하는 데 중요한 자료가 될 것으로 보고 있습니다.
4. 매수하지 않은 종목도 분석 대상으로 전환
자동매매를 하다 보면 실제로 매수한 종목보다 매수하지 않은 종목이 더 중요한 경우가 있습니다.
특히 장중에 크게 오른 종목을 나중에 확인하면, 왜 그 종목을 매수하지 않았는지 궁금해질 때가 많습니다.
하지만 결과적으로 올랐다는 이유만으로 당시 매수하지 않은 판단이 틀렸다고 볼 수는 없습니다.
그 시점에는 위험 요소가 있었을 수도 있고, 내부 기준을 충족하지 못했을 수도 있습니다.
그래서 현재는 매수한 종목뿐 아니라, 조건검색에는 들어왔지만 실제 매수로 이어지지 않은 종목도 따로 분석할 수 있도록 리포트 구조를 만들고 있습니다.
이를 통해 앞으로 다음과 같은 내용을 확인할 수 있습니다.
- 상승한 종목을 매수하지 못한 이유
- 매수 제외 판단이 적절했는지 여부
- 내부 필터가 너무 강하게 작동했는지 여부
- 반대로 위험한 종목을 잘 걸러냈는지 여부
자동매매 전략을 개선하려면 매수한 종목만 봐서는 부족합니다.
매수하지 않은 종목까지 함께 비교해야 실제 기준이 맞는지 확인할 수 있습니다.
5. 실제 거래 결과 리포트 보강
실제 매수가 발생한 종목은 거래 결과 리포트로 정리하고 있습니다.
리포트에는 매수 시점, 매도 시점, 매수가, 매도가, 수익률, 보유 시간, 매도 사유, 추가매수 여부, 매수 후 최고 수익 구간, 최대 손실 구간 등이 기록됩니다.
이 자료가 중요한 이유는 최종 수익률만으로는 전략의 문제점을 정확히 알기 어렵기 때문입니다.
예를 들어 최종 결과는 손실이더라도, 장중 한때 충분히 수익 구간이 있었다면 매도 판단을 다시 봐야 합니다.
반대로 매수 직후부터 계속 손실이 커졌다면 매수 위치나 진입 기준을 점검해야 합니다.
현재는 단순히 수익과 손실만 보는 것이 아니라, 매수 이후의 흐름까지 함께 확인하는 구조로 개선하고 있습니다.
이를 통해 문제가 매수에 있었는지, 매도에 있었는지, 보유 관리에 있었는지를 구분할 수 있도록 만들고 있습니다.
6. 프로그램 재시작 후 기록 복구 개선
자동매매 프로그램은 장중에 재시작될 가능성이 있습니다.
프로그램 수정, PC 문제, 통신 문제 등으로 인해 재실행이 필요한 경우가 생길 수 있습니다.
이때 기존 보유 종목과 거래 기록이 꼬이면 이후 매매 분석이 어려워집니다.
특히 보유 중인 종목을 새로 매수한 종목처럼 인식하거나, 매도는 되었지만 리포트에 매도 정보가 제대로 남지 않는 문제가 발생하면 실제 결과를 정확히 확인할 수 없습니다.
이를 줄이기 위해 프로그램 시작 시 기존 보유 종목과 미청산 거래를 다시 확인하고, 현재 보유 상태와 거래 기록을 맞춰보는 복구 구조를 보강했습니다.
이 기능은 겉으로 드러나는 부분은 아니지만, 자동매매 시스템을 안정적으로 운영하기 위해 꼭 필요한 부분입니다.
7. 추가매수 관리 기준 정리
추가매수는 자동매매에서 매우 조심해야 하는 기능입니다.
손실이 났다고 무조건 추가매수를 하면 계좌 리스크가 커질 수 있습니다.
그래서 현재 시스템에서는 추가매수를 제한적으로만 진행하는 방향으로 관리하고 있습니다.
추가매수 여부는 단순히 손실률만 보고 결정하지 않습니다.
종목의 흐름, 기존 보유 상태, 회복 가능성, 리스크 수준 등을 함께 확인하는 구조로 정리하고 있습니다.
또한 큰 손실 구간에서는 무리한 회생 목적의 추가매수를 제한하는 방향으로 관리하고 있습니다.
목표는 손실 종목을 억지로 살리는 것이 아니라, 기준에 맞는 경우만 제한적으로 대응하는 것입니다.
8. 손실 종목 관찰 구조
보유 종목 중 손실이 커지는 종목은 별도의 관찰 대상으로 분류하고 있습니다.
이 구조는 손실 종목을 감정적으로 대응하지 않기 위해 만든 기능입니다.
단순히 손실이 났다고 바로 추가매수를 하거나, 반대로 무조건 손절하는 것이 아니라, 반등 가능성이 있는지 일정 기준에 따라 확인하는 방식입니다.
현재는 손실 종목의 흐름, 단기 반등 여부, 수급 변화, 체결 흐름 등을 함께 보면서 관찰하거나 제외하는 방향으로 개선하고 있습니다.
이 기능은 아직 계속 보완 중이며, 앞으로 실제 데이터를 더 쌓으면서 기준을 다듬어야 할 부분입니다.
9. 매도 사유 기록과 분석
매도 결과를 분석할 때는 수익률만 보는 것이 아니라 매도 사유도 함께 확인하고 있습니다.
같은 수익 매도라도 목표 수익에 도달해서 매도한 것인지, 상승 흐름이 약해져서 수익을 지키기 위해 매도한 것인지는 다르게 봐야 합니다.
손실 매도도 마찬가지입니다.
매수 판단이 잘못되어 빠르게 방어한 손실인지, 보유 판단이 늦어져 손실이 커진 것인지를 구분해야 합니다.
그래서 현재 시스템에서는 매도 사유를 따로 기록하고, 장마감 후 어떤 매도 방식이 자주 발생했는지 확인하고 있습니다.
앞으로 데이터가 더 쌓이면 특정 매도 방식이 수익 보호에 효과적인지, 아니면 너무 빠른 청산으로 이어지는지 분석할 수 있을 것으로 보고 있습니다.
10. 로그와 CSV를 이용한 장마감 검증
현재 자동매매 시스템은 로그와 CSV 리포트를 함께 보면서 검증하고 있습니다.
로그는 장중 프로그램이 어떤 판단을 했는지 보여주는 자료입니다.
CSV 리포트는 그 결과를 정리한 자료입니다.
즉, 로그는 과정이고 CSV는 결과입니다.
장마감 후에는 두 자료를 비교하면서 오늘 매수한 종목, 매도한 종목, 보유 중인 종목, 추가매수 여부, 매도 사유, 매수 제외 사유 등을 확인하고 있습니다.
이 과정에서 기록이 빠진 부분이나 실제 체결과 리포트가 맞지 않는 부분도 계속 점검하고 있습니다.
자동매매는 단순히 수익이 났는지보다, 프로그램이 어떤 기준으로 판단했고 그 결과가 어땠는지를 확인하는 과정이 중요하다고 생각합니다.
11. 현재까지의 개발 성과
현재까지 개발하면서 가장 크게 바뀐 부분은 자동매매 시스템이 단순 실행형 구조에서 분석형 구조로 바뀌고 있다는 점입니다.
조건검색에 들어온 종목을 바로 매수하는 방식이 아니라, 후보군을 추적하고 내부 판단을 거쳐 실제 매수를 제한하는 구조로 개선했습니다.
또한 실제 거래 결과를 저장하고, 매수 이후의 최고 수익 구간과 최대 손실 구간까지 확인할 수 있도록 리포트 구조를 보강했습니다.
프로그램 재시작 후 보유 종목과 거래 기록이 꼬이지 않도록 복구 구조도 개선했고, 매수하지 않은 후보 종목까지 분석할 수 있는 기반도 만들고 있습니다.
추가매수와 손실 종목 관리도 무조건적인 대응이 아니라, 기준에 따라 제한적으로 판단하는 방향으로 정리하고 있습니다.
12. 앞으로의 개선 방향
앞으로 가장 중요한 것은 데이터 축적입니다.
전략을 계속 바꾸기보다는, 일정 기간 같은 기준으로 운용하면서 로그와 리포트를 충분히 모으는 것이 먼저라고 보고 있습니다.
데이터가 쌓여야 매수 기준이 너무 강한지, 너무 약한지 판단할 수 있습니다.
또 매도 판단이 빠른지 늦은지, 손실 방어가 제대로 작동하는지도 확인할 수 있습니다.
특히 앞으로는 매수한 종목과 매수하지 않은 종목의 차이를 더 자세히 비교할 예정입니다.
상승한 종목을 왜 놓쳤는지, 매수한 종목은 왜 기대만큼 움직이지 않았는지, 손실 종목은 어떤 구간에서 방어했어야 했는지를 계속 분석해 나갈 계획입니다.
자동매매에서 중요한 것은 한 번에 완벽한 전략을 만드는 것이 아니라, 매일의 데이터를 통해 잘못된 판단을 줄여가는 것이라고 생각합니다.
마무리
현재 키움 OpenAPI 기반 자동매매 시스템은 매수와 매도를 자동으로 실행하는 단계를 넘어, 매매 판단을 기록하고 검증하는 방향으로 개발되고 있습니다.
조건검색, 후보 종목 추적, 내부 매수 판단, 거래 결과 리포트, 보유 종목 관리, 추가매수 제한, 손실 종목 관찰, 매도 사유 분석까지 기본적인 틀을 만들어가고 있습니다.
아직 완성된 시스템은 아니지만 방향은 분명합니다.
많이 매수하는 자동매매가 아니라, 잘못된 매수를 줄이고 결과를 데이터로 검증하는 자동매매 시스템을 만드는 것입니다.
앞으로도 실제 장중 데이터를 계속 쌓아가면서 매수 위치, 매도 판단, 보유 관리 방식을 하나씩 개선해 나갈 예정입니다.
'주식프로그램 > 프로그램 개발' 카테고리의 다른 글
| 2026년 6월 19일 자동매매 프로그램 개발일지 – 거래 데이터 정합성과 거래 추적 기능을 보완한 하루 (0) | 2026.06.19 |
|---|---|
| 2026년 6월 17일 자동매매 개발일지 – 수익보다 먼저 위험한 매수를 줄이는 구조 만들기 (0) | 2026.06.17 |
| 커뮤니티 운영 종료 후 개인용 시스템으로 전환 (0) | 2026.05.11 |
| 키움증권 REST API – 파이썬으로 접근 토큰(Access Token) 발급하기 (4) | 2025.07.12 |
