키움증권의 시스템이 만들어진 당시에는 32비트가 최신 운영체제였다고 한다. 그런데 개발을 하다보면 64비트만 지원하는 특정 라이브러리를 사용해야 할 때도 있다고. 때문에 64비트 버전의 아나콘다를 설치하고 아나콘다 안에서 32비트 파이썬 가상환경을 만들어서 사용해야 한다고 한다. 좋은 말로 할 때 통일했으면 좋겠건만.(아나콘다 설치와 가상환경 설정은 꽤 많은 시간이 걸리므로 (최소 30분~1시간 이상) 다른 일을 하면서 동시에 하기를 권한다.)
키움API는 홈페이지에서 로그인 후 신청하면 바로 다운로드 받을 수 있다. 참고로 키움API는 윈도우 OS 환경에서만 이용 가능하며 리눅스, MacOS에서는 에러가 발생한다고 한다.
주식 투자를 본격적으로 시작한지는 얼마 되지 않았지만, 나름 재미를 느끼고 월급의 반 정도를 꾸준히 씨드로 넣고 있다. 덕분에 고질병이었던 저혈압도 나았고... 지금은 마치 돈을 벌기 위해 주식을 하는 것이 아닌, 주식을 하기 위해 돈을 벌고 있는 것과 같은 모습이다. '인생은 한강 아니면 한강뷰' 따위의 말들을 마음에 새기며.
그러나 아무래도 직장인이다보니 주식 분석하는데 많은 시간을 쏟을 순 없었다, 라고 핑계를 대고 있지만 사실은 아주 귀찮았다. 언제 종목 관련 기사 찾아보고, 차트 분석하고, 매수/매도 적정 시기를 간 보다가 매매를 하지? 21세기인데 뭐 더 효율적인 방법이 있지 않을까? 그러던 차에 문득 예전에 파이썬을 공부할 때 스쳐 지나가듯 보았던 주식 API가 떠올랐다.
더 찾아보니 역시나, 자동매매 기법 관련된 책과 정보들이 많았다. 인공지능이 분석을 해주고 자동으로 매매까지 해준다니 정말 엄청난 세상이었다. 주변 분들에게 이런 내용을 공유했더니, 한 분께서 이런 의문을 표하셨다.
"그럼 인공지능으로 주식하신 분들은 다 부자됐어요?"
그러게요...?
심지어 더 찾아보니, 이미 플레이 스토어에 딥러닝을 이용한 분석 서비스를 제공해주는 어플리케이션도 있었다! (그러나 분석 내용이 그다지 설득력 있진 않았다.) 그럼 이런 분석 시스템을 많은 노력을 들여 만드는 게 의미가 있을까...? 라는 의문이 잠시 들었지만, 한 번 만들어보기로 결정했다. 이러한 시스템을 갖는다는 것을 공구에 비유하자면, 남들이 수동 드라이버로 닦고 조이고 기름칠 때 나는 이름이 각인된 스위스제 맥가이버 칼과 전동드릴을 갖고 있는 것과 비슷하다고 생각하기 때문이다. 물론 나에게 나사와 건전지가 없다면 그것들은 무용지물이겠지만.(현재는 나사는커녕 조립 설명서도 없는 상태라고 할 수 있다.)
최악의 경우라도 최소한 파이썬 실력과 딥러닝을 사용해 본 경험은 남겠지...? 라는 생각으로, 우선 감을 잡아 보고자 책을 구매했다.
(사은품으로 받은 미니언즈 배스타올 예쁘고 보드랍고 맘에 든다. 담요 대용으로도 좋음)
위와 같이 두 권을 샀는데, 각각 자동 매매 시스템과 분석 시스템을 위해 구매했다.
◈손가락 하나 까딱하지 않는 주식 거래 시스템 구축 - 장용준 : 자동 매매 구축
(책 제목이 참 마음에 든다. 특히 '손가락 하나 까딱하지 않는' 이 부분. 참고로 내가 가장 좋아하는 파이썬 책은 '파이썬 프로그래밍으로 지루한 작업 자동화하기'이다.)
◈파이썬 증권 데이터 분석 - 김황후 : 웹 스크레이핑, 딥러닝 등을 이용한 분석
(가장 최신판이면서 웹 스크레이핑과 딥러닝을 다뤄볼 수 있어 선택했다.)
그런데 목차를 살펴보니 상당히 난이도가 있어 보였다. 이건 도저히 혼자선 못할 것 같은데..? 사람을 좀 구해서 같이 해볼까? 싶어 동호회에 글을 올려보았다. 반응은 가히 폭발적이었다. (단톡 방에 서른 명이 넘게 들어왔다) 주식에 관심 있는 사람이 이렇게나 많다니. 감투 쓰면 부담받아하면서 열심히 하는 편인데, 이 기회에 부담 느끼면서 열심히 해봐야겠다..!
사무업무 자동화의 꽃 엑셀 VBA(Visual Basic for Application) 공부를 드디어 시작했습니다!
아주 기본적인 내용부터 공부할 예정이며, 배우게 된 내용을 정리해서 블로그에 업로드할 예정입니다.
같이 공부하시는 분들에게 도움이 되었으면 좋겠습니다.
VBA 이용을 위해서는 명령어 목록에 '개발 도구'항목을 추가해야 하는데, 아마 기본적으로는 설정이 안되어 있을 겁니다.
엑셀을 켠 뒤, 파일->옵션으로 들어가서 '리본 사용자 지정'의 오른쪽 항목 중 '개발 도구' 항목에 체크한 후 확인을 누르시면 됩니다.
엑셀에 개발 도구가 생겼습니다!이제VBA사용할 준비가 다 되었습니다.
매크로 이름을 적당히 작성합니다. 첫 글자는 영문자로 해주세요.
바로 가기 키는 Ctrl+j,m 등을 추천드립니다. 왜냐하면 엑셀의 다른 명령어와 겹치지 않기 때문이지요!
만약 다른 명령어와 겹치게 되면 매크로 명령어가 우선시 됩니다. Ctrl+S는 저장 단축키이지만, 새로 작성하는 매크로의 단축키를 Ctrl+S로 설정하시면 저장 단축키는 해당 엑셀 상에서 사용하지 못하게 됩니다.
매크로 저장 위치는 크게 상관 없습니다. 다른 엑셀 창에서도 사용하고 싶다면 개인용 매크로 통합 문서에 저장하는 걸 추천드려요.
이제 매크로 기록 버튼을 통해 사용자의 작업을 자동으로 저장하고, 나중에 이를 반복 수행할 수 있습니다.
여기서 '상대 참조로 기록'을 누르면, 절대 참조가 아닌 상대 참조로 매크로 내용을 기록하게 됩니다. 예를 들어 설명해보겠습니다. A1 셀을 선택해둔 채로 매크로 기록 버튼을 누른 뒤, 바로 한칸 오른쪽에 있는 B1 셀을 클릭한 뒤 배경색상을 변경하는 매크로 작업을 진행했다고 합시다. 상대 참조로 기록한 경우 '오른쪽 셀의 색상을 변경한다.'라는 매크로가 입력되고, 절대 참조로 기록한 경우 'B1 셀의 색상을 변경한다.'라는 매크로가 입력될 것입니다.
이제 매크로 기록 버튼을 누르고, 옆 셀을 클릭한 뒤 셀의 배경색을 변경해봅니다.
그런 다음 기록 중지 버튼을 누르세요. 매크로 기록부터 기록 중지 버튼을 누르기 전까지, 웬만하면 다른 작업은 하지 말아주세요! 원치 않는 내용이 추가되어서 나중에 보기 어려워질 수가 있습니다.
기록 중지 버튼을 눌러도 아무런 변화가 없습니다. 작성된 매크로 코드를 확인하기 위해 개발 도구의 Visual Basic 버튼을 눌러봅니다.
뭔가 약간 구시대적인 느낌의 창이 뜨네요…
왼편의 프로젝트 목록에서 Module1을 클릭하여 오른쪽의 창을 띄웁니다.
여기서 With ~ End With에 대해 잠깐 설명드리겠습니다. With 부터 End With 사이에 있는 항목들에 대해서 항목 앞에 .을 붙이면 With 뒤의 내용이 자동으로 따라 붙게 됩니다. 매 줄마다 같은 내용을 작성하기가 번거로우니까요.
설명을 위해 비유를 들자면, 성이 '이'씨인 친구가 나에게 "내 동생이 김태리 이름이 예쁘다고 자기도 태리로 개명을 하겠대. 어이 없지?" 라고 했을때, 친구가 굳이 나에게 동생의 성씨가 '이'씨임을 알려주지 않아도 친구 동생의 성씨를 알고 있기 때문에 친구의 얘기에 웃을 수 있을 것입니다.
여기서 '친구의 성을 이미 알고 있음'이라는 사실이 'With Selection.Interior'부분에 해당하고, 그 아래의 '.Color = 255'와 같은 내용들이 '친구 동생이 개명할 이름'에 해당하겠네요.
따라서 위 코드는 아래와 같이 바꾸어 쓸 수도 있습니다.
물론 상당히 비효율적이겠지요.
또한 위 코드에서 Pattern이나 ColorIndex, Shade 따위와 같은 내용들은 굳이 없어도 됩니다. 제가 선택한 건 원색(RED, GREEN, BLUE)이라서 중요한건 Color 이므로, 이를 남기고 다 삭제해보았습니다.
이걸 With 함수 없이 바꾸면 아래와 같이 한 줄로 표시할 수 있습니다.
Color = 에서 뒤의 숫자를 바꾸어 실행(Ctrl+j)해보았습니다..
매크로를 바로 불러오는 단축키는 위와 같이 파일->옵션에서 '빠른 실행 도구 모음'에서 추가할 수 있습니다.