Beispiel #1
0
    def initUi(self):
        """初始化界面"""
	self.setTitle(self.name)

        self.directionList = [u'LONG',
                              u'SHORT',
	                      u'NONE']

        self.offsetList = [u'OPEN',
                           u'CLOSE']

        labelX1 = QtWidgets.QLabel(u'Multiplier 1')
        labelS1 = QtWidgets.QLabel(u'   x')
        labelC1 =  QtWidgets.QLabel(u'Contract 1')
        self.lineX1 = QtWidgets.QLineEdit()
        self.lineS1 = QtWidgets.QLabel(u'   x')
        self.lineC1 = QtWidgets.QLineEdit()

        labelP2 = QtWidgets.QLabel(u'   +')
        labelX2 = QtWidgets.QLabel(u'Multiplier 2')
        labelS2 = QtWidgets.QLabel(u'   x')
        labelC2 =  QtWidgets.QLabel(u'Contract 2')
        self.lineP2 = QtWidgets.QLabel(u'   +')
        self.lineX2 = QtWidgets.QLineEdit()
        self.lineS2 = QtWidgets.QLabel(u'   x')
        self.lineC2 = QtWidgets.QLineEdit()

        labelP3 = QtWidgets.QLabel(u'   +')
        labelX3 = QtWidgets.QLabel(u'Multiplier 3')
        labelS3 = QtWidgets.QLabel(u'   x')
        labelC3 =  QtWidgets.QLabel(u'Contract 3')
        self.lineP3 = QtWidgets.QLabel(u'   +')
        self.lineX3 = QtWidgets.QLineEdit()
        self.lineS3 = QtWidgets.QLabel(u'   x')
        self.lineC3 = QtWidgets.QLineEdit()

        labelP4 = QtWidgets.QLabel(u'   +')
        labelX4 = QtWidgets.QLabel(u'Multiplier 4')
        labelS4 = QtWidgets.QLabel(u'   x')
        labelC4 =  QtWidgets.QLabel(u'Contract 4')
        self.lineP4 = QtWidgets.QLabel(u'   +')
        self.lineX4 = QtWidgets.QLineEdit()
        self.lineS4 = QtWidgets.QLabel(u'   x')
        self.lineC4 = QtWidgets.QLineEdit()

        labelX5 = QtWidgets.QLabel(u'Spread')
        labelC5 =  QtWidgets.QLabel(u'Quantity')
        self.lineX5 = QtWidgets.QLineEdit()
        self.lineC5 = QtWidgets.QLineEdit()

        labelX7 = QtWidgets.QLabel(u'Bought at')
        labelC7 =  QtWidgets.QLabel(u'Sold at')
        self.lineX7 = QtWidgets.QLabel(u'3349')
        self.lineC7 = QtWidgets.QLabel(u'3312')

        labelX6 =  QtWidgets.QLabel(u'Direction')
        self.comboDirection = QtWidgets.QComboBox()
        self.comboDirection.addItems(self.directionList)

        labelC6 =  QtWidgets.QLabel(u'Offset')
        self.comboOffset = QtWidgets.QComboBox()
        self.comboOffset.addItems(self.offsetList)

        # 代码输入框
        gridup = QtWidgets.QGridLayout()
        gridup.addWidget(labelX1, 0, 0)
        gridup.addWidget(labelS1, 0, 1)
        gridup.addWidget(labelC1, 0, 2)
        gridup.addWidget(labelP2, 0, 3)
        gridup.addWidget(labelX2, 0, 4)
        gridup.addWidget(labelS2, 0, 5)
        gridup.addWidget(labelC2, 0, 6)
        gridup.addWidget(labelP3, 0, 7)
        gridup.addWidget(labelX3, 0, 8)
        gridup.addWidget(labelS3, 0, 9)
        gridup.addWidget(labelC3, 0, 10)
        gridup.addWidget(labelP4, 0, 11)
        gridup.addWidget(labelX4, 0, 12)
        gridup.addWidget(labelS4, 0, 13)
        gridup.addWidget(labelC4, 0, 14)
        gridup.addWidget(self.lineX1, 1, 0)
        gridup.addWidget(self.lineS1, 1, 1)
        gridup.addWidget(self.lineC1, 1, 2)
        gridup.addWidget(self.lineP2, 1, 3)
        gridup.addWidget(self.lineX2, 1, 4)
        gridup.addWidget(self.lineS2, 1, 5)
        gridup.addWidget(self.lineC2, 1, 6)
        gridup.addWidget(self.lineP3, 1, 7)
        gridup.addWidget(self.lineX3, 1, 8)
        gridup.addWidget(self.lineS3, 1, 9)
        gridup.addWidget(self.lineC3, 1, 10)
        gridup.addWidget(self.lineP4, 1, 11)
        gridup.addWidget(self.lineX4, 1, 12)
        gridup.addWidget(self.lineS4, 1, 13)
        gridup.addWidget(self.lineC4, 1, 14)
        gridup.setColumnStretch(0, 1)
        gridup.setColumnStretch(1, 1)
        gridup.setColumnStretch(2, 2)
        gridup.setColumnStretch(3, 1)
        gridup.setColumnStretch(4, 1)
        gridup.setColumnStretch(5, 1)
        gridup.setColumnStretch(6, 2)
        gridup.setColumnStretch(7, 1)
        gridup.setColumnStretch(8, 1)
        gridup.setColumnStretch(9, 1)
        gridup.setColumnStretch(10, 2)
        gridup.setColumnStretch(11, 1)
        gridup.setColumnStretch(12, 1)
        gridup.setColumnStretch(13, 1)
        gridup.setColumnStretch(14, 2)
        gridup.setContentsMargins(2,2,600,10)

        griddown = QtWidgets.QGridLayout()
        griddown.addWidget(labelX7, 0, 0)
        griddown.addWidget(labelC7, 0, 1)
        griddown.addWidget(labelX5, 0, 2)
        griddown.addWidget(labelC5, 0, 3)
        griddown.addWidget(labelX6, 0, 4)
        griddown.addWidget(labelC6, 0, 5)
        griddown.addWidget(self.lineX7, 1, 0)
        griddown.addWidget(self.lineC7, 1, 1)
        griddown.addWidget(self.lineX5, 1, 2)
        griddown.addWidget(self.lineC5, 1, 3)
        griddown.addWidget(self.comboDirection, 1, 4)
        griddown.addWidget(self.comboOffset, 1, 5)
        griddown.setContentsMargins(2,2,1300,20)

        
        self.paramMonitor = ArbValueMonitor(self)
        self.varMonitor = ArbValueMonitor(self)
        
        maxHeight = 80
        #self.paramMonitor.setMaximumHeight(maxHeight)
        self.paramMonitor.setMinimumHeight(maxHeight)
        self.paramMonitor.resizeRowsToContents() 
        #self.varMonitor.setMaximumHeight(maxHeight)
        self.varMonitor.setMinimumHeight(maxHeight)
        self.varMonitor.resizeRowsToContents()
        
        buttonUpdate = QtWidgets.QPushButton(u'Update Contracts')
	buttonInit = QtWidgets.QPushButton(u'Initialize')
	buttonSend = QtWidgets.QPushButton(u'Trigger')
	buttonStart = QtWidgets.QPushButton(u'Start')	
        buttonClear = QtWidgets.QPushButton(u'Clear Strategy')
        buttonQrypos = QtWidgets.QPushButton(u'Query Position')
        buttonReport = QtWidgets.QPushButton(u'Report Strategy')
        buttonStop = QtWidgets.QPushButton(u'Stop')
        buttonUpdate.clicked.connect(self.update)
	buttonInit.clicked.connect(self.init)
	buttonSend.clicked.connect(self.send)
	buttonStart.clicked.connect(self.start)	
        buttonClear.clicked.connect(self.clear)
        buttonQrypos.clicked.connect(self.qrypos)
        buttonReport.clicked.connect(self.report)
        buttonStop.clicked.connect(self.stop)
        
        hbox1 = QtWidgets.QHBoxLayout()     
        hbox1.addWidget(buttonUpdate)
	hbox1.addWidget(buttonInit)
	hbox1.addWidget(buttonSend)
	hbox1.addWidget(buttonStart)	
        hbox1.addWidget(buttonClear)
        hbox1.addWidget(buttonQrypos)
        hbox1.addWidget(buttonReport)
        hbox1.addWidget(buttonStop)
        hbox1.addStretch()
        
        hbox2 = QtWidgets.QHBoxLayout()
        hbox2.addWidget(self.paramMonitor)
        
        hbox3 = QtWidgets.QHBoxLayout()
        hbox3.addWidget(self.varMonitor)
        
        vbox = QtWidgets.QVBoxLayout()
        vbox.addLayout(gridup)
        vbox.addLayout(griddown)
        vbox.addLayout(hbox1)
        vbox.addLayout(hbox2)
        vbox.addLayout(hbox3)

        vbox.setContentsMargins(20,50,20,20)

        self.setLayout(vbox)
Beispiel #2
0
    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)