본문 바로가기
파이썬

PyTrader 구현 2일차

by 소프트 디퓨저 2020. 10. 20.

주문 절차

 

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

댓글