This commit is contained in:
2026-09-09 18:40:57 +08:00
parent 32460e37bc
commit 72a49bc741

View File

@@ -2,6 +2,7 @@
from datetime import datetime from datetime import datetime
from functools import lru_cache from functools import lru_cache
import math
from libs import calc_buy_volume from libs import calc_buy_volume
from sdk import OP_BUY from sdk import OP_BUY
@@ -13,8 +14,9 @@ import logging as log
def open_signal(run: Runtime, ticks, open_signals) -> None: def open_signal(run: Runtime, ticks, open_signals) -> None:
"""逐个验证开仓信号并提交买入委托。""" """逐个验证开仓信号并提交买入委托。"""
for item in open_signals: for item in open_signals:
if item.last_close <= 0: try:
log.info("[OpenSkip] %s 信号=%s,跳过:信号无效,last_close小于0", item.code, item.signal_key) if not math.isfinite(item.last_close) or item.last_close <= 0:
log.info("[OpenSkip] %s 信号=%s跳过信号无效last_close不是有限正数", item.code, item.signal_key)
continue continue
if item.code in run.account_cfg.excluded_codes: if item.code in run.account_cfg.excluded_codes:
@@ -39,7 +41,7 @@ def open_signal(run: Runtime, ticks, open_signals) -> None:
# 3. 验证行情和最新价格是否有效。 # 3. 验证行情和最新价格是否有效。
tick = ticks.get(item.code) tick = ticks.get(item.code)
price = tick.last_price if tick is not None else 0 price = tick.last_price if tick is not None else 0
if price <= 0: if not math.isfinite(price) or price <= 0:
log.info("[OpenSkip] %s 信号=%s,跳过:价格无效", item.code, item.signal_key) log.info("[OpenSkip] %s 信号=%s,跳过:价格无效", item.code, item.signal_key)
continue continue
@@ -50,7 +52,6 @@ def open_signal(run: Runtime, ticks, open_signals) -> None:
continue continue
# 根据信号key做相关判断 # 根据信号key做相关判断
try:
# 早市信号,逢涨可买入 # 早市信号,逢涨可买入
if item.signal_key == "morning" and signal_config.gt_last_price_is_open: if item.signal_key == "morning" and signal_config.gt_last_price_is_open:
if price > item.last_close: if price > item.last_close:
@@ -68,9 +69,9 @@ def open_signal(run: Runtime, ticks, open_signals) -> None:
do_open(run, item.code, volume, item.signal_key, price) do_open(run, item.code, volume, item.signal_key, price)
except RuntimeError as exc: except RuntimeError as exc:
log.exception("[OpenError] %s 信号=%s买入=%d失败:%s",item.code,item.signal_key,volume,exc) log.exception("[OpenRuntimeError] %s 信号=%s,失败:%s",item.code,item.signal_key,exc)
except Exception: except Exception as err:
log.exception("[OpenError] %s 信号=%s买入=%d异常",item.code,item.signal_key,volume) log.exception("[OpenExceptionError] %s 信号=%s,异常%s",item.code,item.signal_key,err)
continue continue