@@ -99,8 +99,8 @@ def _get_order(self, offset, vol, pending_frozen):
99
99
else :
100
100
frozen_volume = pending_frozen + sum ([order .volume_left for order in self .pos .orders .values () if
101
101
not order .is_dead and order .offset != "OPEN" and order .direction == order_dir ])
102
- if (
103
- self .pos .pos_short_today if vol > 0 else self .pos .pos_long_today ) - frozen_volume > 0 : # 判断是否有未冻结的今仓手数: 若有则不平昨仓
102
+ # 判断是否有未冻结的今仓手数: 若有则不平昨仓
103
+ if ( self .pos .pos_short_today if vol > 0 else self .pos .pos_long_today ) - frozen_volume > 0 :
104
104
pos_all = frozen_volume
105
105
order_volume = min (abs (vol ), max (0 , pos_all - frozen_volume ))
106
106
elif offset == "今" :
@@ -212,7 +212,7 @@ async def _run(self):
212
212
self .volume = order .volume_left
213
213
if self .volume != 0 and not check_task .done ():
214
214
raise Exception ("遇到错单: %s %s %s %d手 %f %s" % (
215
- self .symbol , self .direction , self .offset , self .volume , limit_price , order .last_msg ))
215
+ self .symbol , self .direction , self .offset , self .volume , limit_price , order .last_msg ))
216
216
finally :
217
217
await check_chan .close ()
218
218
await check_task
@@ -288,10 +288,10 @@ def __init__(self, api, symbol, direction, offset, volume, limit_price=None, ord
288
288
async def _run (self ):
289
289
"""负责下单的task"""
290
290
order = self .api .insert_order (self .symbol , self .direction , self .offset , self .volume , self .limit_price )
291
- last_order = order .copy ()
291
+ last_order = order .copy () # 保存当前 order 的状态
292
292
last_left = self .volume
293
293
async with self .api .register_update_notify () as update_chan :
294
- await self .order_chan .send (last_order )
294
+ await self .order_chan .send (last_order . copy ()) # 将副本的数据及所有权转移
295
295
while order .status != "FINISHED" or (order .volume_orign - order .volume_left ) != sum (
296
296
[trade .volume for trade in order .trade_records .values ()]):
297
297
await update_chan .recv ()
@@ -301,4 +301,4 @@ async def _run(self):
301
301
await self .trade_chan .send (vol if order .direction == "BUY" else - vol )
302
302
if order != last_order :
303
303
last_order = order .copy ()
304
- await self .order_chan .send (last_order )
304
+ await self .order_chan .send (last_order . copy () )
0 commit comments