6
6
7
7
8
8
class Trade (CustomSerializable ):
9
- def __init__ (self , symbol , side , asset , sl_settings = None , status = None , entry = None , exit = None ):
10
-
9
+ # def __init__(self, symbol, side, asset, status =None, sl_settings =None, entry=None, exit=None):
10
+ def __init__ ( self , symbol , side , asset , status = None , * args , ** kvargs ):
11
11
self .side = Side (side .lower ())
12
12
self .symbol = symbol .upper ()
13
13
self .asset = asset .upper ()
14
14
15
15
self .entry : EntryExitSettings = None
16
16
self .exit : EntryExitSettings = None
17
17
18
- self ._init_entry_exit (True , entry , self .side )
19
- self ._init_entry_exit (False , exit , self .side )
18
+ self ._init_entry_exit (True , kvargs . get ( ' entry' ) , self .side )
19
+ self ._init_entry_exit (False , kvargs . get ( ' exit' ) , self .side )
20
20
21
- self .sl_settings = StopLossSettings (** sl_settings ) if sl_settings else None
21
+ self .sl_settings = StopLossSettings (** kvargs . get ( ' sl_settings' )) if kvargs . get ( ' sl_settings' ) else None
22
22
23
23
if status :
24
24
self .status = OrderStatus (status .lower ())
25
25
else :
26
- self .status = OrderStatus .ACTIVE if not entry else OrderStatus .NEW
26
+ self .status = OrderStatus .ACTIVE if not kvargs .get ('entry' ) else OrderStatus .NEW
27
+
28
+ self .cap = float (kvargs .get ('cap' )) if kvargs .get ('cap' ) else None
27
29
28
30
def _init_entry_exit (self , is_entry , data , side : Side ):
29
31
if data :
@@ -35,6 +37,9 @@ def _init_entry_exit(self, is_entry, data, side: Side):
35
37
else :
36
38
self .exit = EntryExitSettings (is_entry = is_entry , ** data )
37
39
40
+ def get_cap (self , available_balance ):
41
+ return min (self .cap if self .cap else available_balance , available_balance )
42
+
38
43
def is_sell (self ):
39
44
return self .side .is_sell ()
40
45
@@ -63,6 +68,8 @@ def serializable_dict(self):
63
68
d .pop ('entry' , None )
64
69
if not self .exit :
65
70
d .pop ('exit' , None )
71
+ if not self .cap :
72
+ d .pop ('cap' , None )
66
73
return d
67
74
68
75
def get_all_active_placed_targets (self ) -> List [Target ]:
0 commit comments