update
This commit is contained in:
parent
6f91b9522f
commit
111e46b8f3
@ -1143,12 +1143,16 @@ class LLMSignalAnalyzer:
|
||||
position_icon = {'heavy': '🔥', 'medium': '📊', 'light': '🌱'}.get(position_size, '🌱')
|
||||
position_text = position_map.get(position_size, '轻仓')
|
||||
|
||||
# 标题和颜色
|
||||
# 标题和颜色 - 添加美股标记
|
||||
is_market_order = entry_type == 'market'
|
||||
market_badge = '【现价】' if is_market_order else ''
|
||||
stock_tag = '[美股] '
|
||||
|
||||
if signal['action'] == 'buy':
|
||||
title = f"🟢 {symbol} {signal_type}做多信号 [{entry_type_text}]"
|
||||
title = f"🟢 {stock_tag}{symbol} {signal_type}做多信号 {market_badge}"
|
||||
color = "green"
|
||||
else:
|
||||
title = f"🔴 {symbol} {signal_type}做空信号 [{entry_type_text}]"
|
||||
title = f"🔴 {stock_tag}{symbol} {signal_type}做空信号 {market_badge}"
|
||||
color = "red"
|
||||
|
||||
# 计算风险收益比
|
||||
@ -1158,7 +1162,28 @@ class LLMSignalAnalyzer:
|
||||
sl_percent = ((sl - entry) / entry * 100) if entry else 0
|
||||
tp_percent = ((tp - entry) / entry * 100) if entry else 0
|
||||
|
||||
# 构建 Markdown 内容
|
||||
# 构建 Markdown 内容 - 现价时突出显示
|
||||
if is_market_order:
|
||||
# 现价入场,重点突出价格
|
||||
content_parts = [
|
||||
f"**{signal_type}** | **{grade}**{grade_icon} | **{confidence}%** 置信度",
|
||||
f"{entry_type_icon} **入场方式**: {entry_type_text}",
|
||||
f"{position_icon} **建议仓位**: {position_text}",
|
||||
"",
|
||||
f"💰 **⭐ 现价入场 ⭐**",
|
||||
f"**>>> ${entry:,.2f} <<<**",
|
||||
"",
|
||||
f"🛑 **止损**: ${sl:,.2f} ({sl_percent:+.1f}%)",
|
||||
f"🎯 **止盈**: ${tp:,.2f} ({tp_percent:+.1f}%)",
|
||||
"",
|
||||
f"📝 **分析理由**:",
|
||||
f"{signal.get('reason', '无')}",
|
||||
"",
|
||||
f"⚠️ **风险提示**:",
|
||||
f"{signal.get('risk_warning', '请注意风险控制')}",
|
||||
]
|
||||
else:
|
||||
# 挂单,正常显示
|
||||
content_parts = [
|
||||
f"**{signal_type}** | **{grade}**{grade_icon} | **{confidence}%** 置信度",
|
||||
f"{entry_type_icon} **入场方式**: {entry_type_text}",
|
||||
|
||||
@ -11,17 +11,19 @@ cd "$(dirname "$0")/.." || exit 1
|
||||
if [ $# -eq 0 ]; then
|
||||
# 无参数,分析配置的所有股票
|
||||
echo "📊 分析配置的所有股票(将发送通知)..."
|
||||
# 使用更可靠的方式获取股票代码
|
||||
python3 -c "
|
||||
import sys
|
||||
sys.path.insert(0, 'backend')
|
||||
from app.config import get_settings
|
||||
settings = get_settings()
|
||||
symbols = settings.stock_symbols.split(',')
|
||||
symbols = [s.strip() for s in settings.stock_symbols.split(',') if s.strip()]
|
||||
print(' '.join(symbols))
|
||||
" 2>/dev/null | xargs python3 scripts/test_stock.py
|
||||
" 2>/dev/null | while read -r symbols; do
|
||||
python3 scripts/test_stock.py $symbols
|
||||
done
|
||||
else
|
||||
# 分析指定的股票
|
||||
SYMBOLS="$@"
|
||||
echo "📊 分析股票: $SYMBOLS(将发送通知)"
|
||||
python3 scripts/test_stock.py $SYMBOLS
|
||||
# 分析指定的股票 - 使用引号正确传递参数
|
||||
echo "📊 分析股票: $*(将发送通知)"
|
||||
python3 scripts/test_stock.py "$@"
|
||||
fi
|
||||
|
||||
@ -114,8 +114,10 @@ async def analyze(symbol: str, send_notification: bool = True):
|
||||
title = card['title']
|
||||
content = card['content']
|
||||
|
||||
# 发送通知
|
||||
await feishu.send_markdown(title, content)
|
||||
# 发送通知 - 使用 send_card 方法
|
||||
# 根据信号方向选择颜色
|
||||
color = "green" if best_signal.get('action') == 'buy' else "red"
|
||||
await feishu.send_card(title, content, color)
|
||||
await telegram.send_message(llm.format_signal_message(best_signal, symbol))
|
||||
print(f"\n📬 通知已发送:{title}")
|
||||
else:
|
||||
@ -138,7 +140,26 @@ async def main():
|
||||
print(" python3 scripts/test_stock.py AAPL TSLA NVDA")
|
||||
sys.exit(1)
|
||||
|
||||
symbols = sys.argv[1:]
|
||||
# 过滤掉无效的参数(如环境变量路径、配置项等)
|
||||
# 只接受有效的股票代码(字母开头,1-5个字符)
|
||||
raw_symbols = sys.argv[1:]
|
||||
symbols = []
|
||||
for arg in raw_symbols:
|
||||
# 跳过包含路径分隔符、等号、或明显不是股票代码的参数
|
||||
if '/' in arg or '=' in arg or ':' in arg or len(arg) > 10:
|
||||
logger.debug(f"跳过无效参数: {arg}")
|
||||
continue
|
||||
# 只保留纯字母的参数(股票代码)
|
||||
if arg.isalpha() and 1 <= len(arg) <= 5:
|
||||
symbols.append(arg.upper())
|
||||
else:
|
||||
logger.debug(f"跳过非股票代码参数: {arg}")
|
||||
|
||||
if not symbols:
|
||||
print("❌ 未找到有效的股票代码")
|
||||
print(f"接收到的参数: {raw_symbols}")
|
||||
print("\n用法: python3 scripts/test_stock.py AAPL [TSLA] [NVDA] ...")
|
||||
sys.exit(1)
|
||||
|
||||
print("="*60)
|
||||
print("🤖 美股分析脚本")
|
||||
|
||||
Loading…
Reference in New Issue
Block a user