본문 바로가기
무모한 도전-주식 인공지능 만들기/지식 정리 창고

kiwoom.py에 있었던 변경사항 -1-

by 인터넷떠돌이 2020. 2. 24.
반응형

안녕하세요?

 

이 블로그에서 최근에 댓글 주시는 분도 많고, 따라 하시려는 분도 많은데, 아마 많은 분들이 여러움이 많으시리라 생각이 됩니다. 저야 최근까지 그 이유를 몰랐는데, 일단 kiwoom.py를 기존에 [파이썬으로 배우는 알고리즘 트레이딩]이라는 책에서 나오는 kiwoom.py에 비해서 엄청나게 많은 부분이 달라졌다는 것을 알 수 있었습니다. 그래서 이 바뀐 부분에 대해서 한번 이야기를 해야 하는데, 하고 보니 너무나 많은 부분이 달라져서 한번의 포스팅으로는 다 보여드릴 수가 없어서 몇 번의 포스팅으로 나누어야 했습니다.

 

일단 기본적은 kiwoom.py의 코드는 여기서 가지고 왔습니다.

 

먼저 시작부터 엄청나게 달라진 부분이 있습니다. 일단 datetime이라는 것을 추가했고, QThread라는 것을 사용하기 위해서 PyQt5에서 사용할 수 있는 싱글턴도 가지고 왔었습니다.

 

그리고 나서 위 스크린샷과 같이 시작하자마자 클래스 변수도 위 스크린샷과 같이 다양하게 추가한 것을 알 수 있었습니다. 이 변수들 때문이라도 문제가 발생할 것이라는 생각이 듭니다.

 

그리고........... 처음에 나오는 def __init__()의 경우에는 초록색 밑줄을 친 부분만 빼고는 모두 원본의 코드에서 추가된 부분입니다. 그 정도로 변형을 해도해도 엄청나게 했습니다.

 

 

그리고 나서 _set_signal_slots()라는 메서드에 가서는, 위 스크린샷과 같이 붉은색 박스안에 있는 내용을 추가시켜 주도록 합니다.

 

그리고 나서 위 스크린샷에서 나오는 강조가 된 부분에 있는 메서드는 원본 kiwoom.py에서는 없었는 부분인데, 제가 작업을 하면서 어떻게 추가한 메서드입니다.

 

그리고 나서 다음으로 문제라면 문제가 되는 부분인 comm_rq_data라는 메서드인데, 이 부분에서는 어디가 기존의 코드이고, 어디가 아닌지 따지는게 거의 힘들 정도로 많은 변형이 가해졌습니다. 이에 대해서 그냥 위 스크린샷에 나온 대로 다시 만드는 것이 나을 지경입니다.

 

그리고 나서 작업을 하면서 또 바뀐 부분인데, 붉은색 밑줄친 메서드를 추가해서, 너무 키움증권 서버에서 연락이 없을 경우에 다시 요청을 보내는 메서드를 구현했었고, 그 다음으로 연두색 밑줄을 친 부분의 메서드처럼 또 만들어 주어서 원래는 CommGetData라는 메서드가 더 이상 키움증권에서 지원을 하지 않아서 GetCommData로 바꾸어 준 메서드입니다.

 

다음으로는 위 스크린샷에서볼 수 있는 것처럼 send_order를 한번 만들어 주도록 했으며, 다음으로는 거래가 체결된 정보를 받아오기 위해서 작성한 _receive_chejan_data라는 메서드도 추가해 주도록 합니다.

 

그리고 너무 길어서 2부분으로 나누어야 했는데, 일단 _receive_tr_data()라는 메서드는 먼저 elif까지 동원해서 중간에 끊어 주어야만 했습니다.

\

그리고 나서 위 스크린샷에서 볼 수 있는 것처럼 _receive_tr_data()라는 메서드의 후반부에 해당하는 메서드입니다. 이 내용을 기준으로 설명을 하자면, 그냥 1년 넘게 이 작업을 하면서 kiwoom.py에 많은 조작을 가했는데, 그게 쌓이고 쌓여서 정말 엄청난 것이 되었다는 생각이 듭니다.

반응형