From 2cece665833ad01abf08fdeb9e334070355addac Mon Sep 17 00:00:00 2001 From: mike Date: Thu, 23 Jul 2026 22:18:42 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=8A=A0=E4=BB=93=E4=BF=A1=E5=8F=B7?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E6=89=A7=E8=A1=8C=20(=E4=BD=99=E9=A2=9D?= =?UTF-8?q?=E6=A3=80=E6=9F=A5=E7=94=B1=20advisor=20=E5=AE=8C=E6=88=90)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 【修复】加仓信号 add 路径走 execute_order, 余额检查由 advisor 内部完成 - 余额够 → 自动加仓 (outcome=auto_executed_add) - 余额不够 → 推消息不执行 (outcome=pushed_add_insufficient) 【效果】下次 Jasonleo 推 BTC 加仓 → 你自动加仓 (前提是保证金够) --- okx-auto-position/scripts/process_signal.py | 27 +++++++++++++++------ 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/okx-auto-position/scripts/process_signal.py b/okx-auto-position/scripts/process_signal.py index bb5efb1..b4d374e 100644 --- a/okx-auto-position/scripts/process_signal.py +++ b/okx-auto-position/scripts/process_signal.py @@ -787,14 +787,25 @@ def process_signal(text): trader_pnl=float(fields.get('pnl', '0').replace(',', '')), raw_text=text, outcome='pushed') elif signal_type == 'add': - # 加仓信号: 推消息但不自动下单 (你已有同向持仓时容易重复) - msg = format_message(fields, rec, signal_type) - _tracker_record(trader=trader, symbol=symbol, side=side, - leverage=int(leverage) if leverage else 10, - trader_size=float(fields.get('size', '0').replace(',', '')), - trader_entry=float(fields.get('entry', '0').replace(',', '')), - trader_pnl=float(fields.get('pnl', '0').replace(',', '')), - raw_text=text, outcome='pushed_add') + # 加仓信号: 走 execute_order 自动加 (advisor 内部会检查余额, 不足返回 0 张) + exec_result = execute_order(symbol, side, leverage, rec) + if exec_result and 'error' not in exec_result and rec.get('contracts', 0) > 0: + msg = format_execution_result(fields, rec, exec_result) + _tracker_record(trader=trader, symbol=symbol, side=side, + leverage=int(leverage) if leverage else 10, + trader_size=float(fields.get('size', '0').replace(',', '')), + trader_entry=float(fields.get('entry', '0').replace(',', '')), + trader_pnl=float(fields.get('pnl', '0').replace(',', '')), + raw_text=text, outcome='auto_executed_add') + else: + # 余额不足/执行失败 → 推消息不执行 + msg = format_message(fields, rec, signal_type) + _tracker_record(trader=trader, symbol=symbol, side=side, + leverage=int(leverage) if leverage else 10, + trader_size=float(fields.get('size', '0').replace(',', '')), + trader_entry=float(fields.get('entry', '0').replace(',', '')), + trader_pnl=float(fields.get('pnl', '0').replace(',', '')), + raw_text=text, outcome='pushed_add_insufficient') else: # 需要确认或减仓信号 msg = format_message(fields, rec, signal_type)