def initUi(self): """初始化界面""" self.setWindowTitle(u'CTA Strategy') # 按钮 loadButton = QtWidgets.QPushButton(u'Load Strategy') updateMCButton = QtWidgets.QPushButton(u'Update Margin/Commission') loadButton.clicked.connect(self.load) updateMCButton.clicked.connect(self.updateMC) # 滚动区域,放置所有的ArbStrategyManager self.scrollArea = QtWidgets.QScrollArea() self.scrollArea.setWidgetResizable(True) # ARB组件的日志监控 self.arbLogMonitor = QtWidgets.QTextEdit() self.arbLogMonitor.setReadOnly(True) self.arbLogMonitor.setMaximumHeight(200) # 设置布局 hbox2 = QtWidgets.QHBoxLayout() hbox2.addWidget(loadButton) hbox2.addWidget(updateMCButton) hbox2.addStretch() vbox = QtWidgets.QVBoxLayout() vbox.addLayout(hbox2) vbox.addWidget(self.scrollArea) vbox.addWidget(self.arbLogMonitor) self.setLayout(vbox)
def initUi(self): """初始化界面""" self.setWindowTitle(u'行情数据记录工具') # 记录合约配置监控 tickLabel = QtWidgets.QLabel(u'Tick记录') self.tickTable = QtWidgets.QTableWidget() self.tickTable.setColumnCount(2) self.tickTable.verticalHeader().setVisible(False) self.tickTable.setEditTriggers(QtWidgets.QTableWidget.NoEditTriggers) self.tickTable.horizontalHeader().setResizeMode( QtWidgets.QHeaderView.Stretch) self.tickTable.setAlternatingRowColors(True) self.tickTable.setHorizontalHeaderLabels([u'合约代码', u'接口']) barLabel = QtWidgets.QLabel(u'Bar记录') self.barTable = QtWidgets.QTableWidget() self.barTable.setColumnCount(2) self.barTable.verticalHeader().setVisible(False) self.barTable.setEditTriggers(QtWidgets.QTableWidget.NoEditTriggers) self.barTable.horizontalHeader().setResizeMode( QtWidgets.QHeaderView.Stretch) self.barTable.setAlternatingRowColors(True) self.barTable.setHorizontalHeaderLabels([u'合约代码', u'接口']) activeLabel = QtWidgets.QLabel(u'主力合约') self.activeTable = QtWidgets.QTableWidget() self.activeTable.setColumnCount(2) self.activeTable.verticalHeader().setVisible(False) self.activeTable.setEditTriggers(QtWidgets.QTableWidget.NoEditTriggers) self.activeTable.horizontalHeader().setResizeMode( QtWidgets.QHeaderView.Stretch) self.activeTable.setAlternatingRowColors(True) self.activeTable.setHorizontalHeaderLabels([u'主力代码', u'合约代码']) # 日志监控 self.logMonitor = QtWidgets.QTextEdit() self.logMonitor.setReadOnly(True) self.logMonitor.setMinimumHeight(600) # 设置布局 grid = QtWidgets.QGridLayout() grid.addWidget(tickLabel, 0, 0) grid.addWidget(barLabel, 0, 1) grid.addWidget(activeLabel, 0, 2) grid.addWidget(self.tickTable, 1, 0) grid.addWidget(self.barTable, 1, 1) grid.addWidget(self.activeTable, 1, 2) vbox = QtWidgets.QVBoxLayout() vbox.addLayout(grid) vbox.addWidget(self.logMonitor) self.setLayout(vbox)
def initUi(self): """初始化界面""" self.setWindowTitle(text.CTA_STRATEGY) # 按钮 loadButton = QtWidgets.QPushButton(text.LOAD_STRATEGY) initAllButton = QtWidgets.QPushButton(text.INIT_ALL) startAllButton = QtWidgets.QPushButton(text.START_ALL) stopAllButton = QtWidgets.QPushButton(text.STOP_ALL) loadButton.clicked.connect(self.load) initAllButton.clicked.connect(self.initAll) startAllButton.clicked.connect(self.startAll) stopAllButton.clicked.connect(self.stopAll) # 滚动区域,放置所有的CtaStrategyManager self.scrollArea = QtWidgets.QScrollArea() self.scrollArea.setWidgetResizable(True) # CTA组件的日志监控 self.ctaLogMonitor = QtWidgets.QTextEdit() self.ctaLogMonitor.setReadOnly(True) self.ctaLogMonitor.setMaximumHeight(200) # 设置布局 hbox2 = QtWidgets.QHBoxLayout() hbox2.addWidget(loadButton) hbox2.addWidget(initAllButton) hbox2.addWidget(startAllButton) hbox2.addWidget(stopAllButton) hbox2.addStretch() vbox = QtWidgets.QVBoxLayout() vbox.addLayout(hbox2) vbox.addWidget(self.scrollArea) vbox.addWidget(self.ctaLogMonitor) self.setLayout(vbox) self.resize(1024, 800) #ROBINLIN # ROBINLIN 窗口显示后,立即加载和初始化策略。 self.load() self.initAll() self.startAll()
def initUi(self): """初始化界面""" self.setWindowTitle(text.CTA_STRATEGY) # 按钮 loadButton = QtWidgets.QPushButton(text.LOAD_STRATEGY) initAllButton = QtWidgets.QPushButton(text.INIT_ALL) startAllButton = QtWidgets.QPushButton(text.START_ALL) stopAllButton = QtWidgets.QPushButton(text.STOP_ALL) savePositionButton = QtWidgets.QPushButton(text.SAVE_POSITION_DATA) loadButton.clicked.connect(self.load) initAllButton.clicked.connect(self.initAll) startAllButton.clicked.connect(self.startAll) stopAllButton.clicked.connect(self.stopAll) savePositionButton.clicked.connect(self.ctaEngine.savePosition) # 滚动区域,放置所有的CtaStrategyManager self.scrollArea = QtWidgets.QScrollArea() self.scrollArea.setWidgetResizable(True) # CTA组件的日志监控 self.ctaLogMonitor = QtWidgets.QTextEdit() self.ctaLogMonitor.setReadOnly(True) self.ctaLogMonitor.setMaximumHeight(200) # 设置布局 hbox2 = QtWidgets.QHBoxLayout() hbox2.addWidget(loadButton) hbox2.addWidget(initAllButton) hbox2.addWidget(startAllButton) hbox2.addWidget(stopAllButton) hbox2.addWidget(savePositionButton) hbox2.addStretch() vbox = QtWidgets.QVBoxLayout() vbox.addLayout(hbox2) vbox.addWidget(self.scrollArea) vbox.addWidget(self.ctaLogMonitor) self.setLayout(vbox)
def initUi(self): """初始化界面""" self.setWindowTitle(u'期权策略') # 按钮 loadButton = QtWidgets.QPushButton(u'加载策略') initAllButton = QtWidgets.QPushButton(u'全部初始化') startAllButton = QtWidgets.QPushButton(u'全部启动') stopAllButton = QtWidgets.QPushButton(u'全部停止') loadButton.clicked.connect(self.load) initAllButton.clicked.connect(self.initAll) startAllButton.clicked.connect(self.startAll) stopAllButton.clicked.connect(self.stopAll) # 滚动区域,放置所有的StrategyManager self.scrollArea = QtWidgets.QScrollArea() self.scrollArea.setWidgetResizable(True) # 日志监控 self.ctaLogMonitor = QtWidgets.QTextEdit() self.ctaLogMonitor.setReadOnly(True) self.ctaLogMonitor.setMaximumHeight(200) # 设置布局 hbox2 = QtWidgets.QHBoxLayout() hbox2.addWidget(loadButton) hbox2.addWidget(initAllButton) hbox2.addWidget(startAllButton) hbox2.addWidget(stopAllButton) hbox2.addStretch() vbox = QtWidgets.QVBoxLayout() vbox.addLayout(hbox2) vbox.addWidget(self.scrollArea) vbox.addWidget(self.ctaLogMonitor) self.setLayout(vbox)
def initUi(self): """初始化界面""" # 1) 服务端级别按钮, btnConnectRpcServer = QtWidgets.QPushButton(u'Connect {0}'.format( self.name)) btnActivateGateWayConnection = QtWidgets.QPushButton(u'activate CTP') btnDeactivateGateway = QtWidgets.QPushButton(u'Deactivate CTP') btnQryStatus = QtWidgets.QPushButton(u'Qry Status') btnConnectRpcServer.clicked.connect(self.connect_rpc_server) btnActivateGateWayConnection.clicked.connect( self.activate_gateway_connection) btnDeactivateGateway.clicked.connect( self.deactivate_gateway_connection) btnQryStatus.clicked.connect(self.qryStatus) hbox1 = QtWidgets.QHBoxLayout() hbox1.addWidget(btnConnectRpcServer) hbox1.addWidget(btnActivateGateWayConnection) hbox1.addWidget(btnDeactivateGateway) hbox1.addWidget(btnQryStatus) self.chkCritical = QtWidgets.QCheckBox('Critical') self.chkCritical.setChecked(True) self.chkError = QtWidgets.QCheckBox('Error') self.chkError.setChecked(True) self.chkWarning = QtWidgets.QCheckBox('Warning') self.chkWarning.setChecked(True) self.chkCtaLog = QtWidgets.QCheckBox('CtaLog') self.chkCtaLog.setChecked(True) self.chkTicks = QtWidgets.QCheckBox('Ticks') self.chkTicks.setChecked(False) self.chkSignal = QtWidgets.QCheckBox('Signal') self.chkSignal.setChecked(True) hbox1.addWidget(self.chkCritical) hbox1.addWidget(self.chkError) hbox1.addWidget(self.chkWarning) hbox1.addWidget(self.chkCtaLog) hbox1.addWidget(self.chkTicks) hbox1.addWidget(self.chkSignal) hbox1.addStretch() self.server_info_monitor = ServerInfoWidget() # 滚动区域,放置所有的CtaStrategyManager self.scrollArea = QtWidgets.QScrollArea() self.scrollArea.setWidgetResizable(True) # 2)服务端策略监控widget self.ctaMonitor = CtaEngineMonitorWidget(self) # 参数监控 self.ctaMonitor.setMinimumHeight(200) #self.ctaMonitor.setMinimumWidth(800) hbox2 = QtWidgets.QVBoxLayout() hbox2.addWidget(self.ctaMonitor) self.scrollArea.setLayout(hbox2) # 服务端日志监控widget self.logMonitor = QtWidgets.QTextEdit() self.logMonitor.setReadOnly(True) self.logMonitor.setMaximumHeight(200) vbox = QtWidgets.QVBoxLayout() vbox.addLayout(hbox1) vbox.addWidget(self.server_info_monitor) # 添加服务监控 vbox.addWidget(self.logMonitor) vbox.addWidget(self.scrollArea) self.setLayout(vbox)
def initUi(self): """初始化界面""" self.setWindowTitle(u'套利交易') # 连接运行中的套利测试(策略名称[下拉菜单],连接按钮) self.btnSwitchConnectStatus = QtWidgets.QPushButton(u'套利策略未连接') self.btnSwitchConnectStatus.clicked.connect(self.btnSwitchClick) Label = QtWidgets.QLabel grid = QtWidgets.QGridLayout() grid.addWidget(Label(u'状态'), 0, 0) grid.addWidget(self.btnSwitchConnectStatus, 0, 1) self.spreadStraty = QtWidgets.QComboBox() self.strategy_name_list = self.ctaEngine.strategyDict.keys() self.spreadStraty.addItems(self.strategy_name_list) grid.addWidget(Label(u'套利策略'), 1, 0) grid.addWidget(self.spreadStraty, 1, 1) # 网格信息+操作(新增,删除,更新) grid.addWidget(Label(u'方向'), 2, 0) self.gridDirection = QtWidgets.QComboBox() self.gridDirection.addItems(self.directionList) grid.addWidget(self.gridDirection, 2, 1) self.spinOpenPrice = QtWidgets.QDoubleSpinBox() self.spinOpenPrice.setDecimals(4) self.spinOpenPrice.setMinimum(-10000) # 原来是0,为支持套利,改为-10000 self.spinOpenPrice.setMaximum(100000) self.spinOpenPrice.valueChanged.connect(self.spinOpenPrice_valueChanged) grid.addWidget(Label(u'开仓价'), 3, 0) grid.addWidget(self.spinOpenPrice, 3, 1) self.spinClosePrice = QtWidgets.QDoubleSpinBox() self.spinClosePrice.setDecimals(4) self.spinClosePrice.setMinimum(-10000) # 原来是0,为支持套利,改为-10000 self.spinClosePrice.setMaximum(100000) grid.addWidget(Label(u'平仓价'), 4, 0) grid.addWidget(self.spinClosePrice, 4, 1) self.spinOrderVolume = QtWidgets.QSpinBox() self.spinOrderVolume.setMinimum(0) self.spinClosePrice.setDecimals(4) self.spinOrderVolume.setMaximum(1000) grid.addWidget(Label(u'委托数量'), 5, 0) grid.addWidget(self.spinOrderVolume, 5, 1) self.spinTradedVolume = QtWidgets.QSpinBox() self.spinTradedVolume.setMinimum(0) self.spinTradedVolume.setMaximum(1000) grid.addWidget(Label(u'成交数量'), 6, 0) grid.addWidget(self.spinTradedVolume, 6, 1) self.openStatus = QtWidgets.QCheckBox(u'') # 开仓状态 grid.addWidget(Label(u'开仓状态'), 7, 0) grid.addWidget(self.openStatus, 7, 1) self.orderStatus = QtWidgets.QCheckBox(u'') # 委托状态 grid.addWidget(Label(u'委托状态'), 8, 0) grid.addWidget(self.orderStatus, 8, 1) self.closeStatus = QtWidgets.QCheckBox(u'') # 平仓状态 grid.addWidget(Label(u'平仓状态'), 9, 0) grid.addWidget(self.closeStatus, 9, 1) self.reuseStatus = QtWidgets.QCheckBox(u'') # 平仓状态 grid.addWidget(Label(u'重用网格'), 10, 0) grid.addWidget(self.reuseStatus, 10, 1) btnAddGrid = QtWidgets.QPushButton(u'增加') btnAddGrid.clicked.connect(self.btnAddGridClick) btnUpdateGrid = QtWidgets.QPushButton(u'更新') btnUpdateGrid.clicked.connect(self.btnUpdateGridClick) btnRemoveGrid = QtWidgets.QPushButton(u'删除') btnRemoveGrid.clicked.connect(self.btnRemoveGridClick) btnRemoveAll = QtWidgets.QPushButton(u'全删除') btnRemoveAll.clicked.connect(self.btnRemoveAllClick) hbox = QtWidgets.QHBoxLayout() hbox.addWidget(btnAddGrid) hbox.addWidget(btnUpdateGrid) hbox.addStretch() hbox.addWidget(btnRemoveGrid) hbox.addWidget(btnRemoveAll) vbox = QtWidgets.QVBoxLayout() vbox.addLayout(grid) vbox.addLayout(hbox) # 状态信息(通过定时器,显示 上网格清单,下网格清单) #日志监控 self.logMsgs = QtWidgets.QTextEdit() self.logMsgs.setReadOnly(True) self.logMsgs.setMaximumHeight(200) vbox.addWidget(self.logMsgs) self.setLayout(vbox)