Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
wiseplat
GitHub Repository: wiseplat/python-code
Path: blob/master/ invest-robot-contest_tinkoff-invest-volume-analysis-robot-master/domains/order.py
5932 views
1
from datetime import datetime
2
from typing import Dict
3
4
from utils.parse_util import get_float_from_dict, get_int_value, get_datetime_value
5
6
7
class Order(object):
8
order_id = None
9
close: float = 0
10
result: float = 0
11
is_win: bool = False
12
# todo перейти на enum
13
status: str = "active"
14
15
def __init__(
16
self,
17
id: str,
18
group_id: str,
19
instrument: str,
20
open: float,
21
stop: float,
22
take: float,
23
quantity: int,
24
direction: int,
25
time: datetime,
26
status: str = "active",
27
result: float = 0,
28
is_win: bool = False,
29
close: float = 0
30
):
31
self.id = id
32
self.group_id = group_id
33
self.instrument = instrument
34
self.open = open
35
self.close = close
36
self.stop = stop
37
self.take = take
38
self.quantity = quantity
39
self.direction = direction
40
self.time = time
41
self.status = status
42
self.result = result
43
self.is_win = is_win
44
45
def __iter__(self) -> Dict:
46
yield "id", self.id
47
yield "group_id", self.group_id
48
yield "instrument", self.instrument
49
yield "open", self.open
50
yield "close", self.close
51
yield "stop", self.stop
52
yield "take", self.take
53
yield "quantity", self.quantity
54
yield "direction", self.direction
55
yield "time", self.time
56
yield "status", self.status
57
yield "result", self.result
58
yield "is_win", self.is_win
59
60
def __str__(self) -> str:
61
return "Order{id=%s, " \
62
"group_id=%s, " \
63
"instrument=%s, " \
64
"open=%s, " \
65
"close=%s, " \
66
"stop=%s, " \
67
"take=%s, " \
68
"quantity=%s, " \
69
"direction=%s, " \
70
"time=%s, " \
71
"status=%s, " \
72
"result=%s, " \
73
"is_win=%s}" % \
74
(self.id,
75
self.group_id,
76
self.instrument,
77
self.open,
78
self.close,
79
self.stop,
80
self.take,
81
self.quantity,
82
self.direction,
83
self.time,
84
self.status,
85
self.result,
86
self.is_win)
87
88
def __repr__(self) -> str:
89
return "Order{id=%s, " \
90
"group_id=%s, " \
91
"instrument=%s, " \
92
"open=%s, " \
93
"close=%s, " \
94
"stop=%s, " \
95
"take=%s, " \
96
"quantity=%s, " \
97
"direction=%s, " \
98
"time=%s, " \
99
"status=%s, " \
100
"result=%s, " \
101
"is_win=%s}" % \
102
(self.id,
103
self.group_id,
104
self.instrument,
105
self.open,
106
self.close,
107
self.stop,
108
self.take,
109
self.quantity,
110
self.direction,
111
self.time,
112
self.status,
113
self.result,
114
self.is_win)
115
116
@staticmethod
117
def from_dict(order_dict: Dict):
118
return Order(
119
id=order_dict.get("id"),
120
group_id=order_dict.get("group_id"),
121
instrument=order_dict.get("instrument"),
122
open=get_float_from_dict(order_dict, "open"),
123
close=get_float_from_dict(order_dict, "close"),
124
stop=get_float_from_dict(order_dict, "stop"),
125
take=get_float_from_dict(order_dict, "take"),
126
quantity=get_int_value(order_dict, "quantity"),
127
direction=get_int_value(order_dict, "direction"),
128
time=get_datetime_value(order_dict, "time"),
129
status=order_dict.get("status"),
130
result=get_float_from_dict(order_dict, "result"),
131
is_win=order_dict.get("is_win")
132
)
133
134