Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
wiseplat
GitHub Repository: wiseplat/python-code
Path: blob/master/ invest-robot-contest_tinkoff_trading_contest-main/tinkoff_contest/backtesting_app/models.py
5929 views
1
from django.db import models
2
from knowledge_base.models import Strategy
3
4
# Create your models here.
5
6
7
class StrategyConfig(models.Model):
8
"""
9
Configuration model for strategies, contains json config of parameters
10
"""
11
strategy = models.ForeignKey(Strategy, on_delete=models.CASCADE)
12
configuration = models.JSONField(default=dict({'Empty':'Empty'}), blank=True)
13
14
def __str__(self):
15
return self.strategy.name
16
17
class Meta:
18
verbose_name = 'Конфигурация'
19
verbose_name_plural = 'Конфигурации'
20
21
22
class BacktestResult(models.Model):
23
"""
24
Backtest result
25
"""
26
strategy = models.ForeignKey(Strategy, on_delete=models.CASCADE)
27
stock = models.CharField(max_length=50)
28
timeframe = models.CharField(max_length=5)
29
config = models.JSONField(default=dict({'Empty':'Empty'}), blank=True)
30
start_date = models.DateTimeField()
31
end_date = models.DateTimeField()
32
number_of_trades = models.IntegerField()
33
winning_trades = models.FloatField()
34
profit = models.FloatField()
35
36
def __str__(self):
37
return '_'.join([self.strategy.name, self.stock, self.timeframe,
38
str(self.start_date.year), str(self.start_date.month), str(self.start_date.day),
39
str(self.end_date.year), str(self.end_date.month), str(self.end_date.day),
40
])
41
42
class Meta:
43
verbose_name = 'Результат'
44
verbose_name_plural = 'Результаты'
45
46
47
48