def __init__(self, order_port=6001): super(OrderListDialog, self).__init__() self.ui = Ui_Dialog() self.ui.setupUi(self) self.ui.pushButton.clicked.connect(self.on_update_list) self.ui.tableWidget.setEditTriggers( QtGui.QAbstractItemView.NoEditTriggers) self.ui.tableWidget.resizeRowsToContents() for i in range(self.ui.tableWidget.columnCount()): if i != 3: self.ui.tableWidget.resizeColumnToContents(i) self.ui.tableWidget.setColumnWidth(5, 80) self.ui.tableWidget.cellDoubleClicked.connect( self.on_cell_double_clicked) self.logger = logging.getLogger('ZeroOMS.OrderListDlg') self.logger.info('Init OrderListDlg') self.order_port = order_port self.init_zmq() nowtime = time.localtime() strtime = time.strftime('%Y%m%d', nowtime) self.strdbname = ''
def __init__(self, order_port=6001): super(OrderListDialog, self).__init__() self.ui = Ui_Dialog() self.ui.setupUi(self) self.ui.pushButton.clicked.connect(self.OnUpdateList) self.ui.tableWidget.setEditTriggers(QtGui.QAbstractItemView.NoEditTriggers) self.ui.tableWidget.resizeRowsToContents() for i in range(self.ui.tableWidget.columnCount()): if i != 3: self.ui.tableWidget.resizeColumnToContents(i) self.ui.tableWidget.cellDoubleClicked.connect(self.OnCellDoubleClicked) self.order_port = order_port self.init_zmq() nowtime = time.localtime() strtime = time.strftime('%Y%m%d',nowtime) self.strdbname = ''
class OrderListDialog(QtGui.QDialog): def __init__(self, order_port=6001): super(OrderListDialog, self).__init__() self.ui = Ui_Dialog() self.ui.setupUi(self) self.ui.pushButton.clicked.connect(self.OnUpdateList) self.ui.tableWidget.setEditTriggers(QtGui.QAbstractItemView.NoEditTriggers) self.ui.tableWidget.resizeRowsToContents() for i in range(self.ui.tableWidget.columnCount()): if i != 3: self.ui.tableWidget.resizeColumnToContents(i) self.ui.tableWidget.cellDoubleClicked.connect(self.OnCellDoubleClicked) self.order_port = order_port self.init_zmq() nowtime = time.localtime() strtime = time.strftime('%Y%m%d',nowtime) self.strdbname = '' # if nowtime.tm_hour >= 6 and nowtime.tm_hour < 16: # self.strdbname = "orderlist_%s.db" %(strtime) # elif nowtime.tm_hour >= 16: # self.strdbname = "orderlist_night_%s.db" %(strtime) # elif nowtime.tm_hour < 6: # strtime = "%d%.2d%.2d" %(nowtime.tm_year,nowtime.tm_mon,nowtime.tm_mday-1) # self.strdbname = "orderlist_night_%s.db" %(strtime) # # self.strdbname = 'C:/Python/' + self.strdbname def __del__(self): if not self.socket.closed: self.socket.close() pass def init_zmq(self): context = zmq.Context() self.socket = context.socket(zmq.REQ) self.socket.connect("tcp://127.0.0.1:%d" % self.order_port) def OnUpdateList(self): if os.path.isfile(self.strdbname): conn_db = lite.connect(self.strdbname) cursor_db = conn_db.cursor() cursor_db.execute('SELECT * FROM OrderList Order by ID DESC') col_names = [cn[0] for cn in cursor_db.description] rows = cursor_db.fetchall() self.ui.tableWidget.setRowCount(len(rows)) self.ui.tableWidget.resizeRowsToContents() # print "%s %s %2s %-25s %-7s %-8s %-9s %-4s %-5s %-5s %-12s %-5s" % tuple(col_names) # for row in rows: # print "%s %2s %5s %-25s %-7s %-8s %-9s %-4s %-5s %-5s %-12s %-5s" % row rownum = 0 for row in rows: for j in range(2, len(row)): if row[j]: self.ui.tableWidget.setItem(rownum,j-2,QtGui.QTableWidgetItem(row[j])) elif not row[j]: self.ui.tableWidget.setItem(rownum,j-2,QtGui.QTableWidgetItem('')) rownum = rownum + 1 conn_db.close() pass def OnCellDoubleClicked(self,row,col): type1 = self.ui.tableWidget.item(row,8).text() if col == 0 and (type1 == 'limit'): orgordno = self.ui.tableWidget.item(row,col).text() conn_db = lite.connect(self.strdbname) cursor_db = conn_db.cursor() cursor_db.execute("""Select ShortCD,UnExecQty From OrderList WHERE OrdNo = ? and Type1 = ? """, (str(orgordno), str(type1),)) rows = cursor_db.fetchall() cursor_db.close() if len(rows) == 1: row = rows[0] shortcd = row[0] unexecqty = row[1] if unexecqty > 0: # msg = str('cancl') + ',' + str(shcode) + ',' + str(price) + ',' + str(unexecqty) + ',' + str(ordno) # self.socket.send(msg) msg_dict = {} msg_dict['ShortCD'] = shortcd msg_dict['OrderQty'] = unexecqty msg_dict['NewAmendCancel'] = 'C' msg_dict['OrgOrderNo'] = orgordno self.socket.send_pyobj(msg_dict) msg_in = self.socket.recv() print msg_in else: print 'rows > 1 @ orderlistdlgCanclOrder' pass
class OrderListDialog(QtGui.QWidget): def __init__(self, order_port=6001): super(OrderListDialog, self).__init__() self.ui = Ui_Dialog() self.ui.setupUi(self) self.ui.pushButton.clicked.connect(self.on_update_list) self.ui.tableWidget.setEditTriggers( QtGui.QAbstractItemView.NoEditTriggers) self.ui.tableWidget.resizeRowsToContents() for i in range(self.ui.tableWidget.columnCount()): if i != 3: self.ui.tableWidget.resizeColumnToContents(i) self.ui.tableWidget.setColumnWidth(5, 80) self.ui.tableWidget.cellDoubleClicked.connect( self.on_cell_double_clicked) self.logger = logging.getLogger('ZeroOMS.OrderListDlg') self.logger.info('Init OrderListDlg') self.order_port = order_port self.init_zmq() nowtime = time.localtime() strtime = time.strftime('%Y%m%d', nowtime) self.strdbname = '' # if nowtime.tm_hour >= 6 and nowtime.tm_hour < 16: # self.strdbname = "orderlist_%s.db" %(strtime) # elif nowtime.tm_hour >= 16: # self.strdbname = "orderlist_night_%s.db" %(strtime) # elif nowtime.tm_hour < 6: # strtime = "%d%.2d%.2d" %(nowtime.tm_year,nowtime.tm_mon,nowtime.tm_mday-1) # self.strdbname = "orderlist_night_%s.db" %(strtime) # # self.strdbname = 'C:/Python/' + self.strdbname def __del__(self): if not self.socket.closed: self.socket.close() pass def init_zmq(self): context = zmq.Context() self.socket = context.socket(zmq.REQ) self.socket.connect("tcp://127.0.0.1:%d" % self.order_port) def init_dbname(self, strdbname): self.strdbname = strdbname self.conn_db = lite.connect(self.strdbname) self.cursor_db = self.conn_db.cursor() def on_update_list(self): if not os.path.isfile(self.strdbname): return self.cursor_db.execute('SELECT * FROM OrderList Order by ID DESC') # col_names = [cn[0] for cn in self.cursor_db.description] rows = self.cursor_db.fetchall() self.ui.tableWidget.setRowCount(len(rows)) self.ui.tableWidget.resizeRowsToContents() # print "%s %s %2s %-25s %-7s %-8s %-9s %-4s %-5s %-5s %-12s %-5s" % tuple(col_names) # for row in rows: # print "%s %2s %5s %-25s %-7s %-8s %-9s %-4s %-5s %-5s %-12s %-5s" % row rownum = 0 for row in rows: for j in range(2, len(row)): if row[j]: self.ui.tableWidget.setItem(rownum, j - 2, QtGui.QTableWidgetItem(row[j])) elif not row[j]: self.ui.tableWidget.setItem(rownum, j - 2, QtGui.QTableWidgetItem('')) rownum = rownum + 1 self.adjust_transaction_reversion() pass def on_cell_double_clicked(self, row, col): type1 = self.ui.tableWidget.item(row, 8).text() if col == 0 and (type1 == 'limit'): orgordno = self.ui.tableWidget.item(row, col).text() # conn_db = lite.connect(self.strdbname) self.cursor_db = self.conn_db.cursor() self.cursor_db.execute( """Select ShortCD,UnExecQty From OrderList WHERE OrdNo = ? and Type1 = ? """, ( str(orgordno), str(type1), )) rows = self.cursor_db.fetchall() # cursor_db.close() if len(rows) == 1: row = rows[0] shortcd = row[0] unexecqty = row[1] if unexecqty > 0: # msg = str('cancl') + ',' + str(shcode) + ',' + str(price) + ',' + str(unexecqty) + ',' + str(ordno) # self.socket.send(msg) msg_dict = {} msg_dict['ShortCD'] = shortcd msg_dict['OrderQty'] = unexecqty msg_dict['NewAmendCancel'] = 'C' msg_dict['OrgOrderNo'] = orgordno self.socket.send_pyobj(msg_dict) msg_in = self.socket.recv() print msg_in else: print 'rows > 1 @ orderlistdlgCanclOrder' pass def adjust_transaction_reversion(self): sqltext = """ SELECT OrdNo, Qty FROM OrderList WHERE UnExecQty > 0 AND -- OrdNo = 5510 AND ChkReq IN ('00040', '00039') """ self.cursor_db.execute(sqltext) rows = self.cursor_db.fetchall() for row in rows: orgordno = row[0] orderqty = row[1] sqltext = """ SELECT SUM(ExecPrice * ExecQty), SUM(ExecQty), COUNT(ExecQty) FROM OrderList WHERE OrgOrdNo = %s AND ExecQty > 0 AND IFNULL(ChkReq,'') = '' """ % orgordno self.cursor_db.execute(sqltext) exec_row = self.cursor_db.fetchone() if exec_row[2] == 0: continue exec_qty_sum = exec_row[1] avg_exec_price = float(exec_row[0]) / exec_qty_sum unexecqty = int(orderqty) - int(exec_qty_sum) # print avg_exec_price, exec_qty_sum, unexecqty self.logger.info('adjust execqty of ordno-> %s' % orgordno) self.cursor_db.execute( """Update OrderList Set ExecPrice=?, ExecQty=?, UnExecQty=? WHERE OrdNo=? AND ChkReq IN ('00040', '00039') """, (str(avg_exec_price), str(exec_qty_sum), str(unexecqty), orgordno)) self.conn_db.commit() pass