You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
1.5 KiB
43 lines
1.5 KiB
''' |
|
''' |
|
|
|
from PyQt5.QtWidgets import QMainWindow, QTreeWidgetItem |
|
|
|
from .ui_mainwindow import Ui_MainWindow |
|
from solver.solver import Solver |
|
from data.series import Series |
|
from data.signal import PriceComparisonSignalGenerator, RsiSignalGenerator,\ |
|
AtrSignalGenerator |
|
from PyQt5.Qt import Qt |
|
|
|
class MainWindow(QMainWindow, Ui_MainWindow): |
|
''' |
|
''' |
|
|
|
def __init__(self, parent=None): |
|
''' |
|
Constructor |
|
''' |
|
super().__init__(parent) |
|
self.setupUi(self) |
|
|
|
self.series = Series() |
|
self.series.load_from_finam_csv('/home/asakul/tmp/daily/RTSI_20000101_20171231_daily.csv') |
|
self.solver = Solver(self.series) |
|
self.solver.add_generator(PriceComparisonSignalGenerator()) |
|
self.solver.add_generator(RsiSignalGenerator()) |
|
self.solver.add_generator(AtrSignalGenerator()) |
|
results = self.solver.solve() |
|
|
|
for result in results: |
|
item = QTreeWidgetItem(self.tw_strategies) |
|
item.setText(0, result['display_name']) |
|
item.setText(1, str(result['trades_number'])) |
|
item.setText(2, str(result['total_pnl'])) |
|
item.setText(3, "{:.2f}".format(result['profit_factor'])) |
|
item.setText(4, "{:.2f}".format(result['sharpe'])) |
|
item.setText(5, "{:.2f}%".format(result['avg_percentage'])) |
|
item.setData(0, Qt.UserRole + 1, result) |
|
|
|
def strategyClicked(self, item, column): |
|
result = item.getData(0, Qt.UserRole + 1) |