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
|
8 years ago
|
'''
|
||
|
|
'''
|
||
|
|
|
||
|
|
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)
|