forked from ZhuLinsen/daily_stock_analysis
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path.env.example
More file actions
379 lines (344 loc) · 16.8 KB
/
.env.example
File metadata and controls
379 lines (344 loc) · 16.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
# ===================================
# A股自选股智能分析系统 - 环境变量配置模板
# 复制此文件为 .env 并填入真实配置
# ===================================
# 自选股列表(逗号分隔,支持沪深两市代码)
# 沪市:600xxx, 601xxx, 603xxx
# 深市:000xxx, 002xxx, 300xxx
STOCK_LIST=600519,300750,002594
# 数据源配置
# Tushare Pro Token(可选,从 https://tushare.pro/weborder/#/login?reg=834638 获取)
TUSHARE_TOKEN=your_tushare_token_here
# ===================================
# 定时任务配置(本地/Docker运行)
# ===================================
# SCHEDULE_ENABLED=true
# SCHEDULE_TIME=18:00
# 启动时是否立即运行一次(默认 true)
# SCHEDULE_RUN_IMMEDIATELY=false
# 交易日检查:默认 true,非交易日跳过执行;设为 false 或使用 --force-run 可强制执行(Issue #373)
# TRADING_DAY_CHECK_ENABLED=true
# ===================================
# AI 模型配置(统一通过 LiteLLM,至少配置一个 API Key)
#
# 核心配置(二选一或组合):
# LITELLM_MODEL - 主模型,仅填一个,格式 provider/model-name;使用第三方模型提供商或 OpenAI 兼容 API 时须加 openai 前缀
# LITELLM_FALLBACK_MODELS - 备选模型,逗号分隔,主模型全部失败时按序尝试
# 若未配置 LITELLM_MODEL,系统将根据已有 API Key 自动推断(推断结果打印在日志中)
#
# 模型格式示例:gemini/gemini-2.5-flash、anthropic/claude-3-5-sonnet-20241022、openai/gpt-4o
# ===================================
# LITELLM_MODEL=gemini/gemini-3-flash-preview
# LITELLM_FALLBACK_MODELS=anthropic/claude-3-5-sonnet-20241022,openai/gpt-4o-mini
# 温度参数
GEMINI_TEMPERATURE=0.7
# ===================================
# API Key 配置(支持多个 Key,逗号分隔,自动负载均衡)
# ===================================
# 【方案一】Gemini API(有免费额度,从 https://aistudio.google.com 获取)
# 单 Key:
GEMINI_API_KEY=
# 多 Key:GEMINI_API_KEYS=key1,key2,key3
# 示例:LITELLM_MODEL=gemini/gemini-3-flash-preview
# 【方案二】Anthropic Claude API(从 https://console.anthropic.com 获取)
# ANTHROPIC_API_KEY=sk-ant-xxxxxxxxxxxxxxxx
# 多 Key:ANTHROPIC_API_KEYS=key1,key2
# 示例:LITELLM_MODEL=anthropic/claude-3-5-sonnet-20241022
# ANTHROPIC_TEMPERATURE=0.7
# 【方案三】OpenAI / DeepSeek / OpenRouter 等兼容 API
# 单 Key:OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxx
# 多 Key:OPENAI_API_KEYS=key1,key2
# OPENAI_BASE_URL=第三方 API 地址(官方 OpenAI 可不填;DeepSeek: https://api.deepseek.com/v1;OpenRouter: https://openrouter.ai/api/v1)
# OPENAI_TEMPERATURE=0.7
# OPENAI_VISION_MODEL=gpt-4o # 图片识别专用模型(可选)
#
# --- 【推荐】AIHubmix 一站式 ---
# AIHubmix 支持一站式使用全球主流 AI 模型,一个 Key 可在本项目中切换使用任何模型,
# 无需科学上网,含免费模型(glm-5、gpt-4o-free 等顶级模型),
# 付费模型拥有极高的稳定性和无限并发能力,适合大规模生产级应用使用。
# 使用 AIHUBMIX_KEY 时无需配置 OPENAI_BASE_URL,系统自动使用 aihubmix.com/v1。
# 获取 Key:https://aihubmix.com/?aff=CfMq
# AIHUBMIX_KEY=your_aihubmix_key_here
# 示例:LITELLM_MODEL=openai/gemini-3.1-pro-preview
#
# --- DeepSeek ---
# OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxx
# OPENAI_BASE_URL=https://api.deepseek.com/v1
# 示例:LITELLM_MODEL=openai/deepseek-chat 或 openai/deepseek-reasoner
# 思考模式:deepseek-reasoner/deepseek-r1/qwq 自动识别,deepseek-chat 需 extra_body 启用
# 搜索引擎配置(用于获取股票新闻)
# Tavily API Keys(支持多个,逗号分隔)
TAVILY_API_KEYS=your_tavily_key_here
# SerpAPI Keys(支持多个,逗号分隔)
SERPAPI_API_KEYS=your_serpapi_key_here
# Brave Search API Keys(支持多个,逗号分隔)
# 获取: https://brave.com/search/api/
BRAVE_API_KEYS=your_brave_key_here
# ===================================
# 新闻时效与分析筛选配置
# ===================================
# 新闻最大时效(天),搜索时限制结果在近期内,避免使用过时信息
# NEWS_MAX_AGE_DAYS=3
# 乖离率阈值(%),偏离 MA5 超过此值提示不追高;强势趋势股自动放宽到 1.5 倍
# BIAS_THRESHOLD=5.0
# ===================================
# Agent 策略对话配置(Web 对话页)
# ===================================
# 启用 Agent 对话(默认 false)
# AGENT_MODE=true
# Agent 最多推理步数
# AGENT_MAX_STEPS=10
# 默认启用策略(逗号分隔),不配置时使用以下内置默认值
#
# 内置策略列表(可任意组合):
# bull_trend — 多头趋势(MA5>MA10>MA20 排列 + 低乖离率)
# ma_golden_cross — 均线金叉(MA5 上穿 MA10/MA20)
# volume_breakout — 放量突破(价格突破近期高点 + 成交量放大)
# shrink_pullback — 缩量回踩(回踩均线 + 量能萎缩,低吸点)
# bottom_volume — 底部放量(地量见地价,底部反转信号)
# dragon_head — 龙头策略(强势龙头,趋势延续追涨)
# one_yang_three_yin — 一阳夹三阴(主力洗盘后强势反包形态)
# box_oscillation — 箱体震荡(区间高抛低吸)
# chan_theory — 缠论(缠中说禅理论:笔/线段/中枢)
# wave_theory — 波浪理论(艾略特波浪计数)
# emotion_cycle — 情绪周期(市场情绪高低点轮动)
#
# 推荐:趋势 + 金叉 + 缩量回踩(兼顾多种市场形态)
# AGENT_SKILLS=bull_trend,ma_golden_cross,shrink_pullback
#
# 完整启用所有内置策略(两种写法等效):
# AGENT_SKILLS=all
# AGENT_SKILLS=bull_trend,ma_golden_cross,volume_breakout,shrink_pullback,bottom_volume,dragon_head,one_yang_three_yin,box_oscillation,chan_theory,wave_theory,emotion_cycle
#
AGENT_SKILLS=bull_trend,ma_golden_cross,volume_breakout,shrink_pullback
# 自定义策略目录(可选,放置自定义 YAML 策略文件)
# AGENT_STRATEGY_DIR=./strategies
# ===================================
# 通知渠道配置(可同时配置多个,全部推送)
# ===================================
#
# 【方式一】企业微信机器人
# 在企业微信群 -> 设置 -> 群机器人 -> 添加 -> 复制 Webhook 地址
#
# WECHAT_WEBHOOK_URL=https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=your_key_here
#
# 【方式二】飞书机器人
# 在飞书群 -> 设置 -> 群机器人 -> 添加机器人 -> 自定义机器人 -> 复制 Webhook 地址
#
# FEISHU_WEBHOOK_URL=https://open.feishu.cn/open-apis/bot/v2/hook/your_key_here
#
# 【方式三】Telegram 机器人(需同时配置两项)
# 1. 在 Telegram 找 @BotFather -> /newbot -> 获取 Bot Token
# 2. 获取 Chat ID:发消息给 @userinfobot 或访问 https://api.telegram.org/bot<token>/getUpdates
#
# TELEGRAM_BOT_TOKEN=123456789:ABCdefGHIjklMNOpqrsTUVwxyz
# TELEGRAM_CHAT_ID=123456789
# TELEGRAM_MESSAGE_THREAD_ID=2780
#
# 【方式四】邮件推送(只需 2 项配置,SMTP 自动识别)
# 支持 QQ邮箱、163邮箱、Gmail、Outlook 等主流邮箱
# 1. 获取授权码(以QQ邮箱为例):设置 -> 账户 -> POP3/SMTP服务 -> 开启 -> 获取授权码
# 2. 填写下面两项即可:
#
# EMAIL_SENDER=your_email@qq.com
# EMAIL_PASSWORD=your_email_auth_code
# EMAIL_RECEIVERS=receiver@example.com # 可选,留空则发给自己
#
# 【方式四扩展】股票分组发往不同邮箱(Issue #268,可选)
# 配置后,不同股票组的报告发送到对应邮箱;大盘复盘发往所有配置邮箱
# STOCK_GROUP_1=600519,300750
# EMAIL_GROUP_1=user1@example.com
# STOCK_GROUP_2=002594,AAPL
# EMAIL_GROUP_2=user2@example.com
#
# 【方式五】自定义 Webhook(支持多个,逗号分隔)
# 适用于:钉钉、Discord、Slack、Bark、自建服务等任意支持 POST JSON 的 Webhook
# 系统会自动识别常见服务并使用对应格式
#
# CUSTOM_WEBHOOK_URLS=https://oapi.dingtalk.com/robot/send?access_token=xxx,https://hooks.slack.com/services/xxx
# CUSTOM_WEBHOOK_BEARER_TOKEN=your_bearer_token # 可选,用于需要认证的 Webhook (Header Authorization: Bearer <token>)
# WEBHOOK_VERIFY_SSL=true # 默认校验。设为 false 可支持自签名证书。警告:禁用后存在 MITM 劫持风险,仅限可信内网
#
# 【方式六】Pushover 配置
# 注册Pushover账号,并创建应用Token https://pushover.net/apps/build
# PUSHOVER_USER_KEY=your_user_key
# PUSHOVER_API_TOKEN=your_api_token
#
# 【方式七】PushPlus 配置(国内推送服务,推荐)
# 注册PushPlus账号并获取Token https://www.pushplus.plus
# PUSHPLUS_TOKEN=your_pushplus_token
# 群组推送:填写群组编码后,消息推送给群组所有订阅用户(一对多)
# PUSHPLUS_TOPIC=your_group_topic_code
#
# 【方式八】Discord 配置
# 支持两种方式:Webhook(推荐,配置简单)和 Bot API(权限高)
#
# 方式1:Discord Webhook(推荐,无需 Bot 账号)
# 在 Discord 频道设置 -> 集成 -> Webhook -> 新建 Webhook -> 复制 URL
# DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/your_webhook_id/your_webhook_token
#
# 方式2:Discord Bot API(需要 Bot 账号和频道 ID)
# 1. 创建 Bot:https://discord.com/developers/applications -> 新建应用 -> Bot -> 创建 Bot
# 2. 获取 Bot Token:Bot 页面 -> 重置 Token
# 3. 获取频道 ID:Discord 开启开发者模式 -> 右键频道 -> 复制 ID
# DISCORD_BOT_TOKEN=your_bot_token_here
# DISCORD_MAIN_CHANNEL_ID=your_channel_id_here
#
# 【方式九】Server酱3 配置(国内推送服务,支持微信推送)
# 注册Server酱3账号并获取SendKey https://sc3.ft07.com/
# SERVERCHAN3_SENDKEY=your_serverchan3_sendkey
#
# 【高级配置】消息长度限制(字节)
# 超过限制会自动分批发送,一般无需修改
# FEISHU_MAX_BYTES=20000 # 飞书限制约 20KB,默认 20000 字节
# WECHAT_MAX_BYTES=4000 # 企业微信限制 4096 字节,默认 4000 字节
#
# 【Markdown 转图片】
# 对不支持 Markdown 的渠道,将报告转为图片发送,提升可读性
# 需安装 wkhtmltopdf(Docker 已内置),本地运行: apt install wkhtmltopdf 或 brew install wkhtmltopdf
# MARKDOWN_TO_IMAGE_CHANNELS=telegram,wechat,custom,email # 逗号分隔
# MARKDOWN_TO_IMAGE_MAX_CHARS=15000 # 超过此长度不转换,避免超大图片
# ===================================
# 单股推送配置(可选)
# ===================================
# 单股推送模式:每分析完一只股票立即推送,而不是汇总后推送
# SINGLE_STOCK_NOTIFY=false
#
# 报告类型:simple(精简) 或 full(完整)
# Docker环境下如果推送内容不完整,可以设置为 full
# REPORT_TYPE=simple
# 仅分析结果摘要:设为 true 时只推送汇总,不含个股详情
# REPORT_SUMMARY_ONLY=false
# 个股分析与大盘复盘合并推送(默认 false),减少邮件数量、降低垃圾邮件风险
# MERGE_EMAIL_NOTIFICATION=false
# ===================================
# 分析间隔配置(可选)
# ===================================
# 个股分析和大盘分析之间的延迟时间(秒)
# 用于避免触发 Gemini 等 AI API 的限流
# ANALYSIS_DELAY=0
# 应用 AppKey(与 Webhook 模式共用)
DINGTALK_APP_KEY=xxxx
# 应用 AppSecret(与 Webhook 模式共用)
DINGTALK_APP_SECRET=xxxx
# 启用 Stream 模式
DINGTALK_STREAM_ENABLED=false
# 飞书应用机器人配置
FEISHU_APP_ID=xxxx
FEISHU_APP_SECRET=xxxx
# 启用长连接模式
FEISHU_STREAM_ENABLED=false
# 数据库路径
DATABASE_PATH=./data/stock_analysis.db
# ===================================
# 回测配置(可选)
# ===================================
# 是否启用回测(true/false)
BACKTEST_ENABLED=true
# 回测评估窗口(交易日数)
BACKTEST_EVAL_WINDOW_DAYS=10
# 仅回测 N 天前的分析记录(避免当天/最近数据不完整)
BACKTEST_MIN_AGE_DAYS=14
# 回测引擎版本(当回测逻辑升级时用于区分结果)
BACKTEST_ENGINE_VERSION=v1
# 中性区间阈值(%),例如 2 表示 -2%~+2% 视为震荡
BACKTEST_NEUTRAL_BAND_PCT=2.0
# === 定时任务配置 ===
# 是否启用定时任务(true/false)
SCHEDULE_ENABLED=false
# 每日执行时间(HH:MM 格式,24小时制)
SCHEDULE_TIME=18:00
# 启动程序时是否立即执行一次分析(true/false)
RUN_IMMEDIATELY=true
# 是否启用大盘复盘(true/false)
MARKET_REVIEW_ENABLED=true
# 大盘复盘市场区域:cn(A股)、us(美股)、both(两者),us 适合仅关注美股的用户
# MARKET_REVIEW_REGION=cn
# ===================================
# 代理配置(可选)
# ===================================
# 是否启用代理(true/false,默认 false)
# 仅在本地开发环境生效,GitHub Actions 环境自动跳过
USE_PROXY=false
# 代理服务器地址(默认 127.0.0.1)
PROXY_HOST=127.0.0.1
# 代理服务器端口(默认 10809)
PROXY_PORT=10809
# 系统配置
# 日志目录
LOG_DIR=./logs
# 日志级别(DEBUG/INFO/WARNING/ERROR)
LOG_LEVEL=INFO
# 最大并发线程数(建议保持低并发防封禁)
MAX_WORKERS=3
# 是否启用调试日志
DEBUG=false
# ===================================
# WebUI 配置(可选)
# ===================================
# 是否默认启动 WebUI(true/false,默认 false)
WEBUI_ENABLED=false
# WebUI 监听地址(默认 127.0.0.1;Docker/Compose 场景需要 0.0.0.0 才能从宿主机访问端口映射)
WEBUI_HOST=127.0.0.1
# WebUI 监听端口(默认 8000)
WEBUI_PORT=8000
# 启动 Web 服务前是否自动构建前端(npm install && npm run build,默认 true)
WEBUI_AUTO_BUILD=true
# 反向代理下信任 X-Forwarded-For 获取真实 IP(Nginx/Cloudflare 前置时设为 true,直连公网时保持 false 防伪造)
# TRUST_X_FORWARDED_FOR=false
# ===================================
# Web 登录认证(可选)
# ===================================
# 设为 true 启用密码保护;首次访问时在网页设置初始密码,可在「系统设置 > 修改密码」中修改
# 忘记密码可在服务器执行: python -m src.auth reset_password
ADMIN_AUTH_ENABLED=false
# ADMIN_SESSION_MAX_AGE_HOURS=24 # Session 有效期(小时)
# ===========================================
# 图片识别股票代码(设置页「从图片添加」)
# ===========================================
# 单次请求超时 60 秒;图片最大 5MB
# 需配置 GEMINI_API_KEY、ANTHROPIC_API_KEY 或 OPENAI_API_KEY 中至少一个(Vision 能力模型)
# ===========================================
# Data Fetcher Priority Configuration
# ===========================================
# Lower number = higher priority (tried first)
# Default priorities: efinance(0) > akshare(1) > tushare/pytdx(2) > baostock(3) > yfinance(4)
# For US stocks, set YFINANCE_PRIORITY=0 to use Yahoo Finance first
# EFINANCE_PRIORITY=0 # EastMoney (China) - default: 0
# AKSHARE_PRIORITY=1 # AkShare (China) - default: 1
# TUSHARE_PRIORITY=2 # Tushare Pro (China) - default: 2
# PYTDX_PRIORITY=2 # Tongdaxin (China) - default: 2
#
# Pytdx custom server (for intranet/deploy): use custom host instead of built-in public servers
# PYTDX_HOST=192.168.1.100
# PYTDX_PORT=7709
# Or multiple servers: PYTDX_SERVERS=ip1:port1,ip2:port2
# BAOSTOCK_PRIORITY=3 # Baostock (China) - default: 3
# YFINANCE_PRIORITY=4 # Yahoo Finance (Global) - default: 4
# Example: Prioritize Yahoo Finance for US stocks
# YFINANCE_PRIORITY=0
# EFINANCE_PRIORITY=99
# ===========================================
# 实时行情数据源优先级配置
# ===========================================
# 用于获取量比、换手率、市盈率等实时数据
# 可选数据源(逗号分隔,按顺序尝试):
# - tencent: 腾讯财经,有量比/换手率/PE/PB,单股查询稳定(推荐首选)
# - akshare_sina: 新浪财经,基本行情,无量比,但非常稳定
# - efinance: 东财(efinance库),有量比,全量拉取易被封
# - akshare_em: 东财(akshare库),数据最全,全量拉取易被封
# - tushare: Tushare Pro,需要2000积分,数据全面(付费用户推荐)
#
# 默认优先级:tencent > akshare_sina > efinance > akshare_em
# 如果有 Tushare Pro 高积分账号,可将 tushare 放在首位:
# REALTIME_SOURCE_PRIORITY=tushare,tencent,akshare_sina,efinance,akshare_em
# REALTIME_SOURCE_PRIORITY=tencent,akshare_sina,efinance,akshare_em
# 是否启用实时行情(关闭后使用历史收盘价分析)
# ENABLE_REALTIME_QUOTE=true
# 盘中实时技术面:启用时用实时价计算 MA/多头排列(Issue #234);关闭则用昨日收盘
# ENABLE_REALTIME_TECHNICAL_INDICATORS=true
# 是否启用筹码分布(该接口不稳定,云端部署建议关闭)
# ENABLE_CHIP_DISTRIBUTION=true
# 东财接口补丁:东财/Efinance/Akshare 东方财富接口频繁失败(RemoteDisconnected、连接被关闭)时建议开启
# 开启后会注入 NID 令牌与随机 User-Agent,降低被东财限流概率
# ENABLE_EASTMONEY_PATCH=false