This commit is contained in:
2026-09-03 15:27:11 +08:00
parent 9ef063f4ce
commit cf5f33ab9e
4 changed files with 67 additions and 7 deletions

View File

@@ -43,7 +43,7 @@ def open_signal(run:Runtime, ticks, open_signals) -> None:
# 当前价高于昨收价可开仓
if signal_config.gt_last_price_is_open and item.last_close>0 and price>item.last_close:
try:
do_open(run,item.code,volume,item.signal_key)
do_open(run, item.code, volume, item.signal_key, price)
log.info("[Open] %s 信号=%s,买入=%d股,原因=现价高于昨收", item.code, item.signal_key, volume)
except RuntimeError as exc:
log.info("[Open] %s 信号=%s,买入=%d股失败:%s", item.code, item.signal_key, volume, exc)
@@ -56,7 +56,7 @@ def open_signal(run:Runtime, ticks, open_signals) -> None:
continue
try:
do_open(run,item.code,volume,item.signal_key)
do_open(run, item.code, volume, item.signal_key, price)
log.info("[Open] %s 信号=%s,买入=%d股,原因=反弹已确认", item.code, item.signal_key, volume)
except RuntimeError as exc:
log.warning("[Open] %s 信号=%s,买入=%d股失败:%s", item.code, item.signal_key, volume, exc)
@@ -64,7 +64,7 @@ def open_signal(run:Runtime, ticks, open_signals) -> None:
log.exception("[Open] %s 信号=%s,买入=%d股异常", item.code, item.signal_key, volume)
def do_open(run:Runtime,code:str,volume:int,signal_key:str)->None:
def do_open(run: Runtime, code: str, volume: int, signal_key: str, price: float) -> None:
"""生成本地订单号并按最新价提交开仓委托。"""
order_id = run.orders.new_order_id("base")
request = PlaceOrderRequest(
@@ -78,6 +78,16 @@ def do_open(run:Runtime,code:str,volume:int,signal_key:str)->None:
if not run.orders.place(request):
raise RuntimeError("订单提交失败")
run.state.set(StateItem(
code=code,
base_order_id=order_id,
base_qty=volume,
base_cost=round(price, 2),
base_status=STATUS_ING,
))
run.state.save()
run.open_watch.forget(code)
def check_timezone(timezone: str, now: datetime | None = None) -> bool:
"""验证当前时间是否处于配置区间。