728x90

지난 포스팅에서는 개발방향에 대해서 소개를 하였다.

이번 포스팅에서는 바뀐 개발방향에 따라 어떤 기능을 개발하고 있는지 소개하려고 한다.

https://github.com/yujin37/Auto_Trading

 

GitHub - yujin37/Auto_Trading: CodeCure 주식자동매매기 개발 (22.3~ ing)

CodeCure 주식자동매매기 개발 (22.3~ ing). Contribute to yujin37/Auto_Trading development by creating an account on GitHub.

github.com

 

pyqt designer을 통한 GUI 배치

 

이전에는 코드 상에서 하나하나 위치를 직접 배치했다. GUI를 따로 작업안하고 코드 상에서 바로 할 수 있다는 점은 좋았지만 배치하는데에 어려움이 있었다. 실행해서 직접 위치를 확인했다. 이건 시간이 많이 걸리는 작업이었다.

 

그래서 이번에는 자료를 보면서 따라갔다.

https://wikidocs.net/5858

 

3) PyTrader 구현

이번 절에서는 그림 18.1의 PyTrader 프로그램을 만들어 보겠습니다. 가장 먼저 할 일은 Qt Designer를 이용해 메인 윈도우를 만드는 것입니다. 아직은 윈도우 ...

wikidocs.net

이 내용이 pytrader.py 작업하기 위한 ui를 만드는 내용이다.

처음에는 배치하고 방식을 이해하는데에 시간이 좀 걸렸다. 그렇지만 한번 만들고나니 버튼을 추가하고 그룹을 묶는 등의 작업등이 매우 쉬워졌다. anaconda에서 designer라고 입력하면 ui를 작업 할 수 있는 pyqt designer가 열리게 된다.

작업하고 나서 저장하면 pytrader에서 연결된 ui 파일에 따라 프로그램 실행 시 바로 보인다.

 

매수, 매도, 잔고조회

 

이 부분은 그대로 책의 내용을 따라갔다. 

https://wikidocs.net/5858

 

3) PyTrader 구현

이번 절에서는 그림 18.1의 PyTrader 프로그램을 만들어 보겠습니다. 가장 먼저 할 일은 Qt Designer를 이용해 메인 윈도우를 만드는 것입니다. 아직은 윈도우 ...

wikidocs.net

앞에 링크한 것과 같은데 여기에 일차별로 다 따라가서 만들었다.

매수 알고리즘이랑 매수, 매도 주문 넣는 것을 참고하였다.

 

자동 매도 알고리즘

 

이 부분은 순수하게 직접 개발했다.

위 위키독스 책에는 급등주 매수밖에 내용이 없었기 때문이다. 

매도는 사실 급등주보다는 수익률에 기반한 것이 대부분이다. 그렇기 때문에 수익을 일정 비율 이상 얻게 되면 팔도록 하는 것이 맞다는 생각이 들었다. 그리고 이 수익률을 어떻게 가져올지 생각을 하였다. 새로운 함수를 만들어서 하는 방법도 있긴 하지만 이건 아직 능력이 부족하기도 하고 에러도 많이 났다.

가장 현실적인 방법은 잔고조회의 종목별 수익 코드 활용이었다. 여기에 기존에는 종목코드가 없었는데 코드를 수정해 종목코드를 가져오게 했다. 그리고 여기에 있는 수익률을 가져왔다. 그래서 일정 비율이상 넘어가면 매도 리스트 파일에 추가하도록 하는 리스트로 담아주었다. 이건 각 종목에 대해 따로 진행할 수 없다는 것이 단점이지만 기본적인 수익 매도는 가능하지 않을까 싶다.

 

자동 매수, 매도 시 진행 함수 수정

 

기존에 자료에서는 단 한번만 매수, 매도를 진행했다. 이것의 치명적인 문제였다. 계속 진행해야 하는데 한번하면 끝나버리니 이걸 수정해주어야 했다. 방법은 trade_stocks_done을 True로 설정해 잠근 후에 주문하고, 파일 내용을 바꾼 후 다시 초기 상태, trade_stocks_done을 False를 해주어야 한다. 그러면 계속 함수가 실행될 수 있게 된다.

 

 

이렇게 현재는 기능들을 구현하고 있다. 이후에 진행할 기능들은 체결, 미체결 현황 조회, 주문과 관련해서 속도를 빠르게 하기위한 작업, 차트조회이다. 이 부분도 차례대로 구현할 예정이다.

 

다음 포스팅에서는 키움api와 관련해 스레드, 멀티프로세싱 관련 이야기를 하도록 하겠다.

728x90

+ Recent posts