Browse Source

Implemented TradesListWidget

master
Denis Tereshkin 7 years ago
parent
commit
2b360865be
  1. 1
      build_ui.sh
  2. 10
      src/nailab/ui/strategywidget.py
  3. 36
      src/nailab/ui/tradeslistwidget.py
  4. 35
      src/nailab/ui_gen/tradeslistwidget.py
  5. 72
      ui/tradeslistwidget.ui

1
build_ui.sh

@ -5,6 +5,7 @@
/usr/bin/pyuic5 ui/mainwindow.ui > src/nailab/ui_gen/mainwindow.py /usr/bin/pyuic5 ui/mainwindow.ui > src/nailab/ui_gen/mainwindow.py
/usr/bin/pyuic5 ui/newdatasourcedialog.ui > src/nailab/ui_gen/newdatasourcedialog.py /usr/bin/pyuic5 ui/newdatasourcedialog.ui > src/nailab/ui_gen/newdatasourcedialog.py
/usr/bin/pyuic5 ui/strategywidget.ui > src/nailab/ui_gen/strategywidget.py /usr/bin/pyuic5 ui/strategywidget.ui > src/nailab/ui_gen/strategywidget.py
/usr/bin/pyuic5 ui/tradeslistwidget.ui > src/nailab/ui_gen/tradeslistwidget.py
/usr/bin/pyrcc5 nailab.qrc -o src/nailab/nailab_rc.py /usr/bin/pyrcc5 nailab.qrc -o src/nailab/nailab_rc.py

10
src/nailab/ui/strategywidget.py

@ -9,6 +9,7 @@ from ui_gen.strategywidget import Ui_StrategyWidget
from ui.newdatasourcedialog import NewDataSourceDialog from ui.newdatasourcedialog import NewDataSourceDialog
from ui.equitychartwidget import EquityChartWidget from ui.equitychartwidget import EquityChartWidget
from ui.tradeslistwidget import TradesListWidget
from watchdog.observers import Observer from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler from watchdog.events import FileSystemEventHandler
@ -58,6 +59,7 @@ class StrategyWidget(QtWidgets.QWidget):
self.result = [] self.result = []
self.result_widget = None self.result_widget = None
self.equity_widget = None self.equity_widget = None
self.trades_widget = None
self.watchdog_handler = FileModifiedHandler(self.file_modified) self.watchdog_handler = FileModifiedHandler(self.file_modified)
self.watchdog = None self.watchdog = None
@ -139,6 +141,7 @@ class StrategyWidget(QtWidgets.QWidget):
self.result = result self.result = result
self.update_result() self.update_result()
self.update_equity_chart() self.update_equity_chart()
self.update_trades_list()
def update_equity_chart(self): def update_equity_chart(self):
@ -150,6 +153,13 @@ class StrategyWidget(QtWidgets.QWidget):
self.equity_widget.set_data(cumpnl) self.equity_widget.set_data(cumpnl)
def update_trades_list(self):
if self.trades_widget is None:
self.trades_widget = TradesListWidget(self)
self.ui.tabs.addTab(self.trades_widget, "Trades")
self.trades_widget.set_trades(self.result[1])
def update_result(self): def update_result(self):
if self.result_widget is None: if self.result_widget is None:

36
src/nailab/ui/tradeslistwidget.py

@ -0,0 +1,36 @@
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.Qsci import *
from ui_gen.tradeslistwidget import Ui_TradesListWidget
class TradesListWidget(QtWidgets.QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.ui = Ui_TradesListWidget()
self.ui.setupUi(self)
self.trades = []
def set_trades(self, trades):
self.trades = trades
self.ui.trades.clear()
for trade in trades:
item = QtWidgets.QTreeWidgetItem(self.ui.trades)
if trade["is_long"]:
item.setText(0, "L")
else:
item.setText(0, "S")
item.setText(1, trade["security"])
item.setText(2, str(trade["entry_time"]))
item.setText(3, str(trade["entry_price"]))
item.setText(4, str(trade["exit_time"]))
item.setText(5, str(trade["exit_price"]))
item.setText(6, str(trade["pnl"]))

35
src/nailab/ui_gen/tradeslistwidget.py

@ -0,0 +1,35 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'ui\tradeslistwidget.ui'
#
# Created by: PyQt5 UI code generator 5.11.3
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_TradesListWidget(object):
def setupUi(self, TradesListWidget):
TradesListWidget.setObjectName("TradesListWidget")
TradesListWidget.resize(830, 565)
self.gridLayout = QtWidgets.QGridLayout(TradesListWidget)
self.gridLayout.setContentsMargins(1, 1, 1, 1)
self.gridLayout.setObjectName("gridLayout")
self.trades = QtWidgets.QTreeWidget(TradesListWidget)
self.trades.setObjectName("trades")
self.gridLayout.addWidget(self.trades, 0, 0, 1, 1)
self.retranslateUi(TradesListWidget)
QtCore.QMetaObject.connectSlotsByName(TradesListWidget)
def retranslateUi(self, TradesListWidget):
_translate = QtCore.QCoreApplication.translate
TradesListWidget.setWindowTitle(_translate("TradesListWidget", "Form"))
self.trades.headerItem().setText(0, _translate("TradesListWidget", "D"))
self.trades.headerItem().setText(1, _translate("TradesListWidget", "Security"))
self.trades.headerItem().setText(2, _translate("TradesListWidget", "Entry time"))
self.trades.headerItem().setText(3, _translate("TradesListWidget", "Entry price"))
self.trades.headerItem().setText(4, _translate("TradesListWidget", "Exit time"))
self.trades.headerItem().setText(5, _translate("TradesListWidget", "Exit price"))
self.trades.headerItem().setText(6, _translate("TradesListWidget", "PnL"))

72
ui/tradeslistwidget.ui

@ -0,0 +1,72 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>TradesListWidget</class>
<widget class="QWidget" name="TradesListWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>830</width>
<height>565</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<property name="leftMargin">
<number>1</number>
</property>
<property name="topMargin">
<number>1</number>
</property>
<property name="rightMargin">
<number>1</number>
</property>
<property name="bottomMargin">
<number>1</number>
</property>
<item row="0" column="0">
<widget class="QTreeWidget" name="trades">
<column>
<property name="text">
<string>D</string>
</property>
</column>
<column>
<property name="text">
<string>Security</string>
</property>
</column>
<column>
<property name="text">
<string>Entry time</string>
</property>
</column>
<column>
<property name="text">
<string>Entry price</string>
</property>
</column>
<column>
<property name="text">
<string>Exit time</string>
</property>
</column>
<column>
<property name="text">
<string>Exit price</string>
</property>
</column>
<column>
<property name="text">
<string>PnL</string>
</property>
</column>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>
Loading…
Cancel
Save