This commit is contained in:
27942
2026-02-21 14:46:34 +08:00
parent 93a9dfb4a7
commit 991135dcb1
5 changed files with 117 additions and 15 deletions

View File

@@ -10,7 +10,14 @@ from DrissionPage import ChromiumOptions
from bitmart.api_contract import APIContract
# 方案B从 strategy 模块获取实盘信号(需先运行 AI 策略训练保存模型,并保持 models/database.db 有最新 15m/5m/1h K 线,例如运行 抓取多周期K线.py
# ---------------------------------------------------------------------------
# 开单逻辑:完全由 方案BAI 策略)驱动
# - 方案Bstrategy.ai_strategy 的 get_live_signal(period=15),返回 0=观望 1=做多 2=做空
# - 每根新 15 分钟 K 线取一次信号,再根据当前持仓转为 开多/开空/反手多/反手空,由 execute_trade 执行开单
# 前置条件:
# 1. 先运行方案B训练并保存模型如 run_scheme_b_train.py 或 strategy.compare 方案B
# 2. models/database.db 中有最新 15m/5m/1h K 线(如运行 抓取多周期K线.py
# ---------------------------------------------------------------------------
sys.path.insert(0, str(Path(__file__).resolve().parent))
from strategy.ai_strategy import get_live_signal
@@ -698,13 +705,13 @@ class BitmartFuturesTransaction:
time.sleep(3)
continue
# 4. 方案B:仅在新的 15 分钟 K 线取一次信号0=观望, 1=做多, 2=做空)
# 4. 方案B 开单:新 15m K 线取一次 AI 信号 -> 转为开仓/反手 -> 下方执行开单
current_15m_id = int(time.time() // 900) * 900 # 15 分钟 bar 起始时间戳
signal = None
if current_15m_id != self.last_kline_time:
self.last_kline_time = current_15m_id
logger.info(f"进入新 15m K 线: {current_15m_id}")
raw = get_live_signal(period=15)
raw = get_live_signal(period=15) # 方案B0=观望 1=做多 2=做空
logger.info(f"方案B 信号: {raw} (0=观望 1=做多 2=做空), 当前持仓: {self.start}")
if raw == 1:
if self.start == 0:
@@ -729,7 +736,7 @@ class BitmartFuturesTransaction:
else:
self._current_kline_id_for_open = current_15m_id # 供 execute_trade 成功后记录
# 6. 有信号则执行交易
# 6. 方案B 开单:有信号则执行(开多/开空/反手多/反手空)
if signal:
trade_success = self.execute_trade(signal)
if trade_success: