안녕하세요?

 

이제 어떻게 해서 2개의 스레드만 적용이 되는 무언가 한참 모자라는 결과물이 나오기는 했습니다. 그렇지만, 그건 그것이고, 이제 해야 할 것은 해야 할 것이니, 이걸 가지고서 어떻게 사용해 볼까하고 고민을 해봐야 하는 타이밍이 왔습니다. 그래서 이번 포스팅에서는 여러가지 시도를 하는 과정을 올리고자 합니다.

 

먼저 위 스크린샷과 같이 로그인을 여러번 하도록 일단 for문을 두번 사용하는 형태로 먼저 만들어 보았습니다만, 지금 와서 생각해보면, 처음부터 잘못된 코드였습니다.

 

다음으로 해야 할일은 위 스크린샷에서 볼 수 있는 것처럼 일단 여러번 for문을 돌릴 것인데, 그때마다 다른 py파일을 지정하거나 할 수 없으니까, 맨 처음이 되는 숫자를 1로 만들기 위한 작업을 해줘야 합니다.

 

그런데 어디가 어떻게 된 것인지 하다가 중간에 에러가 나와서 중단이 되는 것을 볼 수 있었습니다. 일단 이렇게 된 원인으로 Average_returning이 너무 옛날 것을 해서 에러가 생기는 것으로 생각을 했습니다.

 

다음으로 해야 할일은 Average_returning2.py를 사용하기 위해서 미체결 데이터에 대한 처리가 있어야 하는데, 이 정보를 받아오기 위한 부분이 이 Kiwoom.py에 나오는 opt10075라는 TR에 대해서 받는 부분이 있어야 합니다.

 

그리고 당연하다면 당연하게도 Kiwoom이라는 클래스 안에서 이 미체결 데이터를 가지고 오는 것에 대한 작업도 일어나야 합니다.

 

 

그리고 다으므로 할일은 위 스크린샷처럼 먼저 계좌번호를 알아오는 것도 처음의 스레드만 하면 OK이니 그렇게 하도록 하고, 이 미체결 데이터를 다룰 수 있는 부분도 만들어 주도록 합니다.

 

그리고 Parent되는 py파일을 만들어서 했더니, 뭐가 잘 안되어서 하는 수 없이 이번에는 위스크린샷처럼 for문에 들어갈 숫자를 직접 정해 주도록 합니다.

 

일단 이렇게 하니까 제대로 작동이 되는 것을 확인할 수 있기는 있었습니다. 이렇게 보면 작동을 가능하기는 한데, 여기서 중대한 문제가 발생했습니다.

 

바로 database와 이렇게 communication.txt가 맞지 않아서 생긴 에러였습니다. 이 에러를 그냥 두어서는 곤란하니, 일단 pytrader를 작동 시켜서 데이터를 받아 오도록 하고, 다음으로 communication.txt를 작성해 주었어야 했습니다.

 

이렇게 하고 나서 위 스크린샷처럼 parent인 py파일에서 데이터를 받아오기 위해서 input()을 입력해 주도록 합니다. 이렇게 하고 나서............

 

parent.py에서 작동을 시켰더니, 프로그램이 작동 정지가 되었다고 합니다. 그래서 하는 수 없이 위 스크린샷처럼 도로 다시 MainWindow()를 작동시키는 것으로 갔습니다.

 

그리고 나서 Input을 위 스크린샷처럼 만들어 주어서 한번 만들어 보도록 했으며, if __name__ = "__main__": 에 작성한 input은 전혀 작동을 하지 않는 다는 것을 알 수 있었습니다.

 

그러고도 에러가 났는데, 왜 났느냐 하면, 위 스크린샷처럼 int처리를 하지 않아서 - input()으로 들어온 데이터가 실은 str로 기본적으로 처리 된다는 것을 몰라서 일어난 에러 였습니다.

 

이렇게 해서 작동이 성공적으로 되는 것을 볼 수 있었습니다. 일단 여기서 말하고자 하는 것은, 부모 프로세스에서 for문을 통해서 하나하나 자식 프로세스인 multithread2.py를 작동시켰으며, 이것에 따라서 작동을 했다는 것 입니다.

 

이렇게 해서 제대로 10개의 action_list.txt라는 활동의 증거가 나오는 것을 볼 수 있었습니다. 이제 이것으로 일단 완성은 된것 같기는 하지만, 그래도 이것만으로 부족하다는 생각이 들었습니다. 남은 작업에 대해서는 이어서 올리는 포스팅에서 어디가 문제가 되었으며, 어떻게 개선을 했는지 올려보겠습니다.

'무모한 도전-주식 인공지능 만들기' 카테고리의 다른 글

QThread의 적용 part10  (0) 2019.07.30
QThread의 적용 part9  (0) 2019.07.29
QThread의 적용 part8  (3) 2019.07.29
QThread의 적용 part7  (6) 2019.07.29
QThread의 적용 part6  (4) 2019.07.28
QThread의 적용 part5  (0) 2019.07.28
  1. 호바드 2020.03.29 21:44

    안녕하세요? 바쁘실텐데.. 자꾸 질문드려 죄송합니다...

    worker = Worker(i + (2 * j), j) 이부분에서 Worker class는 argument를 하나만 가지고 있는건데,,
    갑자기 두개 사용하는 걸로 나오는데.. 이전 단계 설명이 빠진것 같은데요...
    확인해 주실 수 있을른지요?

    그리고, Average_returning.py하고 어느순간 연결이 된것 같은데.. 이부분도 갑자기 점프가 된것 같구요..
    죄송하지만, 중간 연계과정 설명을 해 주시면 감사하겠습니다...

    • 안녕하세요?

      어쩌다보니 댓글이 늦어졌는데, 일단 실제로 주식을 거래하는 프로그램을 본격적으로 정리해서 올리고자 합니다. 그래서 이 정리하는 포스팅을 읽고서 따라오시는 것이 어떠신지요?

  2. 호바드 2020.04.03 07:56

    네네.. 감사합니다. 그게 훨씬 좋겠습니다. ㅎ

+ Recent posts