def trdPnlPage(self): for pi in range(0,len(self.pages)): self.toolButtons[pi].setStyleSheet(self.toolButtonHideQSS) self.pages[pi].hide() print "in profit and loss report page" ci = 3 page = self.pages[ci] self.toolButtons[ci].setStyleSheet(self.toolButtonFocusQSS) if self.pagesStatus[ci] == 0: if not page.layout() == None: while page.layout().count() > 0: page.layout().takeAt(0).widget().setParent(None) if page.layout() == None: self.pageTrdPnlPageMainVerticalBox = QVBoxLayout() self.pageTrdPnlPageMainVerticalBox.setContentsMargins(0, 5, 0, 0) page.setLayout(self.pageTrdPnlPageMainVerticalBox) self.pageTrdHisTitleLabel = QLabel("Profit And Loss Report", page) self.pageTrdHisTitleLabel.setFixedSize(860, 25) self.pageTrdHisTitleLabel.setStyleSheet(self.pageTitleQSS) self.pageTrdPnlPageMainVerticalBox.addWidget(self.pageTrdHisTitleLabel) pnlReport = self.ATM.report if not len(pnlReport) == 0: self.pageTrdHisBookTitles = QWidget(page) self.pageTrdHisBookTitles.setFixedSize(860, 25) self.pageTrdHisBookTitles.setStyleSheet(self.pageSubTitleQSS) titlesHBox = QHBoxLayout() titlesHBox.setContentsMargins(10, 0, 20, 0) strategy = QLabel("Strategy") titlesHBox.addWidget(QLabel("Strategy")) titlesHBox.addWidget(QLabel("Realized PnL")) titlesHBox.addWidget(QLabel("Return")) areturn = QLabel("Annual Return") areturn.setFixedWidth(130) titlesHBox.addWidget(areturn) titlesHBox.addWidget(QLabel("Volatility")) titlesHBox.addWidget(QLabel("Sharpe Ratio")) mdd = QLabel("Maximum Draw Down") mdd.setFixedWidth(155) titlesHBox.addWidget(mdd) self.pageTrdHisBookTitles.setLayout(titlesHBox) self.pageTrdPnlPageMainVerticalBox.addWidget(self.pageTrdHisBookTitles) self.pageTrdHisPageScroll = QScrollArea(page) self.pageTrdHisPageScroll.setWidgetResizable(True) self.pageTrdHisPageScroll.setBackgroundRole(QPalette.NoRole) self.pageTrdHisPageScroll.setStyleSheet("background: transparent") self.pageTrdHisPageScroll.setFixedSize(860, 600) self.pageTrdHisScrollContentsWidget = QWidget(page) scrollContentVBox = QVBoxLayout() scrollContentVBox.setAlignment(Qt.AlignTop) scrollContentVBox.setContentsMargins(0, 0, 0, 0) for i in xrange(0, len(pnlReport)): widget = QWidget() widget.setFixedHeight(15) if pnlReport.ix[i]["realized PnL"] > 0: widget.setStyleSheet("color:#fa2020") if pnlReport.ix[i]["realized PnL"] < 0: widget.setStyleSheet("color:#27AE60") hbox = QHBoxLayout() hbox.setContentsMargins(20, 0, 10, 0) strategy = QLabel(pnlReport.ix[i]["Strategy"]) strategy.setFixedWidth(100) hbox.addWidget(strategy) hbox.addWidget(QLabel(str("{0:.2f}".format(pnlReport.ix[i]["realized PnL"])))) hbox.addWidget(QLabel(str("{0:.4f}".format(pnlReport.ix[i]["Return"])))) areturn = QLabel(str("{0:.4f}".format(pnlReport.ix[i]["Annualized Return"]))) # hbox.addWidget(QLabel(str("{0:.2f}".format(tradeHistory.ix[i]["QntPer"] * 100)))) areturn.setFixedWidth(130) hbox.addWidget(areturn) hbox.addWidget(QLabel(str("{0:.4f}".format(pnlReport.ix[i]["Volatility"])))) hbox.addWidget(QLabel(str("{0:.4f}".format(pnlReport.ix[i]["Sharpe Ratio"])))) mdd = QLabel(str("{0:.6f}".format(pnlReport.ix[i]["MDD"]))) mdd.setFixedWidth(155) hbox.addWidget(mdd) widget.setLayout(hbox) scrollContentVBox.addWidget(widget) self.pageTrdHisScrollContentsWidget.setLayout(scrollContentVBox) self.pageTrdHisPageScroll.setWidget(self.pageTrdHisScrollContentsWidget) self.pageTrdPnlPageMainVerticalBox.addWidget(self.pageTrdHisPageScroll) else: widget = QLabel("No Data.") widget.setFixedSize(860, 550) widget.setStyleSheet(self.noDataLabelQSS) widget.setAlignment(Qt.AlignCenter) self.pageTrdPnlPageMainVerticalBox.addWidget(widget) self.pagesStatus[ci] = 1 page.show()
def trdHisPage(self): for pi in range(0,len(self.pages)): self.toolButtons[pi].setStyleSheet(self.toolButtonHideQSS) self.pages[pi].hide() print "in trade history page" ci = 4 page = self.pages[ci] self.toolButtons[ci].setStyleSheet(self.toolButtonFocusQSS) if self.pagesStatus[ci] == 0: if not page.layout() == None: while page.layout().count() > 0: page.layout().takeAt(0).widget().setParent(None) if page.layout() == None: self.pageTrdHisPageMainVerticalBox = QVBoxLayout() self.pageTrdHisPageMainVerticalBox.setContentsMargins(0, 5, 0, 0) page.setLayout(self.pageTrdHisPageMainVerticalBox) self.pageTrdHisTitleLabel = QLabel("Trade History", page) self.pageTrdHisTitleLabel.setFixedSize(860, 25) self.pageTrdHisTitleLabel.setStyleSheet(self.pageTitleQSS) self.pageTrdHisPageMainVerticalBox.addWidget(self.pageTrdHisTitleLabel) tradeHistory = self.ATM.account.queryTradeHistory() if not len(tradeHistory) == 0: self.pageTrdHisBookTitles = QWidget(page) self.pageTrdHisBookTitles.setFixedSize(860, 25) self.pageTrdHisBookTitles.setStyleSheet(self.pageSubTitleQSS) titlesHBox = QHBoxLayout() titlesHBox.setContentsMargins(10, 0, 20, 0) code = QLabel("Code") code.setFixedWidth(100) titlesHBox.addWidget(code) time = QLabel("Time") time.setFixedWidth(145) titlesHBox.addWidget(time) titlesHBox.addWidget(QLabel("Action")) qnt = QLabel("Qnt") qnt.setFixedWidth(50) titlesHBox.addWidget(qnt) titlesHBox.addWidget(QLabel("Occupy")) titlesHBox.addWidget(QLabel("Price")) titlesHBox.addWidget(QLabel("PnL")) titlesHBox.addWidget(QLabel("Equity")) strategy = QLabel("Strategy") strategy.setFixedWidth(100) titlesHBox.addWidget(strategy) self.pageTrdHisBookTitles.setLayout(titlesHBox) self.pageTrdHisPageMainVerticalBox.addWidget(self.pageTrdHisBookTitles) self.pageTrdHisPageScroll = QScrollArea(page) self.pageTrdHisPageScroll.setWidgetResizable(True) self.pageTrdHisPageScroll.setBackgroundRole(QPalette.NoRole) self.pageTrdHisPageScroll.setStyleSheet("background: transparent") self.pageTrdHisPageScroll.setFixedSize(860, 600) self.pageTrdHisScrollContentsWidget = QWidget(page) scrollContentVBox = QVBoxLayout() scrollContentVBox.setContentsMargins(0, 0, 0, 0) scrollContentVBox.setAlignment(Qt.AlignTop) for i in xrange(0, len(tradeHistory)): widget = QWidget() widget.setFixedHeight(15) if tradeHistory.ix[i]["Action"] == "Short" : widget.setStyleSheet("color:#27AE60") if tradeHistory.ix[i]["Action"] == "SellToCover" : widget.setStyleSheet("color:#27AE60") if tradeHistory.ix[i]["Action"] == "Long" : widget.setStyleSheet("color:#fa2020") if tradeHistory.ix[i]["Action"] == "BuyToCover" : widget.setStyleSheet("color:#fa2020") hbox = QHBoxLayout() hbox.setContentsMargins(20, 0, 10, 0) code = QLabel(str(tradeHistory.ix[i]["Code"])); code.setFixedWidth(100); hbox.addWidget(code); time = QLabel(str(tradeHistory.ix[i]["Time"])); time.setFixedWidth(145); hbox.addWidget(time); hbox.addWidget(QLabel(tradeHistory.ix[i]["Action"])) qnt = QLabel(str(tradeHistory.ix[i]["Qnt"])); qnt.setFixedWidth(50); hbox.addWidget(qnt); hbox.addWidget(QLabel(str("{0:.2f}".format(tradeHistory.ix[i]["QntPer"] * 100))+"%")) hbox.addWidget(QLabel(str(round(tradeHistory.ix[i]["Price"])))) pnl = QLabel() if not tradeHistory.ix[i]["PnL"] == "": pnl = QLabel(str(round(float(tradeHistory.ix[i]["PnL"])))); hbox.addWidget(pnl) hbox.addWidget(QLabel(str(round(tradeHistory.ix[i]["Equity"])))) strategy = QLabel(tradeHistory.ix[i]["Strategy"]); strategy.setFixedWidth(100); hbox.addWidget(strategy); widget.setLayout(hbox) scrollContentVBox.addWidget(widget) self.pageTrdHisScrollContentsWidget.setLayout(scrollContentVBox) self.pageTrdHisPageScroll.setWidget(self.pageTrdHisScrollContentsWidget) self.pageTrdHisPageMainVerticalBox.addWidget(self.pageTrdHisPageScroll) else: widget = QLabel("No Data.") widget.setFixedSize(860, 550) widget.setStyleSheet(self.noDataLabelQSS) widget.setAlignment(Qt.AlignCenter) self.pageTrdHisPageMainVerticalBox.addWidget(widget) self.pagesStatus[ci] = 1 page.show()
def atoTrdPage(self): for pi in range(0,len(self.pages)): self.toolButtons[pi].setStyleSheet(self.toolButtonHideQSS) self.pages[pi].hide() print "in monitor page" ci = 2 page = self.pages[ci] self.toolButtons[ci].setStyleSheet(self.toolButtonFocusQSS) if self.pagesStatus[ci] == 0: if not page.layout() == None: while page.layout().count() > 0: page.layout().takeAt(0).widget().setParent(None) if page.layout() == None: self.pageAutoTrdPageMainVerticalBox = QVBoxLayout() self.pageAutoTrdPageMainVerticalBox.setContentsMargins(0, 5, 0, 0) page.setLayout(self.pageAutoTrdPageMainVerticalBox) self.pageAutoTrdTitleLabel = QLabel("Monitor", page) self.pageAutoTrdTitleLabel.setFixedSize(860, 25) self.pageAutoTrdTitleLabel.setStyleSheet(self.pageTitleQSS) self.pageAutoTrdPageMainVerticalBox.addWidget(self.pageAutoTrdTitleLabel) pnlReport = self.ATM.report if not len(self.ATM.strategies.strategiesPool.keys()) == 0: self.pageAtoTrdPageScroll = QScrollArea(page) self.pageAtoTrdPageScroll.setWidgetResizable(True) self.pageAtoTrdPageScroll.setBackgroundRole(QPalette.NoRole) self.pageAtoTrdPageScroll.setStyleSheet("background: transparent") self.pageAtoTrdPageScroll.setFixedSize(860, 635) self.pageAtoTrdScrollContentsWidget = QWidget(page) scrollContentVBox = QVBoxLayout() scrollContentVBox.setAlignment(Qt.AlignTop) scrollContentVBox.setContentsMargins(0, 0, 0, 0) self.pageAtoTrdSignalPlotLabel = QLabel("Signals Plots", page) self.pageAtoTrdSignalPlotLabel.setFixedSize(860, 25) self.pageAtoTrdSignalPlotLabel.setStyleSheet(self.pageSubTitleQSS) scrollContentVBox.addWidget(self.pageAtoTrdSignalPlotLabel) path = "./strategies/image/" for file in os.listdir(path): if file.endswith(".png") and file.split('.')[0] in self.ATM.strategies.strategiesPool.keys(): pageAtoTrdSignalPlotStrategyLabel = QLabel(file.split('.')[0], page) pageAtoTrdSignalPlotStrategyLabel.setFixedSize(860, 25) pageAtoTrdSignalPlotStrategyLabel.setStyleSheet(self.pageSubSubTitleQSS) scrollContentVBox.addWidget(pageAtoTrdSignalPlotStrategyLabel) widget = QWidget() widget.setFixedHeight(300) hbox = QHBoxLayout() hbox.setContentsMargins(0, 0, 0, 0) hbox.setAlignment(Qt.AlignCenter) lbl = QLabel() pixmap = QPixmap(path + file) scaled_pixmap = pixmap.scaled(860, 330, Qt.KeepAspectRatio) lbl.setPixmap(scaled_pixmap) hbox.addWidget(lbl) widget.setLayout(hbox) scrollContentVBox.addWidget(widget) self.pageAtoTrdAllSignalsLabel = QLabel("All Signals", page) self.pageAtoTrdAllSignalsLabel.setFixedSize(860, 25) self.pageAtoTrdAllSignalsLabel.setStyleSheet(self.pageSubTitleQSS) scrollContentVBox.addWidget(self.pageAtoTrdAllSignalsLabel) self.pageAtoTrdAllSignalsTitle = QWidget(page) self.pageAtoTrdAllSignalsTitle.setFixedSize(860, 25) self.pageAtoTrdAllSignalsTitle.setStyleSheet(self.pageSubSubTitleQSS) titlesHBox = QHBoxLayout() titlesHBox.setContentsMargins(10, 0, 20, 0) titlesHBox.addWidget(QLabel("Code")) titlesHBox.addWidget(QLabel("Time")) titlesHBox.addWidget(QLabel("Action")) titlesHBox.addWidget(QLabel("Qnt")) titlesHBox.addWidget(QLabel("Price")) titlesHBox.addWidget(QLabel("Volumn")) titlesHBox.addWidget(QLabel("Strategy")) self.pageAtoTrdAllSignalsTitle.setLayout(titlesHBox) scrollContentVBox.addWidget(self.pageAtoTrdAllSignalsTitle) signals = self.ATM.strategies.signals if not len(signals) == 0: for i in xrange(len(signals)): widget = QWidget(page) widget.setFixedHeight(15) widget.setStyleSheet("color:#ffffff") signalHBox = QHBoxLayout() signalHBox.setContentsMargins(20, 0, 10, 0) signalHBox.addWidget(QLabel(signals.ix[i]["Code"])) signalHBox.addWidget(QLabel(str(signals.ix[i]["Time"]))) signalHBox.addWidget(QLabel(signals.ix[i]["Action"])) signalHBox.addWidget(QLabel(str(signals.ix[i]["Qnt"]))) signalHBox.addWidget(QLabel(str(signals.ix[i]["Price"]))) signalHBox.addWidget(QLabel(str(signals.ix[i]["Volume"]))) signalHBox.addWidget(QLabel(signals.ix[i]["Strategy"])) widget.setLayout(signalHBox) scrollContentVBox.addWidget(widget) else: widget = QLabel("No Data.") widget.setFixedSize(860, 550) widget.setStyleSheet(self.noDataLabelQSS) widget.setAlignment(Qt.AlignCenter) scrollContentVBox.addWidget(widget) self.pageAtoTrdScrollContentsWidget.setLayout(scrollContentVBox) self.pageAtoTrdPageScroll.setWidget(self.pageAtoTrdScrollContentsWidget) self.pageAutoTrdPageMainVerticalBox.addWidget(self.pageAtoTrdPageScroll) else: widget = QLabel("No Data.") widget.setFixedSize(860, 550) widget.setStyleSheet(self.noDataLabelQSS) widget.setAlignment(Qt.AlignCenter) self.pageAutoTrdPageMainVerticalBox.addWidget(widget) self.pagesStatus[ci] = 1 page.show()