-
Notifications
You must be signed in to change notification settings - Fork 0
/
chart.py
119 lines (109 loc) · 3.56 KB
/
chart.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
import c3pyo as c3
from collections import Counter
import db
# create chart for day trades
def chartDayTrades(dayTrades):
x = range(0, len(dayTrades)+1)
y = [0]
totalLoss = [0]
tl = 0
for item in dayTrades:
# print(item[10])
y.append(item[10])
tl += item[10]
totalLoss.append(tl)
dailyChart = c3.LineChart()
dailyChart.plot(x, y, color="orange", label="Profits")
dailyChart.plot(x, totalLoss, label="Total P/L:")
dailyChart.bind_to('dailyChart')
return dailyChart.json()
# create chart to display monthly trades
def monthlyChart(monthTrades):
x = range(0, len(monthTrades)+1)
y = [0]
totalLoss = [0]
tl = 0
for item in monthTrades:
y.append(item[10])
tl += item[10]
totalLoss.append(tl)
monthlyChart = c3.LineChart()
monthlyChart.plot(x, y, color="orange", label="Profits")
monthlyChart.plot(x, totalLoss, label="Total P/L:")
monthlyChart.bind_to('monthlychart')
return monthlyChart.json()
# create a chart to display all trades
def allTradesChart():
alltrades = db.getAllTrades()
startbal = db.getStartingBalance()
tradeprofits = [startbal[0][1]]
x = range(0, len(alltrades)+1)
y = [0]
totalLoss = [startbal]
tl = 0
newbal = startbal[0][1]
for trade in alltrades:
y.append(float(trade[10]))
tl += trade[10]
newbal += float(trade[10])
tradeprofits.append(newbal)
totalLoss.append(tl)
allTradesChart = c3.LineChart()
allTradesChart.plot(x, y, color="orange", label="Profits")
allTradesChart.plot(x, totalLoss, label="Total P/L")
allTradesChart.plot(x, tradeprofits, label="Account Balance")
allTradesChart.bind_to('alltradeschart')
return allTradesChart.json()
# create a pie chart to display the win/loss
def winlossPieChart():
alltrades = db.getAllTrades()
win = 0
loss = 0
breakEven = 0
for trade in alltrades:
if float(trade[10]) > 0.00:
win += 1
elif float(trade[10]) < 0.00:
loss += 1
else:
breakEven += 1
winlossChart = c3.PieChart()
winlossChart.plot(win, label="Win", color="green")
winlossChart.plot(loss, label="Loss", color="red")
winlossChart.plot(breakEven, label="Break Even", color="grey")
winlossChart.subchart(show_subchart=True)
winlossChart.bind_to('winlossPie')
return winlossChart.json()
# create a pie chart to display win/loss by system used
def systemPieChart():
systemTrades = db.getAllTrades()
tradingSystems = []
for trade in systemTrades:
t = trade[12].split(',')
if len(t) > 1:
for i in t:
tradingSystems.append(i.strip())
else:
tradingSystems.append(trade[12])
res = Counter(tradingSystems)
systemPieChart = c3.PieChart()
for item in res:
systemPieChart.plot(res[item], label=item)
systemPieChart.bind_to("systempie")
return systemPieChart.json()
# create a weekly chart
def weeklyChart():
weeklyTrades = db.getWeeklyTrades()
x = range(0, len(weeklyTrades)+1)
y = [0]
totalLoss = [0]
tl = 0
for item in weeklyTrades:
y.append(item[10])
tl += item[10]
totalLoss.append(tl)
weeklyChart = c3.LineChart()
weeklyChart.plot(x, y, color="orange", label="Profits")
weeklyChart.plot(x, totalLoss, label="Total P/L:")
weeklyChart.bind_to('weeklychart')
return weeklyChart.json()