프로그래밍 / C++ / 언리얼

Investment/Trading TIP

[주식 TIP] 자동매매 프로그램 만들기1탄 - 프로그램 설명(파이썬 이용)

아트성 2020. 5. 19. 22:30



우리가 주식을 하다보면 하루종일 차트를 보게되고 호가창을 들여다 보게 된다.

매번 번거롭게 HTS나 MTS를 접속해서 트레이딩창을 들여다보며 시간을 뺏기기도한다.

그런데 자동으로 거래할 수 있는방법이 있다.


바로 파이썬이라는 컴퓨터 언어를 이용해서 프로그램을 제작해 자동매매를 하는 방법이다. 


 "파이썬이라는 언어는 다른 컴퓨터 언어에 비해 쉽게 만들어진 언어이다."

"빅데이터 시대에 파이썬 언어는 인간의 삶의 질 향상에 도움을 준다."


시중에는 파이썬을 이용한 주식자동매매 프로그램제작하는 방법이 담긴책, 또는 비트코인 자동거래시스템 만드는방법이 담긴책등이 있는데 참고하면 매우 도움될것이다. 필자는 프로그램을 제작하는데 있어서 여러 난관이 있었지만, 여러 매체들을 활용해서 좀 더 수월하게 제작하하게되었다. 관련 서적을 보고, 또 주로 유튜버들의 파이썬강의도 참고하고, 시간날때 파이썬 퀀트트레이딩 관련 오프라인 유료강의도 듣고, 자동매매프로그램을 제작하는 카페도 참고했다.

그리고 UI같은경우는 외국사이트의 도움을 받아서 프로그램 제작에 도움을 여러모로 많이 받았었다.

키움에서는 또 친철하게 API가이드까지 배포가 된 상태여서 프로그램 제작이 좀 더 수월했던게 아닐까 싶다.


필자가 여러가지 경험한 내용을 바탕으로 자동매매프로그램 강의를 본격적으로 시작해볼까 한다. 



코드는 위 사진과 같이 7500자가 넘어간다. 

특정 조건에서 매도처리하는 코드들을 마구잡이로 집어넣다보니깐 코드가 순식간에 불어났다.

주로 이평선계산 수식과 envelope, 이격도 이탈을 계산해서 자동으로 매도할 수 있게 프로그램에 재현해놓았다.

수식이 매우 복잡하기 때문에 이번 강의에는 2500자를 내외로 프로그램을 제작할수 있게 한번 강의를 진행해 볼까 한다.



위 사진은 완성된 프로그램인데, 프로그램에 대해서 간단히 설명해보겠다.


[수동]탭에는 계좌, 이름, 코드, 수량, 가격, 주문이 들어간다.

계좌에는 모의투자는 모의투자용 계좌가 들어가고, 실전투자는 실전투자용 계좌가 들어간다. 

계좌수의 따라서 콤보박스의 내용물 갯수가 달라진다.

이름에는 종목명을 입력하면 종목코드와 현재가격이 코드와 가격박스에 뜨게된다.

주문은 지정가로 할지 시장가로 할지 선택할수있는 콤보박스가 있다.

자동매매프로그램인데 왜 수동주문이 있는지 의아해할수도 있는데, 이게 왜 필요하냐면 우리가 지정가로 프로그램 주문을 넣을때 체결이 안될경우가 있다. 쉽게말해서 미체결이 발생한건데, 이경우에는 예탁금이 묶이게 되는것이므로 취소를 해야할 상황이 발생할수있다.

HTS창도 띄우지않고 리모트 컨트롤을 해야되는 상황이라면 더더욱 수동주문이 필요할수도 있다.


[AUTO]탭에는 실질적으로 자동매매프로그램을 돌리는데 사용되는 항목들이다.

매수금액은 종목당 얼마나 매수할지 설정하는것이고, 만,십만,백만단위로 변경할수있게 버튼을 제작했다.

매수구분은 아까 수동주문과 비슷하게, 시장가, 지정가로 매수/매도할지 체크하는 곳이다.

최대 보유량은 처음에는 10개로 셋팅되어있다. 콤보박스를 이용해 자신이 보유하고싶은 종목의 갯수를 설정할 수 있다.

그리고 오른쪽에 작동시간 / 작동구분탭에서 매수/매도 할 시간대를 정할 수있다.

우리가 시초가 매매만 할 경우가있고, 종가매매만 진행해야 할 경우가 생긴다.

작동시간을 체크하게 되면 자신이 원하는 시간대에 자동매매를 진행할 수있다. 

아래 조건검색탭은 이 프로그램상에서 가장 중요한 부분인데 키움 HTS 빠른검색창에 0150을 치면 나오는 조건검색창에서 자신이 직접 만든 조건검색식이 프로그램상의 조건검색탭 그대로 담기게되고, 자신이 자동매매에 쓰일 조건검색식을 추가/삭제 할 수있다.

[AUTO]탭에서 설정이 전부 다 끝나고 자동매매시작버튼을 누르면 위의 화면처럼 "중지"라는 빨간색 버튼으로 바뀌게 된다.


[평가금액]탭에는 총 매입금액, 총 평가금액, 추정예탁자산, 수익금액, 수익률을 표시해서 실시간으로 확인할수있다.

다만 추정예탁자산같은경우에는 실시간으로 조회가 안되는 버그가 있어서 아래 자산업데이트 푸쉬버튼을 눌러서 조회할 수 있게 만들어 놓았다. (특히 수익금액과 수익률은 +로 전환되면 택이 붉은색으로 표시가되고, -로전환되면 푸른색으로 표시가된다.)


[로그]탭에는 실시간으로 자동매매를 진행하면서 편입/이탈되는 종목들을 표시하고, 프로그램상에서 버그가 나타났을때 그 내용들을 실시간으로 조회할수있다.


[네이버 종목토론실]탭은 각 종목코드에 맞는 종목토론실에서 사람들이 쓴 타이틀을 실시간으로 조회할수있는 탭이다.

크롤링 버튼을 누르면 조회가 가능할 수 있게 구현해 놓았다.


[계좌잔고/미체결주문]탭에서 계좌잔고탭은 매수된 종목들의 수량, 매입가, 현재가, 수익률등 여러 세부정보를 보여주는 창이고

미체결주문탭은 지정가로 주문했을때 아직 체결안된 종목들을 보여준다.



이처럼 셋팅이 전부 끝나서 프로그램을 돌리면 실시간으로 종목이 매매가 진행될것이다.

원래는 장중에 테스트해야되는데 글을 쓰기위해서 그냥 프로그램만 돌려본 상황이다. (원래는 실시간으로 종목이 편입되고 이탈되기도 하고 매매가 진행되면 안내 사운드까지 들리기도한다.)


이제 차근차근 하나하나 초보자 입장에서 알기쉽게 자동매매프로그램을 제작방법을 설명해보려고 한다.

반응형