feat: 加仓信号自动执行 (余额检查由 advisor 完成)
【修复】加仓信号 add 路径走 execute_order, 余额检查由 advisor 内部完成 - 余额够 → 自动加仓 (outcome=auto_executed_add) - 余额不够 → 推消息不执行 (outcome=pushed_add_insufficient) 【效果】下次 Jasonleo 推 BTC 加仓 → 你自动加仓 (前提是保证金够)
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user