From e813d4f7d36f1392e08800ce8ea0dbcfd3cce816 Mon Sep 17 00:00:00 2001 From: Denis Tereshkin Date: Sat, 18 Mar 2017 09:36:13 +0700 Subject: [PATCH] Equity plots --- templates/dashboard/closed_trades.html | 40 ++++++++++++++++++++++++++ views.py | 26 +++++++++++++++-- 2 files changed, 64 insertions(+), 2 deletions(-) diff --git a/templates/dashboard/closed_trades.html b/templates/dashboard/closed_trades.html index cc2ac6e..6e273f9 100644 --- a/templates/dashboard/closed_trades.html +++ b/templates/dashboard/closed_trades.html @@ -4,6 +4,7 @@ {% load mathfilters %} {% block content %} +
Apply filter... @@ -17,6 +18,8 @@
+
+
@@ -39,5 +42,42 @@ {% endfor %}
+ {% endblock %} diff --git a/views.py b/views.py index a291893..bc6ce84 100644 --- a/views.py +++ b/views.py @@ -158,6 +158,25 @@ def aggregate_unbalanced_trades(): tr.balanced = True tr.save() +def make_cumulative_profits(closed_trades): + result = {} + for trade in closed_trades: + try: + result[trade.account]['value'] += trade.profit + except KeyError: + result[trade.account] = { 'name' : trade.account, + 'value' : trade.profit, + 'elements' : [] } + + element = {'year' : trade.exitTime.year, + 'month' : trade.exitTime.month, + 'day' : trade.exitTime.day, + 'hour' : trade.exitTime.hour, + 'minute' : trade.exitTime.minute, + 'second' : trade.exitTime.second, + 'value' : result[trade.account]['value']} + result[trade.account]['elements'].append(element) + return result def closed_trades_index(request): aggregate_unbalanced_trades() @@ -178,12 +197,15 @@ def closed_trades_index(request): closed_trades = ClosedTrade.objects.all() form = ClosedTradeFilterForm() - closed_trades = closed_trades.order_by('-entryTime') + closed_trades = closed_trades.order_by('-exitTime') + + cum_profits = make_cumulative_profits(closed_trades) template = loader.get_template('dashboard/closed_trades.html') context = { 'closed_trades' : closed_trades, - 'closed_trades_filter_form' : form + 'closed_trades_filter_form' : form, + 'cumulative_profits' : cum_profits } return HttpResponse(template.render(context, request))