안녕하세요?

 

지난번 포스팅에서 무언가 잘못 되어서 py파일간, 클래스간 변수를 옮겨서 전달하는 것이 실패하기는 했습니다. 그래서 자료를 검색해 봐서, 한번 이번 포스팅에서 그 오류를 바로 잡고, 단순히 agent.py에서 매수/매도/관망 만이 아니라 얼마나 많은 수식을 거래할 지에 대해서 결정한 결과도 옮기도록 해 보고자 합니다.

 

먼저 자료를 검색해 보니, 이렇게 클래스 안에서 변수를 선언하기 위해서는 클래스명.변수명 이러는 식으로 변수를 스크립트 파일이 시작하자 마자 나오는 메서드에서 설정을 해 주도록 해 봅니다.

 

그리고 나서 이 변수를 기존에 self라고 붙어 있던 자리에서 바꾸어서 지정을 해 보도록 합니다. 이렇게 앞에 클래스명을 붙이는 것으로 그 클래스에서 대표적인 변수가라고 해야할까요? 일단 대표선수처럼 변수를 선언할 수 있습니다.

 

그리고 나서 이 결과를 한번 위 스크린샷처럼 Debug에서 나왔을 때, 제대로 나왔는 것을 볼 수 있기는 있었습니다. 일단 여기서는 매수라는 결과가 드디어 agent.py를 뛰어서 main.py로 옮겨온 것을 볼 수 있습니다.

 

이제서야 제대로 print()함수로 그 값이 나오는 것을 확인할 수 있기는 있었습니다. 이렇게 해서 이제 표시가 되니까, 부모 프로세스로 전달이 되면 OK인 겁니다.

 

 

먼저 main.py에서 나오는 주석처리를 변경해서 부모 프로세스에서 나오는 정보를 받을 준비를 해 주도록 만들어 줍니다.

 

일단 이전에서는 아무런 결과도 나오지 않았던 것에 비해서 이제는 결과가 나오는 것을 확인할 수 있었습니다. 그래서 이제 이 결과를 어떻게 알아보기 쉬운 코드로 바꾸어야 하는 문제가 이제 남아 있습니다.

 

일단 stdout의 결과를 변수에 담고, 이 변수에다가 decode()함수를 이용해서 인코딩한 것을 다시 역 코딩 시켜서 알아보기 쉽도록 바꾸어 주도록 합니다.

 

이제서야 제대로 알아보기 쉬운 형태로 나오는 것을 확인할 수 있기는 있었습니다. 이제 남은 것은 RLTrader에서 어떤 액션을 할지 결정을 했는데, 그러면 얼마나 많은 주식의 양을 거래할 것인지에 대해서 그 수량 정보를 RLTrader에서 가져올 필요가 있어 보입니다.

 

먼저 def __init__()메서드 밖에서 먼저 클래스 변수를 선언해 주도록 합니다. 이번에는 문자열이 아니라 숫자가 들어갈 것이기 때문에 일단 0이라고 숫자를 입력해 줍니다.

 

그리고 나서 def __init__():에서 위 스크린샷에서 나오는 것처럼 클래스명.변수명 을 붙여서 변수의 값을 선언해 주도록 합니다.

 

그리고 나서 이 거래할 수량을 위 스크린샷처럼 가지가지 결정이 나온 곳 아래에 trading_unit을 가지고 오도록 해 봅니다.

 

그리고 나서 main.py에 가서, 위 스크린샷처럼 Agent클래스의 거래할 주식의 량을 나타내는 변수를 한번 가지고 오도록 해 봅니다. 그리고 관련된 값이 print()함수로 표시가 되도록 합니다.

 

그래서 이제는 거래할 주식의 양이 나오는 것을 볼 수 있었습니다. 이제 이것으로 거래할 주식의 수량까지 어떻게 가지고 오는 데는 성공했기 때무에 이제는 이걸 어떻게 더 깔끔하게 다듬고, 이를 계속해서 어떻게 결정을 하는 데 까지 나와야 한다는 것이 남아 있습니다. 아직 이 장애물을 모의투자가 가능한 수준까지 간 것은 아니긴 합니다.

  1. 호바드 2020.02.16 22:35

    안녕하세요?
    windos10이라서 그런지..

    if sys.platform.startswith("win"):
    import ctypes
    SEN_NOGPFAULTERRORBOX = 0x0002 # From MSDN
    ctypes.windll.kernel32.SetErrorMode(SEN_NOGPFAULTERRORBOX);
    subprocess_flags = 0x8000000
    else:
    subprocess_flags = 0
    이 부분이 에러납니다.
    win10 기준으로 flag 위치를 조정해 줘야 하지 않을까 싶습니다...

    • 안녕하세요?

      저도 윈도우10에서 작동시키는 것은 아직 해보지 않았는데, 일단 다른 프로그램에서는 그럭저럭 잘 작동이 되는 것을 확인한 것 같기도 합니다. 그래서 다른 곳에서 문제가 생긴게 아닌가 하는 생각이 듭니다만, 일단 저로서는 에러 메세지를 보기 전 까지는 무어라 말을 못하겠습니다.

+ Recent posts