자동 거래 시스템

마지막 업데이트: 2022년 4월 21일 | 0개 댓글
  • 네이버 블로그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 트위터 공유하기
  • 카카오스토리 공유하기
주식 로봇을 만들자 - 자동매매 프로그램(파이썬)

시스템 트레이딩의 神

때문에 개발에 관련한 내용을 적을 때마다 놓치거나 실수한 부분은 없는지 신경을 많이 쓰는 편입니다만 개발은 잘 하지만 금융이나 주식쪽에 대해 이해도가 낮은 개발자 혹은 학생들의 반복적인 문의가 많아 글을 남깁니다.

개발은 부수적인 수단일 뿐이다.

시장의 생리와 메커니즘을 이해하지 못하면 아무리 개발을 잘 한다 한들 소용이 없습니다.

어떤 작동원리를 가지고 있는지 이해 해야 합니다.

포커나 훌라, 고스톱 게임에 참여 하면서 룰을 이해하지 못하는 것과 같습니다.

조금은 안다 하더라도 시시각각으로 변화하는 상황에 맞춰 어떤 게임 운영 방법이 승리의 결과로 이어지게 할 수 있을지 알아야 되겠지요.

주문 프로그램의 개발 언어에 집착하지 마세요.

필자 역시 Assembly, 자동 거래 시스템 C, C++, VB, PHP, JAVA, VC++, Python, Ruby, C# 등 많지는 않지만 다양한 언어들을 접해봤지만 결국 중요한 것은 애초에 구상한대로 프로그램이 작동하도록 구현하느냐의 차이일 뿐 ms (milli second) 단위의 접근에 집착할 필요가 없습니다.

예를 들어, 매일 종가에 사고 팔기로 한 로직을 자동 거래 시스템 자동 거래 시스템 가지고 있다면 어떤 언어를 선택하더라도 주문을 내는데는 큰 차이가 없습니다.

소 단위로 분리 구분 하세요.

주문 프로그램은 개발 언어의 장벽과 무관하다 할 수 있지만 시장의 시세 및 여러 정보 데이터를 수신하는 프로그램이나 분석을 위한 프로그램은 그렇지 않습니다.

프로그래밍 언어마다의 특성이 있는데요.

대체적으로 C언어가 빠르다고 알려져 있습니다.

그리고 Java라던지 Python은 '상대적'으로 느리다고 알려져 있지요.

주문 프로그램은 Java나 Python을 사용해도 됩니다.

HFT (High Frequency Trading)이 아닌 이상 말이지요.

그런데 조건이 단순하다면 모를까 알파고처럼 엄청난 경우의 수에 대해 연산을 하던 혹은 몇가지의 팩터에 대해서만 단순히 판독하던 '분석'의 영역에서는 가급적이면 빠른 처리가 필요합니다.

여러가지 프로그래밍 언어를 다룰 줄 안다면 가장 빠른 언어로 모든것을 처리 하거나 혹은 각각의 영역에서 가장 적합한 언어를 사용하여 처리하면 될 일입니다.

HTS가 그러했듯 API를 이용하여 주식, 선물, 옵션, 암호통화 거래를 시도하는 사람들이 많이 증가 하였는데 한가지 언어만 고집하는 경우를 더러 목격하게 됩니다.

C언어가 대체적으로 빠르다고 하지만 경우에 따라서는 C언어보다 더 빠른 상황이 연출될 수 있습니다.

혹은 빠른 속도보다는 안정적인 운용이 중요할 수도 있고 동시 다발적으로 쏟아지는 각종 데이터를 잘 처리해야 될 때도 있는 등 여러 상황이 존재 할 수 있습니다.

이런 상황을 고려하여 개발을 진행해야 하는데 대부분 한가지의 언어나 상황만을 고집하는 자동 거래 시스템 경우를 제법 많이 보게 됩니다.

필자의 경우 시장 데이터의 수집은 C계열로, 분석은 Python과 TensorFlow로, 데이터베이스(DataBase)는 MySQL로, 주문은 C계열로 처리하고 있는데 이것이 정답은 아니겠지만 편의상 또한 목적에 맞게 사용중인 것으로 생각하고 있고 추후 언제라도 변경될 수 있는 부분입니다.

독자분들도 한가지만 고집할 것이 아니라 보다 효율적인 처리를 위해 고민을 많이 해보기를 권합니다.

어떤 라이브러리를 사용하시나요?

각자가 '다름'을 가지고 있듯 매매에도 '자동 거래 시스템 개성'이라는 것이 필요 합니다.

남들이 생각하지 못한 부분, 누군가 놓친 포인트에 [email protected]가 있는 것이지 누구나 사용할 수 있는 공개 라이브러리에서 성배를 찾으려고 하지 말고 직접 부딪쳐 보세요.

그렇다고 시장에 성배가 있다고 생각하지는 않습니다.

계속 발전하도록 노력해야 하고 적어도 다른 사람들보다 한발짝 앞선 위치에서 진행할 수 있도록 노력해야 겠지요.

이 부분은 필자가 사용하고 있는 DMA에 대해 경험이 적기 때문에 추후에 별도의 포스팅으로 대체 합니다.

컴퓨팅 파워의 선택이 중요합니다.

독자분들이 사용하고 있는 로직의 복잡도는 제각가일 것입니다만 어떤 일을 처리하기에 접합한가에 대해 고려하지 않는 경우를 제법 마주하게 됩니다.

고밀도 연산이 필요하면 컴퓨팅 파워가 매우 중요합니다만 앞서 언급한 종가 거래 정도라면 어지간한 컴퓨터로도 충분합니다.

컴퓨터의 사양 등으로 고민하지 마세요.

제일 중요한 것은 로직입니다.

위에 여러 부분들에 대해 말했지만 가장 중요한 것은 지속적으로 수익을 낼 수 있는 로직을 가지고 있는가이지 다른 부분에 대해서는 뭐가 어쩌고 저쩌고 해봐야 별 의미 없다고 생각합니다.

이에 덧붙여 얘기 하자면 필자의 '알고리즘 자동매매 시스템'에 대해 필자는 어느정도 만족하지만 그와 동시에 불만족 스러운 부분이 있고 이를 개선하기 위해 나름대로 고군분투중에 있습니다.

평균의 데이터로 접근해보면 최근 수개월간은 횡보 내지는 우하향하고 있기 때문인데요.

기본적으로 실제와 가장 유사한 형태로 시뮬레이션을 했고 그것을 시스템화 했으며 규모의 경제 영역에 발을 들이고 있기에 손익률의 관점에서 접근하고 있지는 않습니다.

이렇든 저렇든 가장 중요한 것은 수익 로직이므로 여러 고민들은 접어두고 열심히 시장 데이터를 모으고 분석하는 것이 우선이라는 말씀 드리고 싶습니다.

블로그 독자분들을 대상으로 시장 데이터 수집 프로그램, 매매 프로그램, 분석 대행, 알고리즘의 교정 등 여러 도움을 드리고 있는데요.

[판매 종료] 주식매매프로그램 개발 노하우, 소스를 담은 전자책이 발간되었습니다.

Python과 Kiwoom API를 이용한 주식자동매매프로그램 개발 가이드를 약 3달 동안 총 300페이지에 담았습니다.

책의 모토는 프로그래밍을 한 번도 해보지 않으신 분들이 Python 기초부터 증권사 API를 이용해 매매가 가능한 프로그램을 개발하도록 도와드리는 것입니다. 이런 뜻을 두고 최대한 친절하고 상세한 설명을 제공해드립니다.

또한 프로그래밍을 아시는 분이라도 막상 프로그래밍을 어떻게 이용해야할지 막막하시거나 트레이딩 시스템을 만들어 보고 싶지만 어디서 어떻게 시작해야할지 모르는 분들에게도 도움이 되실 것입니다.

예시 전략도 들어가 있으니 본인만의 매매전략을 만드시는데 참고하셨으면 좋겠습니다!

하지만 혹시 오해하지는 않으셨으면 좋겠습니다.

이 책은 프로그래밍을 해보신 분이나 그렇지 않은 분 모두에게 트레이딩 시스템을 구축하는 방법에 대해 쉽게 알려 드리겠다는 목표로 자동 거래 시스템 자동 거래 시스템 쓰여졌습니다.

즉, 책을 읽고 학습하시는 분께서 얻으실 수 있는 것은 트레이딩 시스템 구축 방법입니다.

책이 제공해드릴 수 있는 것은 물고기를 잡아 주거나 물고기를 잡는 방법을 알려드린다기 보다 물고기를 잡는데 사용하는 좋은 도구를 만드는 법을 알려 드리는 것입니다.

이 과정 역시 결코 쉽고 만만하지는 않을 것입니다. 그러므로 당장에 엄청난 것을 만들겠다는 의욕보다는 조금 느릴지라도 천천히 결국 해내겠다는 마음으로 신중히 고민하신 다음 구매해주시기를 당부 드립니다.

자동 거래 시스템

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[찌쏘] 직장인 주식투자 공부방

카카오톡공유

사실 주식투자를 하면서 가장 많이 생각했던 부분이였습니다. 바로 주 식투자를 자동으로 진행하게 할 수 없을까? 하는 고민이였습니다.

요즘에 수많은 광고글들을 보면 로봇이 자동매매를 하느니 추천을 하느니 등의 이야기가 많이 나오는데요. 저는 제가 직접 자동매매 프로그램을 만들어 보기로 결정하였습니다.

사실 저는 IT전공자이지만 프로그래밍을 하던 사람은 아닙니다. 다만 자동 거래 시스템 자동 거래 시스템 데이터베이스와 빅데이터 등 분석기법들을 연구하는쪽의 일을 했었고, 장기간 IT와는 거리가 있었던 업무를 하였었기 때문에 상당히 고민을 많이 하기는 했지만,

조건검색식에 대한 연구도 최적의 주식투자종목을 발굴해 내는 관점이라고 한다면, 이것을 자동매매로봇을 만들어서 내가 일하고 있는 동안에 스스로 투자를 진행했으면 좋겠다 라는 생각을 했습니다.

주식 로봇을 만들자 - 자동매매 프로그램(파이썬)

요즘은 스마트시대이고, 로봇이 일을 대신해주는 경우가 많이 있습니다. 특히나 로봇을 비서로 두고 필요할 때 일을 시킨다거나 하는 형태의 업무자동화도 많이 진행이 되고 있는데요.

저는 21년도의 프로젝트를 바로 주식자동매매 프로그램을 만들어서 조건검색식으로 확률높은 자동 거래 시스템 종목이 발견이 되면, 이것을 저를 대신해서 자동으로 매매를 진행해주는 프로그램을 진행하겠습니다.

복사&붙여넣기로 주식 자동매매프로그램을 만들자

사실 요즘이 이와 관련된 것들이 책도 많고 한데요. 아마 기본적으로 프로그래밍을 해보신분이 아니라면 접근이 어려울 것 같다는 생각이 들긴합니다. 하지만 도전해보십시요. 요즘에는 오픈소스이고 여기저기 복사(Copy)&붙여넣기(자동 거래 시스템 Paste)만 잘해도 충분히 자신의 비서로봇을을 만들수 있습니다. ^^

일단 셋팅하는 작업을 먼저해본다면, 기본적으로 프로그래밍 언어는 Python(파이썬)으로 진행 예정이며, API는 대신증권 크레온을 활용하고, SLACKER라는 메신져 서비스를 이용해서 제 로봇과 소통을 할 수 있도록 구성을 할 예정입니다.

한마디로 제가 만든 조건검색식으로 당일에 발견된 주식종목을 로봇이 저에게 메시지로 알려주고, 제가 선택한 주식종목을 로봇이 다음날 혹은 당일에 매수를 진행하고 저에게 매수내역에 대한 메시지를 알려주는 형태입니다. 혹은 제가 선택하는 것이 아니라 확률높은 조건검색식으로 발견된 주식종목을 스스로 매매하도록 로직을 세워두는 것이지요.

일단 이것이 제가 컴퓨터에 접속해있는 상태가 아니어도 자동으로 돌아갈수 있을지는 모르겠지만, 일단 PC를 켜두는 한이 있더라도 위의 로직만 구현이 되어진다면 온라인상에 서버를 두고서 계속해서 자동매매가 일어나도록 로봇을 굴리는 것도 가능해질 것이라고 생각됩니다.

물론 로직이 완벽해서 수익이 나면 좋겠지만 그렇지 않을 수가 있기 때문에 모의투자형식으로 계속해서 샘플로 돌려보는 작업도 물론 필요하겠지요. 간단하게 프로세스는 아래와 같이 구성을 할 예정입니다.

로봇이 수행할 메인 프로세스

  • 조건검색식으로 발견된 종목을 엑셀로 저장한다
  • 익일 로봇이 장시작전 자동으로 실행된다.
    • 엑셀을 읽어서 80%이상 확률의 조건검색식 종목을 저장한다.
    • 장시작과 함께 해당 종목을 로직에 의해 매수한다.
    • 10%이상 상승시 절반 매도를 진행한다.
    • 매수매도 내역을 전송한다.
    • 일일 수익률을 정리하여 전송한다.

    위와 같은 프로세스를 구성하기 위해 단계별 연재를 진행해보겠습니다. 최대한 프로그램 개발과 관련이 없는 분들이라도 자신의 자동매매로봇을 만들고자 하는 분들에게 도움이 될 수 있도록 구성해보겠습니다.

    늦어도 22년에는 주식자동매매로봇이 저에게 생활안정을 마련해줄수 있었으면 좋겠네요. 일단 개발기간의 목표는 6개월입니다. 물론 천천히 시간날때마다하려다보니 몰입해서 못하겠지만 남은 하반기 6개월은 테스트를 돌려보고 본격화는 '22년부터 시작해보겠습니다.

    지너스소프트, 번개트레이더 주식 자동 매매 프로그램 출시

    번개트레이더 주요 특징

    서울--(뉴스와이어) 2017년 04월 10일 -- 지너스소프트가 부담 없는 비용으로 누구나 주식 자동 매매를 할 수 있도록 월 이용료 3만원부터 이용할 수 있는 ‘번개트레이더’ 시스템 트레이딩 프로그램을 출시하였다고 밝혔다.

    최근 많은 투자 자문 회사에서 인공지능 로보바이저를 이용한 매매, 알고리즘 트레이딩 매매, 시스템 트레이딩 자동화와 같은 다양한 프로그램 매매 방식을 도입하여 주식 거래를 하고 있다. 그러나 일반 소액 투자자는 접근하기도 어렵고 이용료 부담 때문에 쉽게 할 수 없는 실정이다.

    번개트레이더는 복잡하고 어려운 사용 방법은 배제하고 누구나 쉽고 빠르게 학습하여 주식 자동 매매를 할 수 있도록 프로그램을 최대한 쉽게 구성하였으며 급등주 매매와 데이트레이딩에 적합하게 개발되었다.

    2016년 10월에는 자동 매매 프로그램 검증 차원에서 키움영웅전 실전투자대회 3천 분야에 참가하여 최종 수익률 순위 23위, 누적 수익률 14.01%를 달성하는 결과를 기록하기도 하였다. 다만 프로그램에서 자동으로 수익을 보장해 주는 것은 아니다. 키움영웅문의 조건 검색식과 번개트레이더 매매 전략을 결합하여 자동 매매를 한 결과로 단순히 자동매매 프로그램만 실행한다고 수익이 보장되는 것은 아니다.

    또한 번개트레이더 프로그램의 모의투자는 국내 최초로 평생 무료로 제공하므로 누구나 주식 자동 매매를 하고 싶을 경우 키움증권 계좌을 개설하고 모의투자 신청만 하면 된다. 번개트레이더 프로그램으로 안전하게 자동 매매 프로그램의 사용 방법을 배우고 자신만의 매매 전략을 검증하며, 자신이 생기면 실전 투자로 전환하여 실전 투자 비용만 지불하고 프로그램을 이용할 수 있다.

    지너스소프트는 대한민국 국민이라면 누구나 평생 무료로 번개트레이더 자동 매매 모의 투자를 이용할 수 있도록 제공하고 있다며, 번개트레이더 네이버 카페에 가입하면 소액 실투도 지원하여 처음 자동 매매를 접하는 초보자도 비용 부담 없이 프로그램 이용 방법을 익힐 수 있도록 최대한 지원하고 있다고 밝혔다.

    한편 번개트레이더 출시 기념 오픈 이벤트로 4월 10일부터 5월 10일까지 유료 신청 기간을 두 배로 연장해 주는 ‘오픈 기념 더블 이벤트’를 진행하고 있으며 평생회원 가입 시 선착순 300명에게 평생 회비를 150만원에서 90만원으로 할인해 주는 할인 이벤트도 같이 진행한다.

    지너스소프트는 2015년부터 주식 자동 매매, 시스템 트레이딩에 대한 연구개발에 집중하여 2017년 3월에 번개트레이더 주식 자동 매매 프로그램 개발을 완료하고 상용화 서비스를 시작하였다. 시스템 트레이딩에 관련된 알고리즘 트레이딩, 머신러닝 트레이딩에 대한 연구 개발에 투자하여 보다 혁신적인 시스템 트레이딩 솔루션을 일반 투자자들에게 보급하기위해 노력하고 있는 핀테크 소프트웨어 전문기업이다.


0 개 댓글

답장을 남겨주세요