안녕하세요?

 

지난 포스팅에서 기존의 TR을 상요해서 매입금액을 가지고 오려고 했는 시도는 실패했는데, 여기서 왜 보유량 X 현재가를 계산해서 10만원을 넘어가면 더는 매수를 못하게 했는 알고리즘이 무력화된 이유를 알 수 있었습니다. 바로 보유량에 대한 정보가 전혀 나오지 않아서 생긴 문제였습니다.

 

먼저 KOA studio를 실행시킨 다음에, 새로운 opt10085라는 TR을 통해서 한번 계좌번호를 입력해 보도록 합니다. 그 전에 KOA studio에서는 Open API를 제대로 연결해 주어야 합니다.

 

일단 여기서는 리퓨어유니맥스에 대한 정보가 나오는 것을 확인할 수 있었습니다. 여기서는 매입금액만이 아니라 매입가와 기타 등등의 정보도 얻을 수는 있었으나.......

 

문제는 지금 당장 보유하고 있지 않은 종목에 대한 정보도 뜬다는 것이 문제인 TR입니다. 이래서야 제가 필요한 정보 외에 것도 나와서 문제는 문제입니다.

 

그래서 이번에는 opw00004라는 TR을 이용해 보기로 결정을 했습니다. 이 TR에서는 모의투자 계좌번호와 함께 위 스크린샷의 해당사항을 입력하기만 하면 됩니다.

 

 

일단 opw00004에서는 위 스크린샷과 같이 리퓨어유니맥스에 대한 매입금액과 같은 정보가 나오는 것을 확인할 수 있었습니다.

 

그리고 나서 multithread3.py에 가서, 위 스크린샷의 내용처럼 새로운 메서드를 지정해 주도록 합니다. 지금은 메서드를 작성하지 않아서 저렇게 하이라이트 표시가 되는 것이지만, 메서드만 작성하면 사라집니다.

 

그리고 나서 처음으로 메서드를 작성해 보는데, 처음 들어가는 내용은 당연하다면 당연하게도 위 스크린샷에서 알 수 있듯이 input_value를 작성해 주는 것 입니다.

 

그리고 나서 kiwoom.py로 가서, 이 TR에 대해 정보를 받을 수 있는 메서드를 작성해 보도록 합니다. 그리고 나서 _opw00004라는 메서드를 본격적으로 작성해 보도록 합니다.

 

일단 먼저 하는 것은 결과가 저장이 될 딕셔너리를 먼저 reset시켜주는 메서드를 만들어 주도록 하고, 정말 필요한 내용에 대해서는 multi라는 index를 기준으로 해서 넣어 주도록 하는 것 입니다.

 

다시 multithread3.py로 돌아와서 만들어 줘야 하는 메서드입니다. 먼저 저장이 될 딕셔너리를 리셋시켜 주도록 하고, 다음으로 결과를 받는데 성공했다면, 모든 스레드가 공유할 수 있는 global변수를 선언해서 여기다가 값을 집어 넣어 주도록 합니다.

 

그리고 나서 다른 메서드 처럼 처음에 들어가는 메서드에서는 이 정보를 취합하면 되지, 나머지 스레드에서는 이 정보를 공유하게 하는 것으로 키움증권 서버에 너무 많은 조회를 하지 않도록 합니다.

 

그리고 여기까지 했기 때문에 결과를 한번 print()함수를 사용해서, 한번 만들어 보도록 합니다. 여기서 나오는 값을 가지고서 성공여부를 일단 가늠해 볼 수 있습니다.

 

일단 실험결과 성공적이라는 것을 알 수 있었습니다. 우선 위 스크린샷에서 알 수 있는 것처럼 리퓨어유니맥스에 대해서 매입하는 데 총 얼마의 금액이 들어갔으며, 보유량은 어떻게 되는지를 선명하게 나옵니다. 거기다가 이 종목들의 갯수와 정보가 영웅문 HTS에서 나오는 정보와 같다는 것을 알 수 있었습니다.

+ Recent posts