def initAlgoLayout(self): """""" self.lineActiveVtSymbol = QtWidgets.QLineEdit() self.linePassiveVtSymbol = QtWidgets.QLineEdit() validator = QtGui.QDoubleValidator() validator.setBottom(0) self.lineSpread = QtWidgets.QLineEdit() self.lineSpread.setValidator(validator) self.lineVolume = QtWidgets.QLineEdit() self.lineVolume.setValidator(validator) # intValidator = QtGui.QIntValidator() intValidator = QtGui.QDoubleValidator() intValidator.setBottom(10) self.lineInterval = QtWidgets.QLineEdit() self.lineInterval.setValidator(intValidator) Label = QtWidgets.QLabel grid = QtWidgets.QGridLayout() grid.addWidget(Label(u'主动腿代码'), 0, 0) grid.addWidget(self.lineActiveVtSymbol, 0, 1) grid.addWidget(Label(u'被动腿代码'), 1, 0) grid.addWidget(self.linePassiveVtSymbol, 1, 1) grid.addWidget(Label(u'套利价差'), 2, 0) grid.addWidget(self.lineSpread, 2, 1) grid.addWidget(Label(u'委托数量'), 3, 0) grid.addWidget(self.lineVolume, 3, 1) grid.addWidget(Label(u'运行间隔'), 4, 0) grid.addWidget(self.lineInterval, 4, 1) return grid
def initAlgoLayout(self): """""" self.lineVtSymbol = QtWidgets.QLineEdit() self.comboDirection = QtWidgets.QComboBox() self.comboDirection.addItem(DIRECTION_LONG) self.comboDirection.addItem(DIRECTION_SHORT) self.comboDirection.setCurrentIndex(0) doubleValidator = QtGui.QDoubleValidator() doubleValidator.setBottom(0) intValidator = QtGui.QIntValidator() intValidator.setBottom(1) self.linePrice = QtWidgets.QLineEdit() self.linePrice.setValidator(doubleValidator) self.lineVolume = QtWidgets.QLineEdit() self.lineVolume.setValidator(doubleValidator) self.lineDisplay = QtWidgets.QLineEdit() self.lineDisplay.setValidator(doubleValidator) self.lineInterval = QtWidgets.QLineEdit() self.lineInterval.setValidator(intValidator) self.comboOffset = QtWidgets.QComboBox() self.comboOffset.addItems(['', OFFSET_OPEN, OFFSET_CLOSE]) self.comboOffset.setCurrentIndex(0) buttonStart = QtWidgets.QPushButton(u'启动') buttonStart.clicked.connect(self.addAlgo) buttonStart.setMinimumHeight(100) Label = QtWidgets.QLabel grid = QtWidgets.QGridLayout() grid.addWidget(Label(u'代码'), 0, 0) grid.addWidget(self.lineVtSymbol, 0, 1) grid.addWidget(Label(u'方向'), 1, 0) grid.addWidget(self.comboDirection, 1, 1) grid.addWidget(Label(u'价格'), 2, 0) grid.addWidget(self.linePrice, 2, 1) grid.addWidget(Label(u'数量'), 3, 0) grid.addWidget(self.lineVolume, 3, 1) grid.addWidget(Label(u'挂出数量'), 4, 0) grid.addWidget(self.lineDisplay, 4, 1) grid.addWidget(Label(u'运行间隔'), 5, 0) grid.addWidget(self.lineInterval, 5, 1) grid.addWidget(Label(u'开平'), 6, 0) grid.addWidget(self.comboOffset, 6, 1) return grid
def initAlgoLayout(self): """""" self.lineVtSymbol = QtWidgets.QLineEdit() self.comboDirection = QtWidgets.QComboBox() self.comboDirection.addItem(DIRECTION_LONG) self.comboDirection.addItem(DIRECTION_SHORT) self.comboDirection.setCurrentIndex(0) doubleValidator = QtGui.QDoubleValidator() doubleValidator.setBottom(0) self.linePrice = QtWidgets.QLineEdit() self.linePrice.setValidator(doubleValidator) self.comboClosePips = QtWidgets.QComboBox() self.comboClosePips.addItems(['2', '3', '4', '5', '6', '7', '8', '9']) self.comboClosePips.setCurrentIndex(4) self.comboStopPips = QtWidgets.QComboBox() self.comboStopPips.addItems(['2', '3', '4', '5', '6', '7', '8', '9']) self.comboStopPips.setCurrentIndex(2) self.lineVolume = QtWidgets.QLineEdit() self.lineVolume.setValidator(doubleValidator) self.comboPrePips = QtWidgets.QComboBox() self.comboPrePips.addItems(['2', '3', '4', '5', '6', '7', '8', '9']) self.comboPrePips.setCurrentIndex(0) buttonStart = QtWidgets.QPushButton(u'启动') buttonStart.clicked.connect(self.addAlgo) buttonStart.setMinimumHeight(100) Label = QtWidgets.QLabel grid = QtWidgets.QGridLayout() grid.addWidget(Label(u'代码'), 0, 0) grid.addWidget(self.lineVtSymbol, 0, 1) grid.addWidget(Label(u'方向'), 1, 0) grid.addWidget(self.comboDirection, 1, 1) grid.addWidget(Label(u'价格'), 2, 0) grid.addWidget(self.linePrice, 2, 1) grid.addWidget(Label(u'数量'), 3, 0) grid.addWidget(self.lineVolume, 3, 1) grid.addWidget(Label(u'提前跳'), 4, 0) grid.addWidget(self.comboPrePips, 4, 1) grid.addWidget(Label(u'止盈跳'), 5, 0) grid.addWidget(self.comboClosePips, 5, 1) grid.addWidget(Label(u'止损跳'), 6, 0) grid.addWidget(self.comboStopPips, 6, 1) return grid
def initAlgoLayout(self): """""" self.lineStrategyName = QtWidgets.QLineEdit() self.lineVtSymbol = QtWidgets.QLineEdit() validator = QtGui.QDoubleValidator() validator.setBottom(0) intValidator = QtGui.QIntValidator() intValidator.setBottom(1) self.lineSpread = QtWidgets.QLineEdit() self.lineSpread.setValidator(validator) self.lineVolume = QtWidgets.QLineEdit() self.lineVolume.setValidator(intValidator) self.lineTradeCommand = QtWidgets.QLineEdit() self.lineInterval = QtWidgets.QLineEdit() self.lineInterval.setValidator(intValidator) Label = QtWidgets.QLabel grid = QtWidgets.QGridLayout() grid.addWidget(Label(u'价差合约'), 0, 0) grid.addWidget(self.lineVtSymbol, 0, 1) grid.addWidget(Label(u'交易命令'), 1, 0) grid.addWidget(self.lineTradeCommand, 1, 1) grid.addWidget(Label(u'套利价差'), 2, 0) grid.addWidget(self.lineSpread, 2, 1) grid.addWidget(Label(u'委托数量'), 3, 0) grid.addWidget(self.lineVolume, 3, 1) grid.addWidget(Label(u'运行间隔'), 4, 0) grid.addWidget(self.lineInterval, 4, 1) grid.addWidget(Label(u'策略名称'), 5, 0) grid.addWidget(self.lineStrategyName, 5, 1) return grid
def initUi(self): """""" self.setWindowTitle(u'交易复制') self.setMinimumWidth(700) self.setMinimumHeight(700) # 创建组件 self.lineReqAddress = QtWidgets.QLineEdit(self.REQ_ADDRESS) self.lineSubAddress= QtWidgets.QLineEdit(self.SUB_ADDRESS) self.lineRepAddress = QtWidgets.QLineEdit(self.REP_ADDRESS) self.linePubAddress = QtWidgets.QLineEdit(self.PUB_ADDRESS) validator = QtGui.QDoubleValidator() validator.setBottom(0) self.lineCopyRatio = QtWidgets.QLineEdit() self.lineCopyRatio.setValidator(validator) self.lineCopyRatio.setText(self.COPY_RATIO) validator2 = QtGui.QIntValidator() validator2.setBottom(1) self.lineInterval = QtWidgets.QLineEdit() self.lineInterval.setValidator(validator2) self.lineInterval.setText(self.INTERVAL) self.buttonProvider = QtWidgets.QPushButton(u'启动发布者') self.buttonProvider.clicked.connect(self.startProvider) self.buttonSubscriber = QtWidgets.QPushButton(u'启动订阅者') self.buttonSubscriber.clicked.connect(self.startSubscriber) self.buttonStopEngine = QtWidgets.QPushButton(u'停止') self.buttonStopEngine.clicked.connect(self.stopEngine) self.buttonStopEngine.setEnabled(False) self.buttonResetAddress = QtWidgets.QPushButton(u'重置地址') self.buttonResetAddress.clicked.connect(self.resetAddress) self.logMonitor = QtWidgets.QTextEdit() self.logMonitor.setReadOnly(True) self.widgetList = [ self.lineCopyRatio, self.lineInterval, self.linePubAddress, self.lineSubAddress, self.lineRepAddress, self.lineReqAddress, self.buttonProvider, self.buttonSubscriber, self.buttonResetAddress ] # 布局 QLabel = QtWidgets.QLabel grid = QtWidgets.QGridLayout() grid.addWidget(QLabel(u'响应地址'), 0, 0) grid.addWidget(self.lineRepAddress, 0, 1) grid.addWidget(QLabel(u'请求地址'), 0, 2) grid.addWidget(self.lineReqAddress, 0, 3) grid.addWidget(QLabel(u'发布地址'), 1, 0) grid.addWidget(self.linePubAddress, 1, 1) grid.addWidget(QLabel(u'订阅地址'), 1, 2) grid.addWidget(self.lineSubAddress, 1, 3) grid.addWidget(QLabel(u'发布间隔(秒)'), 2, 0) grid.addWidget(self.lineInterval, 2, 1) grid.addWidget(QLabel(u'复制比例(倍)'), 2, 2) grid.addWidget(self.lineCopyRatio, 2, 3) grid.addWidget(self.buttonProvider, 3, 0, 1, 2) grid.addWidget(self.buttonSubscriber, 3, 2, 1, 2) grid.addWidget(self.buttonStopEngine, 4, 0, 1, 2) grid.addWidget(self.buttonResetAddress, 4, 2, 1, 2) grid.addWidget(self.logMonitor, 5, 0, 1, 4) self.setLayout(grid)
def initUi(self): """初始化界面""" self.setWindowTitle(vtText.TRADING) self.setFixedHeight(400) self.setFixedWidth(600) self.setFrameShape(self.Box) # 设置边框 self.setLineWidth(1) # 左边部分 labelPriceType = QtWidgets.QLabel(vtText.PRICE_TYPE) labelSymbol = QtWidgets.QLabel(u'VT代码') labelPrice = QtWidgets.QLabel(vtText.PRICE) labelVolume = QtWidgets.QLabel(u'数量') labelOffset = QtWidgets.QLabel(vtText.OFFSET) self.comboPriceType = QtWidgets.QComboBox() self.comboPriceType.addItems(self.priceTypeList) self.lineSymbol = QtWidgets.QLineEdit() validator = QtGui.QDoubleValidator() validator.setBottom(0) self.linePrice = QtWidgets.QLineEdit() self.linePrice.setValidator(validator) self.lineVolume = QtWidgets.QLineEdit() self.lineVolume.setValidator(validator) self.comboOffset = QtWidgets.QComboBox() self.comboOffset.addItems(self.offsetList) gridLeft = QtWidgets.QGridLayout() gridLeft.addWidget(labelPriceType, 0, 0) gridLeft.addWidget(labelSymbol, 1, 0) gridLeft.addWidget(labelPrice, 2, 0) gridLeft.addWidget(labelVolume, 3, 0) gridLeft.addWidget(labelOffset, 4, 0) gridLeft.addWidget(self.comboPriceType, 0, 1) gridLeft.addWidget(self.lineSymbol, 1, 1) gridLeft.addWidget(self.linePrice, 2, 1) gridLeft.addWidget(self.lineVolume, 3, 1) gridLeft.addWidget(self.comboOffset, 4, 1) # 右边部分 self.depthMonitor = DepthMonitor(self.mainEngine, self.eventEngine) # 发单按钮 buttonBuy = QtWidgets.QPushButton(u'买/多') buttonSell = QtWidgets.QPushButton(u'卖/空') buttonCancelAll = QtWidgets.QPushButton(vtText.CANCEL_ALL) size = buttonBuy.sizeHint() buttonBuy.setMinimumHeight(size.height()*2) buttonSell.setMinimumHeight(size.height()*2) buttonCancelAll.setMinimumHeight(size.height()*2) buttonBuy.clicked.connect(self.sendBuyOrder) buttonSell.clicked.connect(self.sendSellOrder) buttonCancelAll.clicked.connect(self.cancelAll) buttonBuy.setStyleSheet('color:white;background-color:red') buttonSell.setStyleSheet('color:white;background-color:green') buttonCancelAll.setStyleSheet('color:black;background-color:yellow') gridButton = QtWidgets.QGridLayout() gridButton.addWidget(buttonBuy, 0, 0) gridButton.addWidget(buttonSell, 0, 1) gridButton.addWidget(buttonCancelAll, 1, 0, 1, 2) # 整合布局 vbox = QtWidgets.QVBoxLayout() vbox.addLayout(gridLeft) vbox.addLayout(gridButton) hbox = QtWidgets.QHBoxLayout() hbox.addLayout(vbox) hbox.addWidget(self.depthMonitor) self.setLayout(hbox) # 关联更新 self.lineSymbol.returnPressed.connect(self.updateSymbol) self.depthMonitor.itemDoubleClicked.connect(self.updatePrice)