loading

꿀벌의 투자 블로그

CopyRight: 조코딩

# final 주식 자동 매매 프로그램 완성하기

오늘은 지난 삼성전자 주가 자동 알림 프로그램을 만드는 것에 이어 주식 투자 자동화 네 번째 시간으로, 주식 투자 자동 매매 프로그램을 완성해보겠습니다.

 

 

우선 오늘은 자세한 설명 없이 자동매매 코드 구현 및 크레온 Plus 자동 접속 코드 구현, 그리고 이렇게 구현한 두 개의 코드를 작업 스케줄러에 등록을 해서 매일매일 자동매매 완전 자동으로 이루어질 수 있도록 완전 자동화를 해보겠습니다. 마지막으로 지난 시간에 말씀드렸던 '변동성 돌파 전략'을 이용하여 자동매매 1개월 수익을 공개하도록 하겠습니다.

 

돈과 관련된 아주 민감한 주제이기에 반드시 유의하실 사항이 있습니다. 이번 포스팅이 주식투자 자동 매매인만큼 가격 변동에 따른 손실이 발생할 수도 있습니다. 그렇기 때문에 투자의 책임은 투자자 본인에게 있다는 사실을 꼭 명심하시고, 무리한 투자보다는 여유자금으로 진행하시길 권장드립니다.

 

아무리 알고리즘에 기반한 자동매매라고 하더라도 그냥 확률을 높일 뿐이지 무조건적으로 수익을 얻는 그런 투자 방법은 없습니다. 그리고 저조한 수익률이라고 핀잔만 놓지 마시고 이번 포스팅에서 쓰이는 전략은 예시용으로 보여드리기 위한 '예시'일 뿐이니 본인만의 전략, 그리고 유명한 트레이더나 각종 데이터를 기반으로 알고리즘을 직접 구현한다고 하더라도 수익률이 높아질지 낮아질지 알 수 없습니다. 최대한 많은 돈을 가지고 장기간 테스트한 결과물이 있어야만 이게 좋다, 나쁘다 증명이 되는 것이기 때문입니다.

 

주식 자동 매매 코드 작성하기

지난 시간에 이어서 stockauto 폴더에 자동매매를 해주는 파이썬 코드를 작성해보겠습니다. VsCode를 관리자 권한으로 실행하고, New File 버튼을 눌러서 AutoTrade.py 라는 파이썬 파일을 만들어 줍니다.

주식 자동 매매 코드 작성하기

 

그리고 여기서 지난 시간에도 말씀드렸지만, 다시 한 번 강조 드리자면 코딩은 직접 한줄 한줄 손으로 치면서 타이핑 하면 정말 비효율적입니다. 이미 인터넷에는 잘 되어 있는 코드가 굉장히 많기 때문에 그것을 가져와서 내가 원하는 목적에 맞게 조금씩 변형해서 쓰는 것이 훨씬 코드를 효율적으로 작성하실 수 있습니다.

 

이 포스팅은 <파이썬 증권 데이터 분석>이라는 책의 데이터를 바탕으로 만들어진 것이기에, 여기에 나온 코드를 가져와서 이걸 설명하면서 진행을 해보겠습니다. 구글 검색창에 파이썬 증권 데이터 분석 github 라고 검색을 해보시면, github 페이지가 나옵니다.

 

 

해당 링크로 접속해줍니다. 그리고 여기서 '08 Volatility Breakout(=변동성 돌파 전략)' 폴더로 들어가 줍니다. 그리고 'ch08 03 EtfAlgoTrader.py' 으로 들어가 줍니다. 그러면 이런 소스 코드가 나옵니다.

주식 자동 매매 코드 작성하기

 

이걸 그대로 전체 복사해서 우리가 만들어준 AutoTrade.py에 붙여넣습니다. 그리고 Ctrl+S를 눌러 저장을 해줍니다. 

주식 자동 매매 코드 작성하기

 

코드 상단을 보시면 이렇게 자동매매에 필요한 라이브러리를 가져오는 코드가 있습니다. 여기서 밑줄 그어진 것들은 아직 설치가 안되어서 이렇게 오류가 발생하고 있는 겁니다. 그래서 여기서 필요한 라이브러리들을 설치해주겠습니다.

주식 자동 매매 코드 작성하기

 

pip install pandas

 

를 Terminal 창에 입력해서 설치해줍니다.

 

그리고 아래 4줄은 사용되지 않는건데 들어가 있어서 그냥 지워주도록 하겠습니다. 다시 Ctrl+S를 눌러서 저장을 해주시면 모든 오류가 사라진 것을 확인하실 수 있습니다. 코드도 좀 정리해주겠습니다.

주식 자동 매매 코드 작성하기

 

맨 위에 Slacker라고 슬랙 메시지를 보낼 때 사용했던 라이브러리를 쓴 것을 확인할 수 있습니다. 여기에 Oauth 코드가 들어가 있는데, 이것은 여러분의 것이 아니기 때문에 이걸 지우고 지난 시간에 삼성전자 현재가를 전송할 때 사용했었던 여러분만의 Oauth 코드를 가져와서 이 자리에 붙여넣어 줍니다. test.py로 이동하시면 됩니다.

주식 자동 매매 코드 작성하기

 

그리고 post_message 메시지를 보내는 채널은 지난 시간에 우리는 slack.com 공식 사이트에서 #stock 이라는 채널을 만들어주고 여기에 전송을 했었습니다. 이거는 여러분이 만든 채널 이름으로 변경해주시면 되겠습니다.

slack

 

그리고 아래쪽 259번 줄을 보시면, soldout = False; 라고 나온 부분이 있는데 여기에 ';' 세미콜론을 지워줍니다. 그리고 저장을 해주시고 지금까지 작성된 코드를 실행하기만 하시면 바로 자동매매를 해보실 수 있습니다.

주식 자동 매매 코드 작성하기

 

크레온 Plus 자동 로그인 코드 작성하기

그런데 여러분들이 생각하시는 전략에 맞게 이 코드를 변형해서 사용하면 더 좋겠죠. 그렇게 하실 수 있도록 이 코드가 어떻게 구성되어 있는지는 다음 포스팅에서 자세하게 설명해드리도록 하겠습니다.

 

우리가 <파이썬 증권 데이터 분석>에서 하나의 파일만 복사를 했는데, 첫 번째 파일인 ch08 01_AutoConnet.py 라는 파이썬 파일도 열어봅시다.

주식 자동 매매 코드 작성하기

 

우리는 매번 크레온 Plus에 직접 로그인을 해주고 켜준 다음에 실행을 해왔는데 이 코드는 크레온 Plus에 자동 로그인을 할 수 있도록 만들어주는 코드입니다.

 

그래서 이것을 설정하게 되면 좀 더 편리하게 크레온 플러스 접속을 실행할 수 있습니다. 그래서 이 코드도 추가로 이용해주도록 하겠습니다. 모두 복사해서 Vscode에서 New File로 새로 파일을 만들고, AutoConnect.py라는 파이썬 파일을 만들어서 붙여넣어줍니다.

크레온 Plus 자동 로그인 코드 작성하기

 

그리고 여기 아이디 / 패스워드 / 공인인증서 비밀번호를 이렇게 세 군데에 나누어서 입력을 해주신 다음에 이 코드를 실행하시면 크레온 Plus를 실행하고 자동으로 로그인을 해줍니다. 그러면 현재 아이디, 패스워드, 공인인증서 패스워드까지 전부 입력을 해두었습니다. (위의 정보들은 예시입니다)

 

그리고 AutoConnet.py를 실행을 해보겠습니다. 명령어 입력창에

 

python AutoConnect.py

 

를 입력하여 실행해줍니다. 그러면 코드가 실행되면서 자동으로 크레온 Plus가 켜지고, 이렇게 자동으로 로그인까지 성공한 것을 확인할 수 있습니다.

자동 로그인 코드

 

이렇게 크레온 Plus가 정상적으로 실행이 되었다면 이제는

 

python AutoTrade.py

 

를 입력해서 자동매매를 하는 코드를 실행시켜보겠습니다.

 

그러면 이렇게 코드가 잘 실행이 되고, 이 종목이 target_price에 맞춰서 매수가 된 것을 확인할 수 있습니다. 그러면 이렇게 매수된 내용이 slack 메신저를 통해 우리가 이전에 만든 채널에 메시지로 잘 들어온 것을 확인할 수 있습니다.

주식 자동 매매

 

마찬가지로 이 내용을 스마트폰에서도 똑같이 확인할 수 있습니다.

 

오후 3시 15분이 되면 자동으로 모든 종목이 전부 매도 처리가 되고, 프로그램이 종료됩니다.

 

주식 완전 자동 매매 프로그램 구현하기

그런데 방금 한 것처럼 이렇게 크레온 Plus를 실행하는 코드와 자동매매를 하는 코드를 Terminal 창에서 매일매일 실행해줘야 된다면 이거는 자동매매라고 보기 힘들겠죠. 그래서 매일 자동으로 크레온 Plus가 실행이 되고 자동매매도 실행이 될 수 있도록 설정을 해두겠습니다.

 

먼저 시작을 누르고, '작업 스케줄러'라고 검색을하셔서 앱을 실행시켜줍니다.

 

작업 스케줄러를 이용하시면 매일 특정 프로그램을 특정 시간에 실행할 수 있도록 할 수 있습니다. 왼쪽 상단에 작업스케줄러 라이브러리를 클럭하면 이런 화면이 나옵니다.

주식 완전 자동 매매 프로그램 구현하기

 

가운데 빈 공간에 마우스를 우클릭 해서 '새 작업 만들기'를 눌러줍니다. 그리고 새 작업을 만들어 주겠습니다. 먼저 '크레온 연결'이라는 작업을 만들어 주겠습니다.

 

그리고 이 작업은 Creon Plus를 자동 실행하는 작업 스케줄러 입니다. 그리고 아래쪽에 '가장 높은 수준의 권한으로 실행 ' 체크박스를 체크해줍니다.

주식 완전 자동 매매 프로그램 구현하기

 

두 번째 탭인 트리거에서 '새로 만들기'를 누르셔서 이걸 언제 실행할건지 설정을 해줍니다. 매일 오전 8:30에 크레온 Plus가 실행되도록 설정을 해주겠습니다. 그리고 확인을 눌러주면 이렇게 매일 오전 8:30에 시작되는 트리거가 만들어집니다. 

주식 완전 자동 매매 프로그램 구현하기

 

그리고 세 번째 '동작' 탭으로 들어가시면 어떤 파일을 실행할건지 설정을 할 수 있습니다. 아래쪽에 새로 만들기를 누르셔서 프로그램 시작을 선택하시고, 프로그램/스크립트는 찾아보기를 누르셔서 우리가 사용하는 파이썬 버전을 설치한 폴더인 python38-32 폴더를 찾아서 들어가줍니다.

주식 완전 자동 매매 프로그램 구현하기

 

그리고 여기서 python.exe 파일을 열어줍니다. 그리고 인수 추가(옵션)으로 크레온 Plus를 자동으로 실행해주도록 작성했던 코드인 AutoConnet.py 파일을 인수로 넣어줍니다. 그리고 시작 위치는 이 파일이 있는 위치 경로를 작성해줍니다.

주식 완전 자동 매매 프로그램 구현하기

 

저는 C:\stockauto 라는 폴더에 이 파일들을 넣어놨기 때문에 이 경로를 복사해서 시작 위치(옵션)에 넣어줍니다. 하단 사진이 최종 화면입니다.

주식 완전 자동 매매 프로그램 구현하기

 

그리고 확인을 눌러주겠습니다. 그러면 이제 모든 설정이 완료되었으니 확인 버튼을 눌러줍니다. 크레온 Plus를 실행해주는 것을 만들었으니 이제 자동매매 코드가 자동으로 실행되도록 또 만들어줘야 됩니다.

 

같은 방법으로 만들어주겠습니다. 마우스 우클릭, 새 작업 만들기, 이름은 자동 매매 시작이라고 지어주겠습니다. 설명도 똑같이 적어주고, 이것도 가장 높은 수준의 권한으로 실행하셔야 됩니다.

 

트리거는 매일 오전 8:40으로 설정을 해주겠습니다. 그러면 크레온 연결이 실행되고 10분 뒤에 자동매매 코드가 돌아가도록 설정을 해주겠습니다.

 

그리고 마찬가지로 동작에 새로 만들기를 눌러서 python.exe를 지정해주시고, 인수 추가 (옵션)으로 우리가 stockauto에 작성했던 파일인 AutoTrade.py 파일을 여기 넣어주고 시작 위치(옵션)에는 이 경로를 붙여넣고 확인, 확인을 누릅니다.

주식 완전 자동 매매 프로그램 구현하기

그러면 이제 매일

 

오전 8:30 → 크레온 연결

오전 8:40 자동매매 코드 시작

오전 9:05 ~ 오후 15:15   실제 매매가 이루어지는 시간

오후 15:15 ~ 오후 15:20 전량 매도

오후 15:20 종료

 

이렇게 자동 매매가 매일 자동으로 실행이 됩니다. 이게 잘 돌아가는지 테스트를 해보시려면 마우스 우클릭하고 실행을 누르시면 이 코드가 실행됩니다. 그러면 잘 실행되는 것을 확인할 수 있습니다. 실행이 잘 되는 것을 확인할 수 있었으니, 이제 매일매일 잘 동작을 하겠죠.

 

 

AWS lightsail 서비스를 이용한 주식 자동 매매

이제 자동매매에 대한 세팅이 모두 완료되었습니다. 참고로 이 방법의 단점은 작업 스케줄러가 돌아가야 되기 때문에 항상 컴퓨터를 켜놓아야 된다는 단점이 있습니다. 컴퓨터를 항상 켜놓지 않으려면 이렇게 AWS와 같은 클라우드 서비스에서 윈도우 PC를 하나 빌려서 작업을 하게 되면 AWS에서 돌아가는 서버가 있기 때문에 굳이 내 컴퓨터는 켜놓지 않아도 상관이 없습니다.

 

대신 AWS 서버 이용 비용이 있기 때문에 비용적인 부분을 비교해보고, 상관없으시다면 내 컴퓨터에서 진행하시는 것이 가장 저렴합니다. 조금 돈이 들더라도 AWS에 있는 서버를 돌리고 내 컴퓨터는 자유롭게 끄겠다 하시는 분들은 이런 AWS LIGHTSAIL 서비스를 이용해서 윈도우 PC를 한대 빌려서 여기서 똑같은 과정을 진행하시면 되겠습니다.

 

주식 자동 매매 1개월 수익 공개

마지막으로 수익 공개를 해보겠습니다. 제가 앞서 설명드린 방식으로 계속 자동 투자를 하고 있는데, 1개월 수익을 기준으로 말씀드리면 총 실현손익이 20,875원이니까 대략적으로 계산을 해보면 12개월, 1년 기준으로 이대로만 지속된다면 연수익률 28%의 수익을 얻을 수 있었습니다.

주식 자동 매매 1개월 수익 공개

 

처음 일주일 기준으로 66% 정도가 나왔는데 지금은 28%니까 많이 줄었죠. 이게 시장 상황에 따라서 변동성이 클 수 있기 때문에 무조건 특정 수익률이 나오는 것은 절대 아닙니다. 여러분이 원하시는 전략에 맞춰서 전략을 변경하시면서 여러분만의 자동매매를 구현해 보시기 바랍니다.

 

마무리

이것으로 주식투자 자동 매매 프로그램 개발 시리즈가 끝났습니다. 이제는 다양한 투자 전략을 사용하기 위해 이번 포스팅에 사용된 코드에 대해 분석해보고, 테스트 해봐야겠죠. 이번 시리즈는 국내 주식중에서도 ETF만 선정하여 돌렸지만, 나중에는 개별 종목, 나아가서 미국 주식까지 해보는 시간을 가져보도록 하겠습니다.

 

그리고 우측 하단에 있는 '꿀벌의 주식 블로그 구독' 버튼을 눌러주시면 주식 투자 자동화 포스팅을 포함하여 주식 관련 포스팅 업데이트 알림을 바로 받으실 수 있습니다.

 

여기까지 따라오신 분들 정말 수고 많으셨습니다. 댓글로 질문 남겨주시면 최대한 도와드리겠습니다.

 

 

 

검색창에 "꿀벌의 주식 블로그"를 검색! 
반응형