diff --git a/forms.py b/forms.py index a74db1c..42fdeb0 100644 --- a/forms.py +++ b/forms.py @@ -26,8 +26,8 @@ class NewTradeForm(forms.Form): strategyId = forms.CharField(max_length=64) signalId = forms.CharField(max_length=64) -class ClosedTradeFilterForm(forms.Form): - def __init__(self, *args, **kwargs): +class TradeFilterForm(forms.Form): + def __init__(self, *args, show_unbalanced_checkbox=False, **kwargs): super().__init__(*args, **kwargs) now = datetime.date.today() @@ -37,4 +37,8 @@ class ClosedTradeFilterForm(forms.Form): self.fields['strategies'] = forms.MultipleChoiceField(choices=zip(sorted(list(all_strategies)), sorted(list(all_strategies))), required=False) self.fields['startdate'] = forms.DateField(initial=(now - datetime.timedelta(weeks=4))) self.fields['enddate'] = forms.DateField(initial=now) - self.fields['unbalanced_only'] = forms.BooleanField(required=False) + try: + if show_unbalanced_checkbox: + self.fields['unbalanced_only'] = forms.BooleanField(required=False) + except KeyError: + pass diff --git a/views.py b/views.py index 5dfc28a..952b859 100644 --- a/views.py +++ b/views.py @@ -11,7 +11,7 @@ from django.contrib.auth import authenticate, login, logout from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger from .models import RobotInstance, Trade, ClosedTrade -from .forms import NewTradeForm, ClosedTradeFilterForm, LoginForm +from .forms import NewTradeForm, TradeFilterForm, LoginForm import redis import json import datetime @@ -131,7 +131,7 @@ def trades_index(request): now = datetime.datetime.utcnow() new_trade_form = NewTradeForm(initial={'timestamp' : now}) trades = Trade.objects.all().order_by('-timestamp') - form_filter = ClosedTradeFilterForm(request.GET) + form_filter = TradeFilterForm(request.GET, show_unbalanced_checkbox=True) if form_filter.is_valid(): d = form_filter.cleaned_data if len(d['strategies']) > 0: @@ -149,7 +149,7 @@ def trades_index(request): else: now = datetime.date.today() - form_filter = ClosedTradeFilterForm() + form_filter = TradeFilterForm(show_unbalanced_checkbox=True) paginator = Paginator(trades, 25) try: @@ -229,7 +229,7 @@ def aggregate_unbalanced_trades(): else: direction='short' balance_entry['trade'] = ClosedTrade(account=trade.account, security=trade.security, entryTime=trade.timestamp, profitCurrency=trade.volumeCurrency, - profit=(-trade.price * trade.quantity), strategyId=trade.strategyId, direction=direction) + profit=(-trade.price * trade.quantity), strategyId=trade.strategyId, direction=direction) balance_entry['ks'] = trade.volume / trade_volume balance_entry['trade_ids'] = [trade.pk] balance_entry['commissions'] = trade.commission @@ -282,7 +282,7 @@ def make_cumulative_profits(closed_trades): @login_required def closed_trades_index(request): aggregate_unbalanced_trades() - form = ClosedTradeFilterForm(request.GET) + form = TradeFilterForm(request.GET) if form.is_valid(): d = form.cleaned_data closed_trades = ClosedTrade.objects.all() @@ -299,7 +299,7 @@ def closed_trades_index(request): else: now = datetime.date.today() closed_trades = ClosedTrade.objects.all().filter(exitTime__gte=(now - datetime.timedelta(weeks=4))) - form = ClosedTradeFilterForm() + form = TradeFilterForm() closed_trades = closed_trades.order_by('-exitTime')