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 @@ @@ -5,6 +5,7 @@
/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/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

10
src/nailab/ui/strategywidget.py

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

36
src/nailab/ui/tradeslistwidget.py

@ -0,0 +1,36 @@ @@ -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 @@ @@ -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 @@ @@ -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