Oracle3
Open-source trading engine and MCP server for prediction markets. Fee-aware no-arbitrage trading across related contracts, live on Kalshi, Polymarket and Solana or on paper.
美股行情指标监控
Translation pending
FinanceTypeScript · JavaScriptGitHub @ChanJLeeOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
美股行情指标监控 + 飞书群机器人推送,基于 Next.js 14(App Router)+ Prisma/SQLite。 • Web 管理界面:股票/规则增删改、配置飞书机器人 • 支持指标: • 价格:突破/跌破阈值、涨跌幅触线 • 技术:RSI、MA 金叉/死叉(SMA/EMA)、MACD 信号线穿越、布林带突破 • 成交量:放量(相对均量倍数) • 美股交易时段自动判断(含周末跳过) • 同一规则冷却去重,防止刷屏 • 飞书自定义机器人 + 签名校验,消息以 interactive card 形式发送 没装 pnpm:corepack enable pnpm(Node 自带 corepack),或 npm i -g pnpm。 在新机器上最常见的报错:没有 .env(缺 DATABASE_URL)、没跑 pnpm db:push、或 data/ 目录不存在。按上面 4 步走即可。 1. 进入 设置 页,填入飞书自定义机器人 webhook + 签名密钥 secret,点【发送测试消息】确认能收到 2. 进入 监控列表,添加 ticker(如 AAPL、TSLA、NVDA),再为每只股票加规则 3. 回到首页点【手动检查】立即跑一次 /api/cron/check 是检查入口,需要在请求头带 x-cron-secret:(值见 .env)。Read the full README ↗
美股行情指标监控 + 飞书群机器人推送,基于 Next.js 14(App Router)+ Prisma/SQLite。
| 依赖 | 版本 | 说明 |
|---|---|---|
| Node.js | ≥ 18.17(建议 20 LTS) | Next.js 14 要求;版本过低会启动报错 |
| pnpm | ≥ 8(建议用 corepack) | 本项目用 pnpm,仓库带 pnpm-lock.yaml |
| 数据库 | 本地 SQLite(零安装,文件型) | 由 Prisma 自动建库;生产可选 Turso(见“环境变量”) |
没装 pnpm:
corepack enable pnpm(Node 自带 corepack),或npm i -g pnpm。
# 1. 配置环境变量(必须!缺 .env 会导致 Prisma / 启动报错)
cp .env.example .env
# 最少要有 DATABASE_URL;其余可留默认 / 留空(见“环境变量”)
# 2. 安装依赖(postinstall 会自动 prisma generate)
pnpm install
# 3. 初始化本地数据库(按 DATABASE_URL 建 SQLite 文件 + 建表)
mkdir -p data # 确保 DATABASE_URL 指向的目录存在
pnpm db:push
# 4. 启动 dev
pnpm dev
# → http://localhost:3000
在新机器上最常见的报错:没有
.env(缺DATABASE_URL)、没跑pnpm db:push、或data/目录不存在。按上面 4 步走即可。
第一次打开后:
AAPL、TSLA、NVDA),再为每只股票加规则/api/cron/check 是检查入口,需要在请求头带 x-cron-secret: <CRON_SECRET>(值见 .env)。
模板在 scripts/com.stockmonitor.check.plist,替换三个占位符后:
cp scripts/com.stockmonitor.check.plist ~/Library/LaunchAgents/
launchctl load ~/Library/LaunchAgents/com.stockmonitor.check.plist
# 停止
launchctl unload ~/Library/LaunchAgents/com.stockmonitor.check.plist
默认 5 分钟一次。非美股交易时段会被代码直接 return,不会真的拉数据。
前提:Next.js 进程要先跑起来(
pnpm dev或pnpm build && pnpm start)。
yahoo-finance2 拉雅虎财经的免费行情,约 15 分钟延迟src/lib/data/yahoo.ts 即可)yahoo-chart.ts 用 adjclose 反推复权 OHLC(拆股+分红都调整),消除拆股假跳空。
Stooq CSV 是未复权源,仅作兜底;要长历史建模请用复权重灌脚本。校准层 = 对 9 个因子的逻辑回归:logit(P多)=logit(baseRate)+clampTilt(Σ wₖ·tanh(fₖ))。
权重 DEFAULT_MODEL_PARAMS(market-model.ts)可被进化拟合。完整闭环:
# 0) 先用复权长历史重灌缓存(修正拆股/分红 + 拉长;Yahoo 限流时脚本会自动退避重试)
pnpm data:rebackfill # 或 pnpm data:rebackfill AAPL SPY QQQM
# 1) 走查式预计算特征(点-时、无未来函数,写 data/feature-cache.json,慢、只跑一次)
pnpm model:featurize
# 2) 差分进化拟合权重:每标的前 70% 训练、后 30% 样本外验证 + L2 正则防过拟合
pnpm model:fit # 末尾打印可直接粘贴的 DEFAULT_MODEL_PARAMS
# 3) 给任意参数打分(headline = 样本外 Brier-skill,>0 才比"永远报基准率"强)
pnpm model:eval # 评当前 DEFAULT_MODEL_PARAMS
pnpm model:eval data/model-params.fitted.json
改了 market-model.ts 的权重后跑 pnpm model:eval 即可立刻量化好坏(无需重跑 featurize,
除非动了特征工程)。指标:Brier-skill(概率校准)、AUC(方向排序)、校准分桶。
当前结果(9 标的、复权长历史、1.8 万行、走查样本外):
| 训练 | 样本外 TEST | |
|---|---|---|
| Brier-skill(相对基准率) | +0.0021 | +0.0026 |
| AUC | 0.522 | 0.524 |
DEFAULT_MODEL_PARAMS 即此数据上的进化最优:再拟合样本外变化 +0.0000,已无更多边际可榨。因为日线方向≈随机(实测 1 日 AUC≈0.5,预测不了明天涨跌),系统不做方向预测,改为
「标注当前状态 + 给状态提示」。逻辑在 src/lib/signals/position.ts,面板在
position-signals-panel.tsx:
信号可靠度回测(scripts/backtest-signals.ts,走查因果、无未来函数):
pnpm exec tsx scripts/backtest-signals.ts # 本地 watchlist 标的
pnpm exec tsx scripts/backtest-signals.ts --universe # 内置 34 只多样化标的池(Stooq)
pnpm exec tsx scripts/backtest-signals.ts INTC KO XLU # 自定义标的池
在 34 只多样化标的(下跌/震荡/防御/板块ETF + 少量赢家,31 万根)上,信号后 10 日相对基准:
止盈倾向 **−0.1−0.3%**、买入倾向 +0.3~+0.7%——边际小但方向一致。注意:只在单边大牛股
样本上,趋势会盖过这点边际(edge≈0),故 SIGNAL_RELIABILITY 用多样化样本而非 watchlist 标定。
src/
├── app/
│ ├── page.tsx # 总览(统计 + 最近告警)
│ ├── watchlist/page.tsx # 股票/规则管理
│ ├── settings/page.tsx # 飞书配置
│ └── api/
│ ├── symbols/ # CRUD
│ ├── rules/ # CRUD
│ ├── alerts/ # 读取
│ ├── settings/ # 飞书机器人配置 + 测试推送
│ └── cron/check/ # ★ 核心检查入口(cron 调用)
├── lib/
│ ├── data/yahoo.ts # 行情 / K 线拉取
│ ├── indicators/ # MA / RSI / MACD / 布林 / 成交量
│ ├── rules/ # types + evaluator
│ ├── notifier/feishu.ts # 签名校验 + interactive card POST
│ ├── market/hours.ts # 交易时段判断(NY 时区)
│ └── settings.ts # 飞书配置 KV
prisma/schema.prisma # Symbol / Rule / Alert / Setting
scripts/*.plist # launchd 模板
复制 .env.example 为 .env 后按需填写。DATABASE_URL 必填,其余可留默认/留空。
| 变量 | 必填 | 说明 |
|---|---|---|
DATABASE_URL | ✅ | 本地 SQLite 路径,默认 file:../data/dev.db(相对 prisma/ 解析 → 项目根 data/)。务必先 mkdir -p data 再 pnpm db:push |
CRON_SECRET | 建议 | /api/cron/check 校验头 x-cron-secret;本地随便填,部署务必改随机串 |
NEXT_PUBLIC_AUTH_USER_HASHNEXT_PUBLIC_AUTH_PASS_HASH | 可选 | 前端登录用户名/密码的 SHA-256 哈希。两个都留空 = 关闭登录(本地开发免登录)。注意是 NEXT_PUBLIC_,构建期注入,改了要重启 dev / 重新构建。生成命令见 .env.example 注释 |
STOOQ_APIKEY | 可选 | Stooq CSV API Key,批量回填历史 K 线时限额更高;不填也能用 |
TURSO_DATABASE_URLTURSO_AUTH_TOKEN | 仅生产 | 设置后走 libSQL 连远端 Turso(Vercel 用);本地不要设,留空即用上面的本地 SQLite |
登录:
NEXT_PUBLIC_AUTH_*留空时整站免登录,方便本地跑;要启用就按.env.example里的命令生成哈希填进去。
yahoo-finance2 偶尔会限流/超时,单只股票失败不会影响其他股票/data/(已被 .gitignore 忽略),不会进 git