This commit is contained in:
2026-09-05 14:30:16 +08:00
parent 2059f87fe5
commit ba1bd93afa
4 changed files with 7 additions and 20 deletions

View File

@@ -81,7 +81,6 @@ def do_open(run: Runtime, code: str, volume: int, signal_key: str, price: float)
"""生成本地订单号并按最新价提交开仓委托。"""
order_id = run.orders.new_order_id()
request = PlaceOrderRequest(
run.client,
OP_BUY,
code,
volume,
@@ -89,7 +88,7 @@ def do_open(run: Runtime, code: str, volume: int, signal_key: str, price: float)
signal_key,
kind="base",
)
if not run.orders.place(request):
if not run.orders.place(run.client,request):
raise RuntimeError("订单提交失败")
run.open_watch.forget(code)

View File

@@ -88,7 +88,7 @@ class OrderBook:
self.busy_keys = busy_keys
logging.info("[Order] 刷新完成,跟踪=%d,处理中=%d,撤销=%d", len(data), len(busy_keys), canceled)
def place(self, request: PlaceOrderRequest) -> bool:
def place(self, client: Client, request: PlaceOrderRequest) -> bool:
"""按最新价提交委托,并立即写入本地方向锁。"""
side = ORDER_SIDE_BY_OFFSET.get(str(request.op), "")
if not side:
@@ -103,7 +103,7 @@ class OrderBook:
self.busy_cache.set(key, True, timeout=self.lock_timeout_sec)
try:
result = request.client.passorder(
result = client.passorder(
op_type=request.op,
stock_code=request.code,
volume=request.volume,

View File

@@ -31,17 +31,10 @@ def manage_positions(
market_ok: bool,
available: float,
) -> None:
"""处理所有真实持仓,并在本轮内统一控制补仓预算。"""
active_keys = {
_position_key(runtime, position.stock_code)
for position in positions
if position.volume > 0 and position.stock_code
}
runtime.profit_tracker.retain(active_keys)
remaining_cash = max(0.0, available)
# 遍历处理每个持仓
for position in positions:
try:
available = max(0,0,available)
code = position.stock_code
tick = ticks.get(code)
if code in runtime.account_cfg.excluded_codes:
@@ -77,9 +70,9 @@ def manage_positions(
position=position,
tick=tick,
pnl_rate=pnl_rate,
available=remaining_cash,
available=available,
)
remaining_cash -= loss_decision.reserved_cash
available = available - loss_decision.reserved_cash
loss_add_action = loss_decision.message or "未触发"
elif runtime.account_cfg.enable_loss_add_position:
loss_add_action = "大盘信号不允许"