@@ -36,13 +36,13 @@ def log(self, txt, dt=None):
36
36
print ('%s, %s' % (dt .isoformat (), txt ))
37
37
38
38
def notify_order (self , order ):
39
- print ( '{}: Order ref: {} / Type {} / Status {}' . format (
40
- self . data . datetime . date ( 0 ),
41
- order . ref , 'Buy' * order . isbuy () or 'Sell' ,
42
- order .getstatusname ()))
43
-
44
- if order . status == order .Completed :
45
- self . holdstart = len ( self )
39
+ if order . getstatusname () not in [ 'Accepted' , 'Submitted' ]:
40
+ print ( '{}: Order ref: {} / Type: {} / Status: {} / Price: {:.4f}' . format (
41
+ self . data . datetime . date ( 0 ) ,
42
+ order .ref , 'Buy' * order . isbuy () or 'Sell' ,
43
+ order . getstatusname (),
44
+ order .price
45
+ ) )
46
46
47
47
if not order .alive () and order .ref in self .orefs :
48
48
self .orefs .remove (order .ref )
@@ -85,6 +85,27 @@ def next(self):
85
85
86
86
self .orefs = [o .ref for o in os ]
87
87
88
+ if predicted_close < prev_predicted_close :
89
+ close = self .data .close [0 ]
90
+ p1 = close * (1.0 + self .p .limit )
91
+ p2 = p1 + 0.02 * close
92
+ p3 = p1 - 0.06 * close
93
+ print ('p1: {:.4f}, p2: {:.4f}, p3: {:.4f}' .format (
94
+ p1 ,
95
+ p2 ,
96
+ p3
97
+ ))
98
+
99
+ valid1 = timedelta (self .p .limdays )
100
+ valid2 = valid3 = timedelta (self .p .limdays2 )
101
+
102
+ os = self .sell_bracket (
103
+ price = p1 , valid = valid1 ,
104
+ stopprice = p2 , stopargs = dict (valid = valid2 ),
105
+ limitprice = p3 , limitargs = dict (valid = valid3 ), )
106
+
107
+ self .orefs = [o .ref for o in os ]
108
+
88
109
# if not self.position:
89
110
# if predicted_close > prev_predicted_close:
90
111
# self.order = self.buy()
0 commit comments