효투의 세상 로딩중...
효투의 세상 로딩중...
반응형

올해는 연간 프로젝트에 들어왔는데 모의해킹이 아닌 한번도 경험해보지못한 소스코드진단을 맡게되어

모의해킹 연구가 불가능해졌다...

 

그래서 이참에 못해본 투자 공부나 할겸 주식 공부를 하다보니 내가 주식 매매를 안하더라도

자동으로 매매를 해주는 자동 매매봇/Auto Trade Bot에 자연스레 관심을 가지게되었는데

평소에 모의해킹을 하다보면 이런저런 코드도 많이 보게되고

또 똑똑한 천재들이 아주 잘 만들어진 오픈소스 코드를 공개해둬서 만들어보려한다.

 

주식을 간간히 해왔었지만 항상 손절을 못해서 결과론적으론 항상 잃기만 했다... ㅠ

그리고 노예의 삶을 살아가는 나에게 주식 시장의 시간은 매번 쳐다보기가 어렵다

 

하지만 손절라인에서 아주 차갑고 냉철한 컴퓨터가 뒤도 돌아보지않고

정확하게 손절을 해준다면 조금 달라지지않을까?...

 

그래서 시간이 걸리더라도 내가 일을 하든 자고있든 나를 도와줄 매매봇을 만들어보려한다

 

Open API를 제공하는 증권사 선택

일단 처음으로 할 일은 당연히 증권사를 선택하는 일이다.

처음엔  내가 주로사용하는 키움증권으로 하려했으나

키움증권 API는 파이썬에 제한이 조금 있다...

64비트를 사용하지 못하고 32비트만 호환되어서 굳이굳이 Anaconda같은 도구로 또 설정을 따로해줘야한다

그리고 API가 업데이트 될 때마다 이런 창이 뜨는데 이 업데이트창이 나를 떠나게했다.

그냥 확인을 누르면 업데이트가 되는 것이 아니라 클라이언트를 종료후 확인 그리고 재접속을 해줘야하는

과정을 거쳐야한다.

물론 파이썬으로 해당 업데이트창을 처리하는 로직을 짜는 방법이 나와있긴하지만

불안하기도하고 귀찮고... 파이썬과 호환성이 좋은 다른 증권사를 알아보기로했다.

 

그래서 선택한곳이 한국투자증권의 Rest API를 이용하는 것!

제일 최근까지도 아주 업데이트가 활발하고 가이드도 최근까지도 계속 상세하게 제공해주고있다.

그리고 무엇보다 개발자 유튜브 조코딩님의 아주 상세한 설정 영상도 있어서 만들기 편하겠다 생각되었다.

https://www.youtube.com/watch?v=2Hxfb5HT4kE&list=LL

해당 영상에서 처음부터 프로그램이 돌아가는 과정까지 아주 상세하게 나와있다.

 

계좌 생성 후 API 신청까지 함

먼저 모의투자에서 테스트를 많이 해보고 실전투자로 넘어갈거라

모의투자도 신청하여 계좌 2개를 API 신청을 했다.

아래 사이트에서 API 신청할 수있다.

https://securities.koreainvestment.com/main/customer/systemdown/RestAPIService.jsp

 

https://securities.koreainvestment.com/main/member/login/login.jsp?returnUrl=%2Fmain%2Fcustomer%2Fsystemdown%2FRestAPIService.jsp&isXecurePass=Y

<!-- --> 스마트폰 인증이란? 모바일앱 “한국투자증권”에서 QR코드 촬영 또는 인증번호 입력방식으로 빠르고 쉽게 인터넷 뱅킹 서비스를 이용할 수 있습니다. 스마트폰 인증을 이용하기 위해서

securities.koreainvestment.com

 

그리고 개발에 대한 무조건 참고해야할 API 가이드들도 있으니 해당 페이지는 이제 매일매일 접속할 듯하다...

https://apiportal.koreainvestment.com/intro

 

KIS Developers

잠시만 기다려 주세요

apiportal.koreainvestment.com

 

반응형

오픈소스 코드 테스트

조코딩님이 올려준 코드를 깃허브에서 받아서 VSC로 불러왔다.

영상을 따라하며 설정을 마쳤고

장이 열린 시간이 아니라 매매는 안될테지만 프로그램이 제대로 되는지 테스트 먼저 시작

 

코드를 돌렸더니 에러가 나긴하지만 디스코드 웹훅 연동도 잘되어 메시지는 잘 오는듯하다.

한참을 에러의 원인을 찾다가 모의투자로 프로그램을 실행하는 것이 아닌 실전투자 계좌의

API로 프로그램을 실행하니 제대로 돌아가는 것을 확인했다.

 

 

그냥 코드만 긁어와서 실행했을 뿐인데 벌써 엄청난 기능들이 구현되어서 너무 기뻤고 조코딩님께 감사드린다.

주식 시장이 열린 시간이였다면 아마 영상의 설명처럼 30분마다 알람이 오며

기존코드에 설정된 종목이 설정된 로직으로 매수하고 매도하고 매매를 정상적으로 진행 했을듯하다.

 

하지만 주식공부를 하며 나도 내 나름대로의 매수 기준/ 매도 기준이 생겼고 그것을 적용시키는게 매매봇 개발의 99%다

 

일단 계좌에 돈을 조금 넣어보고 진짜 내 계좌를 불러오는게 맞는지 테스트를 해봤다.

 

그럼 실전투자는 가능한것을 확인하였고, 중요한 것은 모의투자다

개발자들이 셀 수도없이 디버깅을 하듯이 나도 테스트를 엄청나게 해보아야한다...

근데 그걸 내 생돈으로???????

 

절대 안된다.

API 가이드를 마구마구 살펴보던 중 

실전투자의 거래ID와 모의투자의 거래ID가 다른것을 발견하였다

 

그리고 내가 받아온 코드는 거래ID가 실전투자용이다.

바로 모의투자용 ID로 모두 변경해주고 테스트를 진행했다.

 

모의투자 API로 정상적으로 연결이되어 프로그램이 잘 굴러간다~

순식간에 10만원이 5억이 되어버렸다.

 

고작 모의투자 API 거래ID가 달랐던것 하나때문에 모의투자는 앞 1음절이 T가아니라 V였던 탓에...

1시간 30분이 날아가버렸다

 

어찌됐든 코드가 잘 동작하는 것은 확인했고 테스트도 끝났다

 

가시성 패치

지금은 매매도 안되고

주식이 어떻게 사고 팔아지는지 확인이 안된다...

매매가 중요한것은 맞지만 다른 부분들도 중요하다

 

디스코드 WebHook을 걸었던 이유가 무엇인가?

내가 밖에있든 안에있든 휴대폰이나 다른 컴퓨터에서도 언제나 실시간으로 확인하기 위함이다.

근데 지금 메시지는 가시성이 좋지않다

물론 === 와같은 구분자가있지만 난 색상을 입혀서 한눈에 보고싶다!

익절이면 빨간색 손절이면 파란색

그것이 코인이든 주식이든 투자의 국룰이다.

디스코드를 켜자마자 파란색이면 숫자를 읽기전에 슬퍼할 것이고 빨간색이면 기뻐할 것이다.

 

파이썬 프로그램이 굴러가는 Terminal에서 아무리 색깔로 표현해봤자 의미가 없다.

중요한것은 Discord에 표시가 되어야한다.

어떤 코드든 색깔을 입히는건 어렵지않다

금방 끝날 작업이다.

라이브러리도 많고 Ansi코드나 RGB 코드로 매우 쉽게 입힐 수 있다.

바로 알아보자

 

이게 뭐지? 싶었다.

위 표는 디스코드 마스터의 블로그에서 확인할 수 있다.

https://discordbot.tistory.com/88

 

[🌈일반용] 디스코드에서 글자색을 넣어 채팅을 꾸며봅시다! (최신 버전)

디코에서 코드블록을 이용하여 채팅에 색깔을 넣어봅시다. 디스코드 PC 글자색을 바꿔 채팅을 꾸며봅시다! 디스코드에서는 코드블록이라는 방법을 이용하여 편법으로 글자에 색을 넣을 수 있습

discordbot.tistory.com

 

위 블로그엔 디스코드 텍스팅과 관련된 아주 다양하고 많은 정보가 정리되어있으니 꾸미고싶다면

먼저 위 블로그를 들어가서 참고하면된다.

 

한땀한땀 입히는것도 싫고 코드가 너무 어렵다... 똑똑한 Chat GPT에게 물어봤더니

discord의 embed 기능을 사용하면 된다고 한다

 

안된다.... ㅠㅠ

 

어쩔수없이 디스코드의 코드블럭 ``` 명령으로 색상을 입혀야했다.

아래 사이트에서 디스코드의 ANSI 코드로 색을 자동으로 입혀주는 사이트도 있어서 테스트해보았지만

https://rebane2001.com/discord-colored-text-generator/

 

Rebane's Discord Colored Text Generator

About This is a simple app that creates colored Discord messages using the ANSI color codes available on the latest Discord desktop versions. To use this, write your text, select parts of it and assign colors to them, then copy it using the button below, a

rebane2001.com

 

디스코드 자체적으로는 잘되는듯하다...

 

하지만 코드자체에

឵test

이런... 요상한 특수문자가 앞에 껴있어서

파이썬 코드에선 당연히 에러가 발생한다

 

일단 디스코드에서 코드블럭을 이용한 색입히기를 테스트하고 파이썬에 붙여보았다.

아래 코드처럼 아예 터미널은 신경쓰지않고 디스코드에 보낼 때 코드블럭으로 보내게끔...

send_message(f"```csfix주식 평가 금액: {evaluation[0]['scts_evlu_amt']}원```")

 

위 사진과 같이 디스코드에 전송이되었는데 실패같아보이지만 매우 큰 수확을 얻었다!

코드블럭을 제대로 인식한다는 것을 확인하였고

또 여러번의 시행착오 끝에 드디어 구현할 수 있게되었다.

 

중간중간 더 쉽고 편한 방법이 없나 계속 찾아보다가 결국 포기하고 코드블럭 방법으로 정착할 생각이다.

파이썬에서 위 디스코드 문법을 구현하려면

줄바꿈을 넣어줘야한다

fix / diff / cs / css 등등등 매우 많은 색입히기가 있는데 모두 동일하다

\n 으로 처리해주면

send_message(f"```fix\n주식 평가 금액: {evaluation[0]['scts_evlu_amt']}원```")

 

실제로 디스코드 받는 코드는 아래와 같아지면서 색상이 제대로 들어가게된다.

```fix
주식 평가 금액: {evaluation[0]['scts_evlu_amt']}원
```

 

하지만... 위 디스코드 전문가의 블로그를 보거나 다른 여러 정보들을 찾아보게되면 알게되는건데

각각의 코드들은 한글 색상을 지원안하거나

첫글자만 색깔처리가 된다거나 하는... 이상한 규칙들이 적용되어있다...

 

그래서 더 찾아보기로했다.

 

그러다 발견한 오아시스같은 정보

https://gist.github.com/kkrypt0nn/a02506f3712ff2d1c8ca7c9e0aed7c06

 

A guide to ANSI on Discord

A guide to ANSI on Discord. GitHub Gist: instantly share code, notes, and snippets.

gist.github.com

 

바로 ANSI 코드를 표현하는 특수문자를 유니코드로 표현하는 것!

아래 코드처럼 Ansi 코드의 화살표를 유니코드 \u001b로 표현하게되면

send_message(f"```ansi\n\u001b[0;31m`주식 평가 금액: {evaluation[0]['scts_evlu_amt']}원```")

 

색상처리가 아주 깔끔하게 들어간다~

 

색상처리 문제는 해결되었다!

나중에 마무리할 때 일괄적으로 내가 원하는 안시코드를 찾아서 적용하면된다

Ansi의 색상은 매우 다양해서 걱정할 필요가없다

 

색처리에 너무 많은 시간이 소요되어서... (3시간?)

일단은 여기까지만

 

반응형
  • hyotwo7658@gmail.com

복사 완료 👍