Browse Source

Closed trades: filtration

master
Denis Tereshkin 9 years ago
parent
commit
3f0c2ee5b7
  1. 17
      forms.py
  2. 12
      templates/dashboard/closed_trades.html
  3. 23
      views.py

17
forms.py

@ -1,4 +1,13 @@ @@ -1,4 +1,13 @@
from django import forms
from .models import ClosedTrade
def get_all_accounts_and_strategies():
all_accounts = set()
all_strategies = set()
for trade in ClosedTrade.objects.all():
all_accounts.add(trade.account)
all_strategies.add(trade.strategyId)
return (all_accounts, all_strategies)
class NewTradeForm(forms.Form):
timestamp = forms.DateTimeField()
@ -12,3 +21,11 @@ class NewTradeForm(forms.Form): @@ -12,3 +21,11 @@ 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):
super().__init__(*args, **kwargs)
all_accounts, all_strategies = get_all_accounts_and_strategies()
self.fields['accounts'] = forms.MultipleChoiceField(choices=zip(list(all_accounts), list(all_accounts)))
self.fields['strategies'] = forms.MultipleChoiceField(choices=zip(list(all_strategies), list(all_strategies)))

12
templates/dashboard/closed_trades.html

@ -4,6 +4,18 @@ @@ -4,6 +4,18 @@
{% load mathfilters %}
{% block content %}
<div class="panel panel-default">
<div class="panel-header">
<a href="#closed_trades_filter_form" role="button" data-toggle="collapse">Apply filter...</a>
</div>
<div class="panel-body panel-collapse collapse" id="closed_trades_filter_form">
<form action="{% url 'closed_trades_index' %}" method="GET">
{% csrf_token %}
{% bootstrap_form closed_trades_filter_form %}
{% bootstrap_button button_type='submit' content='Submit' %}
</form>
</div>
</div>
<table class="table table-condensed">
<tr>
<td></td>

23
views.py

@ -7,7 +7,7 @@ from django.contrib import messages @@ -7,7 +7,7 @@ from django.contrib import messages
from django.db import transaction
from .models import RobotInstance, Trade, ClosedTrade
from .forms import NewTradeForm
from .forms import NewTradeForm, ClosedTradeFilterForm
import redis
import json
import datetime
@ -160,10 +160,27 @@ def aggregate_unbalanced_trades(): @@ -160,10 +160,27 @@ def aggregate_unbalanced_trades():
def closed_trades_index(request):
form = ClosedTradeFilterForm(request.GET)
if form.is_valid():
d = form.cleaned_data
if len(d['accounts']) == 0:
if len(d['strategies']) == 0:
closed_trades = ClosedTrade.objects.all()
else:
closed_trades = ClosedTrade.objects.filter(strategyId__in=list(d['strategies']))
else:
if len(d['strategies']) == 0:
closed_trades = ClosedTrade.objects.filter(account__in=list(d['accounts']))
else:
closed_trades = ClosedTrade.objects.filter(account__in=list(d['accounts']), strategyId__in=list(d['strategies']))
else:
closed_trades = ClosedTrade.objects.all()
form = ClosedTradeFilterForm()
aggregate_unbalanced_trades()
closed_trades = ClosedTrade.objects.all()
template = loader.get_template('dashboard/closed_trades.html')
context = {
'closed_trades' : closed_trades
'closed_trades' : closed_trades,
'closed_trades_filter_form' : form
}
return HttpResponse(template.render(context, request))

Loading…
Cancel
Save