Skip to content

Commit 5d5e044

Browse files
committed
Add strategy parameters list
1 parent afe984a commit 5d5e044

File tree

5 files changed

+159
-24
lines changed

5 files changed

+159
-24
lines changed

Controller.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,9 @@ def __init__(self):
7575
# Add an observer to watch the strat running and update the progress bar values
7676
self.cerebro.addobserver( SkinokObserver )
7777

78+
# Once everything is created, initialize data
79+
self.interface.initialize()
80+
7881
pass
7982

8083
def loadData(self, dataPath):
@@ -101,6 +104,10 @@ def addStrategy(self, strategyName):
101104

102105
mod = __import__(strategyName, fromlist=[strategyName]) # first strategyName is the file name, and second (fromlist) is the class name
103106
klass = getattr(mod, strategyName) # class name in the file
107+
108+
# Add strategy parameters
109+
self.interface.fillStrategyParameters(klass.params._getitems())
110+
104111
self.cerebro.addstrategy(klass)
105112
pass
106113

strategyTesterUI.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ def __init__(self, controller):
2222
self.strategyNameCB = self.findChild(QtWidgets.QComboBox, "strategyNameCB")
2323
self.strategyNameCB.currentIndexChanged.connect(self.strategyNameActivated)
2424

25+
def initialize(self):
26+
2527
# adding list of items to combo box
2628
self.strategyNames = list(QtCore.QDir(self.current_dir_path + "/strategies").entryList(QtCore.QDir.Files))
2729

@@ -31,6 +33,8 @@ def __init__(self, controller):
3133
self.strategyBaseName.append(QtCore.QFileInfo(stratName).baseName())
3234

3335
self.strategyNameCB.addItems(self.strategyBaseName)
36+
37+
pass
3438

3539
def run(self):
3640
self.controller.run()

ui/strategyResults.ui

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
<item row="0" column="1">
4545
<widget class="QTabWidget" name="ResultsTabWidget">
4646
<property name="currentIndex">
47-
<number>1</number>
47+
<number>0</number>
4848
</property>
4949
<widget class="QWidget" name="tradeTab">
5050
<attribute name="title">

ui/strategyTester.ui

Lines changed: 123 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
<rect>
77
<x>0</x>
88
<y>0</y>
9-
<width>238</width>
10-
<height>414</height>
9+
<width>234</width>
10+
<height>699</height>
1111
</rect>
1212
</property>
1313
<property name="windowTitle">
@@ -17,30 +17,55 @@
1717
<item row="0" column="0">
1818
<widget class="QGroupBox" name="groupBox">
1919
<property name="title">
20-
<string>Strategies</string>
20+
<string>Back testing</string>
2121
</property>
2222
<layout class="QGridLayout" name="gridLayout">
23-
<item row="0" column="0">
24-
<widget class="QComboBox" name="strategyNameCB">
25-
<property name="sizePolicy">
26-
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
27-
<horstretch>0</horstretch>
28-
<verstretch>0</verstretch>
29-
</sizepolicy>
23+
<item row="7" column="0">
24+
<widget class="QScrollArea" name="scrollArea">
25+
<property name="widgetResizable">
26+
<bool>true</bool>
3027
</property>
31-
<property name="minimumSize">
28+
<widget class="QWidget" name="scrollAreaWidgetContents">
29+
<property name="geometry">
30+
<rect>
31+
<x>0</x>
32+
<y>0</y>
33+
<width>188</width>
34+
<height>205</height>
35+
</rect>
36+
</property>
37+
<layout class="QVBoxLayout" name="verticalLayout">
38+
<item>
39+
<layout class="QFormLayout" name="parametersLayout"/>
40+
</item>
41+
</layout>
42+
</widget>
43+
</widget>
44+
</item>
45+
<item row="5" column="0">
46+
<spacer name="verticalSpacer_2">
47+
<property name="orientation">
48+
<enum>Qt::Vertical</enum>
49+
</property>
50+
<property name="sizeType">
51+
<enum>QSizePolicy::Preferred</enum>
52+
</property>
53+
<property name="sizeHint" stdset="0">
3254
<size>
33-
<width>200</width>
34-
<height>0</height>
55+
<width>20</width>
56+
<height>20</height>
3557
</size>
3658
</property>
37-
</widget>
59+
</spacer>
3860
</item>
39-
<item row="2" column="0">
40-
<spacer name="verticalSpacer_2">
61+
<item row="8" column="0">
62+
<spacer name="verticalSpacer">
4163
<property name="orientation">
4264
<enum>Qt::Vertical</enum>
4365
</property>
66+
<property name="sizeType">
67+
<enum>QSizePolicy::Expanding</enum>
68+
</property>
4469
<property name="sizeHint" stdset="0">
4570
<size>
4671
<width>20</width>
@@ -50,13 +75,29 @@
5075
</spacer>
5176
</item>
5277
<item row="3" column="0">
53-
<widget class="QProgressBar" name="runningStratPB">
54-
<property name="value">
55-
<number>0</number>
78+
<widget class="QLabel" name="label_4">
79+
<property name="text">
80+
<string>Strategy</string>
81+
</property>
82+
</widget>
83+
</item>
84+
<item row="4" column="0" colspan="2">
85+
<widget class="QComboBox" name="strategyNameCB">
86+
<property name="sizePolicy">
87+
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
88+
<horstretch>0</horstretch>
89+
<verstretch>0</verstretch>
90+
</sizepolicy>
91+
</property>
92+
<property name="minimumSize">
93+
<size>
94+
<width>200</width>
95+
<height>0</height>
96+
</size>
5697
</property>
5798
</widget>
5899
</item>
59-
<item row="1" column="0">
100+
<item row="9" column="0" colspan="2">
60101
<widget class="QPushButton" name="runBacktestPB">
61102
<property name="sizePolicy">
62103
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
@@ -65,10 +106,71 @@
65106
</sizepolicy>
66107
</property>
67108
<property name="text">
68-
<string>Run backtest</string>
109+
<string>Run</string>
69110
</property>
70111
</widget>
71112
</item>
113+
<item row="6" column="0" colspan="2">
114+
<widget class="QLabel" name="label_3">
115+
<property name="text">
116+
<string>Parameters</string>
117+
</property>
118+
</widget>
119+
</item>
120+
<item row="12" column="0" colspan="2">
121+
<widget class="QProgressBar" name="runningStratPB">
122+
<property name="value">
123+
<number>0</number>
124+
</property>
125+
</widget>
126+
</item>
127+
<item row="0" column="0" colspan="2">
128+
<layout class="QGridLayout" name="gridLayout_3">
129+
<property name="spacing">
130+
<number>9</number>
131+
</property>
132+
<item row="1" column="0">
133+
<widget class="QLabel" name="label_2">
134+
<property name="text">
135+
<string>Tradse size</string>
136+
</property>
137+
</widget>
138+
</item>
139+
<item row="1" column="1">
140+
<widget class="QLineEdit" name="lineEdit_3"/>
141+
</item>
142+
<item row="0" column="0">
143+
<widget class="QLabel" name="label">
144+
<property name="text">
145+
<string>Starting cash</string>
146+
</property>
147+
</widget>
148+
</item>
149+
<item row="0" column="1">
150+
<widget class="QLineEdit" name="lineEdit">
151+
<property name="inputMask">
152+
<string/>
153+
</property>
154+
</widget>
155+
</item>
156+
</layout>
157+
</item>
158+
<item row="2" column="0">
159+
<spacer name="verticalSpacer_3">
160+
<property name="orientation">
161+
<enum>Qt::Vertical</enum>
162+
</property>
163+
<property name="sizeType">
164+
<enum>QSizePolicy::Maximum</enum>
165+
</property>
166+
<property name="sizeHint" stdset="0">
167+
<size>
168+
<width>20</width>
169+
<height>20</height>
170+
</size>
171+
</property>
172+
</spacer>
173+
</item>
72174
</layout>
73175
</widget>
74176
</item>

userInterface.py

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -302,7 +302,6 @@ def createStrategyTesterUI(self):
302302

303303
self.strategyResultsUI = strategyResultsUI.StrategyResultsUI(self.controller)
304304
self.dock_strategyResultsUI.addWidget(self.strategyResultsUI)
305-
306305

307306
pass
308307

@@ -369,6 +368,14 @@ def createFinplotWindow(self):
369368
self.fpltWindow.createPlotWidgets()
370369
pass
371370

371+
#
372+
def initialize(self):
373+
374+
self.strategyTesterUI.initialize()
375+
376+
pass
377+
378+
372379
#########
373380
# Show all
374381
#########
@@ -522,4 +529,19 @@ def createTransactionsUI(self, trades):
522529

523530
pass
524531

525-
532+
def fillStrategyParameters(self, items):
533+
534+
# Rest widget rows
535+
for indexRow in range(self.strategyTesterUI.parametersLayout.rowCount()):
536+
self.strategyTesterUI.parametersLayout.removeRow(indexRow)
537+
538+
# Insert parameters
539+
row = 0
540+
for parameterName, parameterValue in items:
541+
label = QtWidgets.QLabel(parameterName)
542+
lineEdit = QtWidgets.QLineEdit(str(parameterValue))
543+
self.strategyTesterUI.parametersLayout.addRow(label, lineEdit )
544+
row = row + 1
545+
pass
546+
547+
pass

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy