def initUI(self, widget=None): self.ui = Ui_Form() self.ui.setupUi(self) self.onToggled() self.ui.horizontalLayout.setContentsMargins(0, 0, 0, 0) self.resize(220, 40) self.setWindowFlags(QtCore.Qt.Popup) self.initMove(widget) self.ui.pushButtonSend.clicked.connect(self.onSend) self.ui.radioButtonBuy.toggled.connect(self.onToggled) pass
class OptionViewerOrderWidget(QtGui.QWidget): def __init__(self, parent=None, widget=None): QtGui.QWidget.__init__(self, parent) self.initVar() self.initUI(widget) self.logger = logging.getLogger("ZeroOptionViewer.OrderWidget") self.logger.info("Init OrderWidget") def initVar(self): self.synthfutures_dict = {} self.socket = None def initUI(self, widget=None): self.ui = Ui_Form() self.ui.setupUi(self) self.onToggled() self.ui.horizontalLayout.setContentsMargins(0, 0, 0, 0) self.resize(220, 40) self.setWindowFlags(QtCore.Qt.Popup) self.initMove(widget) self.ui.pushButtonSend.clicked.connect(self.onSend) self.ui.radioButtonBuy.toggled.connect(self.onToggled) pass def initMove(self, widget): if widget is not None: point = widget.rect().bottomRight() global_point = widget.mapToGlobal(point) self.move(global_point - QtCore.QPoint(self.width(), 0)) pass def initZMQ(self): context = zmq.Context() self.socket = context.socket(zmq.REQ) self.socket.setsockopt(zmq.RCVTIMEO, 2000) self.socket.connect("tcp://127.0.0.1:6000") pass def initOrder(self, shortcd="", price=0, qty=0, buysell=""): if isinstance(buysell, str): if buysell == "B": self.ui.radioButtonBuy.setChecked(True) self.ui.radioButtonSell.setChecked(False) elif buysell == "S": self.ui.radioButtonBuy.setChecked(False) self.ui.radioButtonSell.setChecked(True) elif isinstance(buysell, bool): self.ui.radioButtonBuy.setChecked(buysell) self.ui.radioButtonSell.setChecked(not buysell) else: return self.ui.lineEditShortCode.setText(shortcd) self.ui.doubleSpinBoxPrice.setValue(price) self.ui.spinBoxQty.setValue(qty) self.onToggled() pass def initSynthOrder(self, buysell=True, price=0, callShCode="", callPrice=0, putShCode="", putPrice=0, qty=0): self.ui.radioButtonBuy.setChecked(buysell) self.ui.radioButtonSell.setChecked(not buysell) self.ui.lineEditShortCode.setText("SNTH" + callShCode[-5:]) self.ui.doubleSpinBoxPrice.setValue(price) self.ui.spinBoxQty.setValue(qty) self.onToggled() self.synthfutures_dict = {} self.synthfutures_dict[callShCode] = callPrice self.synthfutures_dict[putShCode] = putPrice pass def onSend(self): if self.ui.radioButtonBuy.isChecked(): buysell = "B" else: buysell = "S" shortcd = str(self.ui.lineEditShortCode.text()) price = self.ui.doubleSpinBoxPrice.value() qty = self.ui.spinBoxQty.value() if shortcd[:3] in ["201", "301"]: msg_dict = {} msg_dict["ShortCD"] = shortcd msg_dict["OrderPrice"] = price msg_dict["OrderQty"] = qty msg_dict["BuySell"] = buysell msg_dict["NewAmendCancel"] = "N" msg_dict["OrderType"] = 2 # market = 1 limit = 2 msg_dict["TimeInForce"] = "GFD" if type(self.socket).__name__ == "Socket": self.logger.info("Send Order->" + str(msg_dict)) self.socket.send_pyobj(msg_dict) msg_in = self.socket.recv() self.logger.info("Recv Msg->" + msg_in) # elif shcode[:4] == 'SNTH': # for key in self.synthfutures_dict.iterkeys(): # price = self.synthfutures_dict[key] # if key[:3] == '301': bs = not buysell # elif key[:3] == '201': bs = buysell # msg = str(bs) + ',' + str(key) + ',' + str(price) + ',' + str(qty) # print msg # if type(self.socket).__name__ == 'Socket': # self.socket.send(msg) # msg_in = self.socket.recv() # print msg_in self.close() def onToggled(self): buysell = self.ui.radioButtonBuy.isChecked() if buysell: self.ui.pushButtonSend.setText("Buy") self.ui.pushButtonSend.setStyleSheet("background-color: blue; color: yellow;") elif not buysell: self.ui.pushButtonSend.setText("Sell") self.ui.pushButtonSend.setStyleSheet("background-color: red")