주문 절차
1. SendOrder 메소드를 통해 주문 전송
2. 이벤트 루프를 통해 체결 대기 (감시)
3. 체결 완료 시 증권사 서버는 OnReceiveChejanData 발생
4. GetChejanData 메서드를 통해 체결잔고 데이터 받아 옴
# Error 1
accouns_num = int(self.kiwoom_obj.get_login_info("ACCOUNT_CNT"))
accounts = self.kiwoom_obj.get_login_info("ACCNO")
account_list = accounts.split(";")[0:accouns_num]
self.comboBox.addItems(account_list)
계좌를 받아와서 comboBox에 넣는 구문인데 위의 구문을 __init__(self): 안에 넣어야 하는데
밖에 넣을 경우 pytrader가 실행되어 있는 동안에는 계좌를 계속 받아와서 덧붙이고 덧붙이고 하게 됨
(comboBox 안에 무한으로 동일 계좌가 추가 됨)
# Error 2
self.lineEdit.textChanged.connect(self.code_changed)
self.pushButton.clicked.connect(self.send_order)
이벤트 발생 시 호출된 메소드를 연결해주는 (slot 지정) code 인데 이 code 도 __init__(self): 안에 넣어야 함
* 클래스를 초기화 할때 가져와야 할 값, 연결해줘야 하는 이벤트와 메소드는 모두 __init__(self): 에 작성
# Error 3
File "C:/py/temp.py ", line 27, in __init__
self.lineEdit.textChanged.connect(self.code_changed)
AttributeError: 'MyWindow' object has no attribute 'code_changed'
위의 에러는 메소드 작성 시 들여쓰기를 잘못해서 발생 했음
def ← 이부분 줄맞추기 잘 해야 함
# Error 4
code = self.lineEdit.text()
lineEdit 의 text를 가져오는 메소드 인데... 여기서 값을 가져 오지 못하고 pyTrader가 뻗음
QT Designer 에서 QlineEdit 를 다시 꺼내와서 적용하니 code = self.lineEdit.text() 는 정상 작동
왜 해결됐는지 모르겠음....
self.dynamicCall("SendOrder(QString, QString, QString, int, QString, int, int, QString, QString)", [rqname, screen_no, acc_no, order_type, code, quantity, price, hoga, order_no])
# 주식주문 Tran을 송신하는 메소드 / return 값 없음
ret = self.dynamicCall("GetChejanData(int)", fid)
# 체결잔고 데이터를 반환하는 메소드
ret = self.dynamicCall("GetLoginInfo(QString)",tag)
#로그인 정보를 반환하는 메소드
'파이썬' 카테고리의 다른 글
PyTrader 구현 5일차 - 급등주 찾기 (0) | 2020.11.04 |
---|---|
PyTrader 구현 4일차 (0) | 2020.10.29 |
PyTrader 구현 3-2일차 (0) | 2020.10.28 |
PyTrader 구현 3-1일차 (0) | 2020.10.21 |
PyTrader 구현 1일차 (0) | 2020.10.19 |
댓글