Skip to content

Commit d05b62d

Browse files
committed
Starting cash is now OK
1 parent f8a8b68 commit d05b62d

File tree

2 files changed

+36
-19
lines changed

2 files changed

+36
-19
lines changed

Controller.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -77,11 +77,9 @@ def __init__(self):
7777

7878
# Once everything is created, initialize data
7979
self.interface.initialize()
80-
81-
82-
8380
pass
8481

82+
8583
def loadData(self, dataPath):
8684

8785
self.dataframe = pd.read_csv(dataPath, sep='\t', parse_dates=[0], date_parser=lambda x: pd.to_datetime(x, format='%Y-%m-%d %H:%M:%S'),skiprows=0,header=0,index_col=0)
@@ -96,9 +94,9 @@ def loadData(self, dataPath):
9694

9795
# Draw charts based on input data
9896
self.interface.drawChart(self.dataframe)
99-
10097
pass
10198

99+
102100
def addStrategy(self, strategyName):
103101

104102
#For now, only one strategy is allowed at a time
@@ -113,6 +111,7 @@ def addStrategy(self, strategyName):
113111
self.cerebro.addstrategy(klass)
114112
pass
115113

114+
116115
def run(self):
117116

118117
# Compute strategy results
@@ -123,6 +122,7 @@ def run(self):
123122
self.displayStrategyResults()
124123
pass
125124

125+
126126
def displayStrategyResults(self):
127127
# Stats on trades
128128
#portfolio_stats = self.strat_results.analyzers.getbyname('PyFolio')
@@ -157,8 +157,15 @@ def displayStrategyResults(self):
157157
self.interface.displayPnL( pd.DataFrame(pnl_data) )
158158

159159
pass
160+
160161

161162
def displayUI(self):
162163

163164
self.interface.show()
165+
pass
166+
167+
168+
def cashChanged(self, cash):
169+
if len(cash) > 0:
170+
self.cerebro.broker.setcash(float(cash))
164171
pass

userInterface.py

Lines changed: 25 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -305,6 +305,13 @@ def createStrategyTesterUI(self):
305305

306306
#
307307
self.strategyTesterUI.startingCashLE.setText(str(self.controller.cerebro.broker.cash))
308+
309+
validator = QtGui.QDoubleValidator(-9999999, 9999999, 6, self.strategyTesterUI.startingCashLE)
310+
validator.setLocale(QtCore.QLocale("en"))
311+
self.strategyTesterUI.startingCashLE.setValidator( validator )
312+
313+
self.strategyTesterUI.startingCashLE.textChanged.connect( self.controller.cashChanged )
314+
308315
# self.interface.tradesSizeLE.setValue(self.cerebro.broker.cash)
309316

310317
pass
@@ -339,28 +346,31 @@ def fillSummaryUI(self, brokerCash, brokerValue, tradeAnalysis):
339346
self.summaryTableWidget.setItem(1,0,QtWidgets.QTableWidgetItem("Value"))
340347
self.summaryTableWidget.setItem(1,1,QtWidgets.QTableWidgetItem(str(brokerValue)))
341348

342-
self.summaryTableWidget.setItem(2,0,QtWidgets.QTableWidgetItem("Profit total"))
343-
self.summaryTableWidget.setItem(2,1,QtWidgets.QTableWidgetItem(str(tradeAnalysis["pnl"]["net"]["total"])))
349+
# if there are some trades
350+
if len(tradeAnalysis) > 1:
351+
352+
self.summaryTableWidget.setItem(2,0,QtWidgets.QTableWidgetItem("Profit total"))
353+
self.summaryTableWidget.setItem(2,1,QtWidgets.QTableWidgetItem(str(tradeAnalysis["pnl"]["net"]["total"])))
344354

345-
self.summaryTableWidget.setItem(3,0,QtWidgets.QTableWidgetItem("Number of trades"))
346-
self.summaryTableWidget.setItem(3,1,QtWidgets.QTableWidgetItem(str(tradeAnalysis["total"]["total"])))
355+
self.summaryTableWidget.setItem(3,0,QtWidgets.QTableWidgetItem("Number of trades"))
356+
self.summaryTableWidget.setItem(3,1,QtWidgets.QTableWidgetItem(str(tradeAnalysis["total"]["total"])))
347357

348-
self.summaryTableWidget.setItem(4,0,QtWidgets.QTableWidgetItem("Won"))
349-
self.summaryTableWidget.setItem(4,1,QtWidgets.QTableWidgetItem(str(tradeAnalysis["won"]['total'])))
358+
self.summaryTableWidget.setItem(4,0,QtWidgets.QTableWidgetItem("Won"))
359+
self.summaryTableWidget.setItem(4,1,QtWidgets.QTableWidgetItem(str(tradeAnalysis["won"]['total'])))
350360

351-
self.summaryTableWidget.setItem(5,0,QtWidgets.QTableWidgetItem("Lost"))
352-
self.summaryTableWidget.setItem(5,1,QtWidgets.QTableWidgetItem(str(tradeAnalysis["lost"]['total'])))
361+
self.summaryTableWidget.setItem(5,0,QtWidgets.QTableWidgetItem("Lost"))
362+
self.summaryTableWidget.setItem(5,1,QtWidgets.QTableWidgetItem(str(tradeAnalysis["lost"]['total'])))
353363

354-
self.summaryTableWidget.setItem(6,0,QtWidgets.QTableWidgetItem("Long"))
355-
self.summaryTableWidget.setItem(6,1,QtWidgets.QTableWidgetItem(str(tradeAnalysis["long"]["total"])))
364+
self.summaryTableWidget.setItem(6,0,QtWidgets.QTableWidgetItem("Long"))
365+
self.summaryTableWidget.setItem(6,1,QtWidgets.QTableWidgetItem(str(tradeAnalysis["long"]["total"])))
356366

357-
self.summaryTableWidget.setItem(7,0,QtWidgets.QTableWidgetItem("Short"))
358-
self.summaryTableWidget.setItem(7,1,QtWidgets.QTableWidgetItem(str(tradeAnalysis["short"]["total"])))
367+
self.summaryTableWidget.setItem(7,0,QtWidgets.QTableWidgetItem("Short"))
368+
self.summaryTableWidget.setItem(7,1,QtWidgets.QTableWidgetItem(str(tradeAnalysis["short"]["total"])))
359369

360-
self.summaryTableWidget.horizontalHeader().setStretchLastSection(True)
361-
self.summaryTableWidget.horizontalHeader().setSectionResizeMode(QtWidgets.QHeaderView.Stretch)
370+
self.summaryTableWidget.horizontalHeader().setStretchLastSection(True)
371+
self.summaryTableWidget.horizontalHeader().setSectionResizeMode(QtWidgets.QHeaderView.Stretch)
362372

363-
self.summaryTableWidget.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows)
373+
self.summaryTableWidget.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows)
364374

365375
pass
366376

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