제작 이야기
작년, 이 맘 때즈음에 너도 나도 주식 열기가 뜨거웠던 시기가 있었습니다. 그 때 저 역시, 주식을 처음 접하게 되었습니다. 하지만 프로그래머 마인드로 주식을 보다 보니, 일일이 목 매달고 주식창을 보기에는 너무 아깝다는 생각이 들었습니다. 물론 제가 주식을 한다고 했지만, 생각보다 자주 들여다 보지는 않았습니다. 조금 다른 이야기를 하지만, 지금 현재는 주식 자체도 하지 않고 있고요.😂
자동으로 매매해주는 프로그램을 만들면 되잖아? 라는 생각으로 시작하게 되었습니다. 일명 '프로그램 매매'라고 하죠. 실제로 주식 거래 내부 시슴템에서도 구분되어 있습니다. 프로그래머 관점에서 보니 귀찮아로 시작하게 되었어요.
실제 사례
개인 프로젝트를 진행하기 전에, 약 일주일 동안 실제 제작 사례를 알아보았습니다. 현재는 모르겠는데, 생각보다 사례가 별로 없었습니다. 구글링, 유투브 찾아봤지만 생각보다 적은 게시물과 영상이 있었습니다. 이마저도 몇 년된 정보들.. 선구자 분들의 내용을 참고 하고 싶었지만, 오래되어 낡았거나, 생각보다 깔끔하지 않은 내용들 이어서 많은 어려움이 있었습니다.
결심
일주일 동안 알아보면서 동시에 개인적으로 너무 시간이 아까웠습니다. 사례가 없다면 내가 선구자가 되자라는 마인드로 접근했습니다. 그래서 바로 접근하기 쉬운 키움 증권 Open API를 이용하기로 했습니다.
작업 진행 중 어려움
API에 대한 지식이 필요하여 키움증권 개발자 질문게시판을 많이 뒤졌습니다. 관련 사례를 찾기가 너무 어려웠던 점이 많았습니다. 이 역시, 오래되고 낡은 정보들이 많아서 큰 도움이 되지 않았습니다. 일일이 제가 테스트하여 확인을 해보는 것이 거의 대부분이었습니다. 개발자 질문게시판보다는 Open API 도큐멘트 프로그램을 제공하고 있습니다. 어느 정도 정리를 해두어 도움이 되었습니다.
하지만, 실제 API를 사용하면 현재는 사용하면 안되는 변수여서 엉뚱한 값을 돌려주어 착각하게 된다던가, 최신화되지 않은 정보라 다시 질문게시판을 찾게되었습니다. 정보가 너무 부족한 것들 투성이..
강제적인 한글코딩
그리고 개인적인 문제점이라면.. 너무 오래된 API여서 강제적인 한글코딩을 해야한다는 점입니다. 어쩔 수 없이 Enum값도 한글 코딩을 사용하였고, 한글값을 주어야하며, 그나마 영문 변수는 콩글리쉬로 혼동을 주었습니다. (ex. gubun🤣) 심지어, 도큐멘트에는 없는 의미를 알 수 없는 변수도 존재했습니다. 이러한 부분들이 점점 내용이 많아지면서 스크립트 작성에 엄청난 혼란을 주었습니다.
움직이는 주식 시장의 시간은 평일 업무 중인 오전 9시 ~ 오후 3시 30분
프로그램을 만들었으면, 잦고 반복적인 '테스트 -> 버그 수정'을 거쳐야 하는데, 업무 중에 시장이 돌아가기 때문에 확인을 할 수 없었으며, 버그들을 고치는데 무려 2달이나 소요되었습니다. 이 마저도 급하게 수정하여 버그 투성이.. 안정적인 프로그램을 제작하는데 있어서 어려움이 엄청났습니다.
키움 증권에서 내려주는 통신 카운팅 제한 (TR 요청 횟수)
대체적으로 증권사 API를 통한 통신 카운팅은 한정적입니다. 무수한 사람들이 포기하는데에는 이 부분이 생각보다 컸을 거라 예상합니다. 키움 증권 기준으로 작년에는 주문을 하는 등 중요한 통신에 대한 카운팅 횟수가 존재하는데, 평균적으로 한 시간에 30번 정도 하는 경우, 통신에 제한이 걸립니다. 팔아야하는 순간에 못 팔면 엄청난 손해로 돌아오겠죠.
또 다른 문제점, 주식 관련 지식
하지만, 정말로 큰 문제점은 따로 있었으니, 주식을 시작한지 얼마 안된 주린이라는 점이 엄청나게 다가왔습니다. 주식에 대한 시총가 평가, 일분봉, 재무제표, 주식 흐름, 매수 세력, 매도 세력 등 너무 많은 것들이 문제가 되었습니다. 이는 저에게 엄청난 타격을 주었습니다. 왔다갔다하면서 바로 매수, 매도도 진행되지 않고, 어느 타이밍에 팔아야하는지, 세금 계산법이 각 종목마다 다르며, 일부는 키움 API 서버에서 주지 않아서 직접 계산을 해야하는 경우도 존재하였습니다.
프로젝트 종료
개인적으로 업무를 해야하는데, 주식 공부 + 불친절한 API 대응, 이로써 개인적인 여가 시간에 대한 침해. 프로그램 제작에 많이 위배되었다고 판단되어 프로젝트 진행을 끝냈습니다.
후기
약 3달 반 이상의 시간을 소요하여, 마무리 되었습니다. 중간에 이틀 정도 연차를 써서 실제로 돌아가는 것을 눈 앞에 보면서 디버깅도 많이 해보았구요. :) 조금 자잘한 이유가 더 있다면, 오래된 윈도우 Form을 사용하여 작업 환경에 익숙치 않았던 점이 있었네요.
멀티 쓰레드를 돌리면서 약 3000개 이상의 종목을 감시하면서, 타이밍 좋게 사서 팔자는 부분이 쉽지 않았던 점이 생각이 나네요. 하지만, 3000개 정도를 감시하면서 사고 팔고, 라인 Notify를 사용하여서 중간중간 알림이 오고, 실제로 이득도 보면서 아주 재밌었습니다. 결과적으로 주식 지식 부족으로 마이너스를 만들었습니다. 이마저도 모의투자를 이용하였기 때문에 아무런 일도 없었지만, 제 개인적인 시간을 생각하면 조금 아쉽네요 :)
마음 같아서는 한글코딩 등 혼란을 주지 않았다면, 프로젝트를 공유할까 했지만.. 너무 엉망이여서 제 가치관에 적합하지 않아서 후기로만 글을 남깁니다.
이제 더이상 진행할 예정이 없는 프로젝트이기도 하며, 많은 분들에게 참고라도 되길 바라며 공유합니다. 2023년 8월인 현재 시점에서 무려 2년 전 프로젝트이기도 하기 때문에 작동하지 않는 점과 서툴게 작성된 부분 감안하시고 참고 하시길 바랍니다. :)
- 프로젝트 깃허브 : https://github.com/MDJ0126/SystemTrading
개인적은 후기를 보면서라도, 머뭇거리시다가 진행할까말까 고민하시는 분들에게 좋은 글이 되었으면 합니다.
사실 이 글을 작성하게 된 부분도 코인 자동 매매를 한 번 작업을 들어가볼까 하고 있습니다. 작년에도 코인을 할까 주식을 할까 했는데, 주식으로 하는 것이 안정적이라 생각했는데, 오히려 24시간 쉬지도 않고 움직이는 코인 시장이 프로그램 테스트도 하고, API를 훑어보니 개발자 가이드가 깔끔하게 잘 나와있어서 계속 알아보는 중입니다.😁 개인적으로 주식 프로그램 만든 경험도 있어서 해보면 나쁘지 않겠다 생각도 있고, 나름 실행력 있는 편이라 조만간 진행하지 않을까 해요.
머뭇거리는 당신! :)
하지만 머뭇거리기만 하면 모르실거에요. 바로 실천해보시는건 어떤가요? 개인적으로 자동 매매 프로그램은 무궁무진하다고 생각합니다. :)
그리고 구글링을 하시다보면 무료 제공해주는 자동 매매 프로그램이 있습니다. 다만 프로그래머로써 남이 만든 매매 프로그램에 제 돈 맡기기가 조금은 꺼려지는 경향이 있어서 존재만 알았을 뿐 하지 않았습니다.🤔
댓글