feat: 加仓信号自动执行 (余额检查由 advisor 完成)

【修复】加仓信号 add 路径走 execute_order, 余额检查由 advisor 内部完成
- 余额够 → 自动加仓 (outcome=auto_executed_add)
- 余额不够 → 推消息不执行 (outcome=pushed_add_insufficient)

【效果】下次 Jasonleo 推 BTC 加仓 → 你自动加仓 (前提是保证金够)
This commit is contained in:
2026-07-23 22:18:42 +08:00
parent c594179ba1
commit 2cece66583
+19 -8
View File
@@ -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)