Community编程与开发github.com

交易员警报管理器

为印度股票(NSE、BSE)提供价格警报。当价格、止损或开盘铃响起时发出提醒。可将交易计划一次性转换为三个警报(止损、目标及平仓时间),并提供卢比/百分比、指数、开盘时间等警报类型。

交易员警报管理器 是什么?

交易员警报管理器(trader-in-alerts)是一个专为印度股市(NSE、BSE)设计的AI技能,它作为一个智能价格监控系统,让用户无需盯着图表,仅在关键市场事件发生时通过警报通知用户。该技能的核心功能包括:从交易计划(trader-in/plan.json)自动生成止损、目标和平仓时间三个警报;支持价格上穿/下穿、百分比涨跌幅、指定时间、开盘铃声等多种警报类型;使用免费的Yahoo财经数据(延迟报价)获取印度股票价格并写入本地JSON文件供其他模块使用。该技能适用于Claude Code、Cursor等AI开发平台,通过Python脚本实现所有功能,包括添加警报、检查触发、获取报价等。它特别处理了印度经纪商(如Zerodha、Upstox)不支持OCO的实际情况,在止损或目标警报触发时提醒用户取消另一个未成交订单。同时内置NSE 2026年交易日历、假日和特殊交易时段(如预算日、Diwali Muhurat交易),确保时间警报准确无误。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/bhardwajaditya/day-trader-skill-india/tree/main/trader-in-alerts

Installed? Explore more 编程与开发 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

trader-in-alerts(交易员警报管理器)

价格警报系统负责监控数字,这样用户就不必一直盯着图表。警报只是信息,绝非交易指令:当止损警报响起时,本技能不会自动卖出任何东西。止损单(SL-M卖出)和目标单(LIMIT卖出)作为两个独立订单存在于券商处,它们执行实际交易;警报只是告诉用户发生了什么,提醒他们取消剩余订单,并告知何时应该平仓。

${CLAUDE_SKILL_DIR} 是本技能的文件夹(此 SKILL.md 文件所在的位置)。

python3 "${CLAUDE_SKILL_DIR}/alerts.py" clock                          # 显示NSE开盘/收盘状态、预开盘、下次开盘时间(IST)
python3 "${CLAUDE_SKILL_DIR}/alerts.py" add --from-plan                # 从 trader-in/plan.json 添加止损、目标、平仓时间
python3 "${CLAUDE_SKILL_DIR}/alerts.py" add --opening-bell             # 09:15 IST 开盘铃声
python3 "${CLAUDE_SKILL_DIR}/alerts.py" add --pre-open                 # 09:00 IST 预开盘(可选)
python3 "${CLAUDE_SKILL_DIR}/alerts.py" add --symbol RELIANCE --stop 1193.30
python3 "${CLAUDE_SKILL_DIR}/alerts.py" add --symbol RELIANCE --target 1201.10
python3 "${CLAUDE_SKILL_DIR}/alerts.py" add --at 15:10 --label "flat by" --before-close --symbol RELIANCE
python3 "${CLAUDE_SKILL_DIR}/alerts.py" add --symbol TCS --pct 2
python3 "${CLAUDE_SKILL_DIR}/alerts.py" add --symbol ^NSEI --pct 1     # Nifty 50(仅监控)
python3 "${CLAUDE_SKILL_DIR}/alerts.py" check                          # 退出码0表示有警报触发
python3 "${CLAUDE_SKILL_DIR}/alerts.py" quote RELIANCE "M&M" --write   # -> trader-in/prices.json
python3 "${CLAUDE_SKILL_DIR}/alerts.py" quote --holdings --write       # 持仓 + 计划股票
python3 "${CLAUDE_SKILL_DIR}/alerts.py" list
python3 "${CLAUDE_SKILL_DIR}/alerts.py" reset reliance-ns-plan-stop

--now "2026-10-27 15:10" 固定时钟时间(IST;单独 15:10 表示今天IST,Z 或 +05:30 表示绝对时间);--offline DIR 从保存的报价文件读取,不访问网络。在shell中引用 M&M("M&M"),否则 & 会分割命令。

股票代码符号

RELIANCE、RELIANCE.NS 和 NSE:RELIANCE 代表NSE;RELIANCE.BO 和 BSE:RELIANCE 代表BSE。裸符号默认为NSE(或配置 default_exchange)。文件始终使用Yahoo格式(RELIANCE.NS)。裸六位数字被视为BSE证券代码(如 500325.BO),但Yahoo不提供数字BSE代码(2026-10-27返回“未找到数据”):请使用 RELIANCE.BO。指数 ^NSEI(Nifty 50)、^NSEBANK(Bank Nifty)和 ^BSESN(Sensex)可以进行监控和报价(以点数计价),不可交易。

读写文件

文件内容
trader-in/plan.json来自 trader-in-exit 的交易计划,供 add --from-plan 使用
trader-in/config.jsonflat_by(默认15:10)、default_exchange、extra_holidays、special_sessions
trader-in/alerts.json警报规则(本文件夹中的 alerts.example.json)
trader-in/state/alerts.json哪些规则已触发及触发时间,确保每个规则只触发一次
trader-in/prices.json最新的卢比报价,合并后供 trader-in-budget 和 trader-in-risk 使用
trader-in/portfolio.json持有的股票,供 quote --holdings 使用

规则类型

类型触发条件重新触发
above / target价格达到或超过 price执行 reset 后,或当 "rearm": true 且价格回落后自动重新触发
below / stop价格低于或等于 price同上
pct_move自前收盘价(或 ref)变动了 pct 百分比,可选的 direction 为 up 或 down;仅限今日的报价每天最多一次
timeIST时钟在交易日经过了 at(如 "15:10")每个交易日一次
opening_bellNSE已开盘(09:15 IST,或特殊交易时段开盘时间)每个交易日一次
pre_openNSE预开盘进行中(09:00-09:15 IST:订单输入至09:08,然后撮合)每个交易日一次,仅在预开盘期间

带有 "date" 的规则仅在该IST日期内被监控;--from-plan 创建的规则会携带交易计划的日期,因此昨天的止损不会在今天触发。带有 "before_close": true 的 time 规则会在提前收盘的特殊交易时段中保持与收盘的间隔:“平仓”设置为15:10时,在15:00收盘的交易日中会在14:40触发。

止损或目标触发时会附加提示:“您的止损和目标是两个独立的券商订单,不是OCO:如果止损已成交,现在请取消目标订单”(反之亦然)。印度券商已取消组合订单,且MIS没有OCO机制,因此未成交的SL-M或LIMIT卖出单会保持活跃,可能卖出您已不再持有的股票。

报价

  • Yahoo图表JSON:query2.finance.yahoo.com/v8/finance/chart/RELIANCE.NS(股票代码需百分比编码,如 M%26M.NS),一个非官方的免费接口,每次请求一个股票,间隔半秒。遇到429错误时会等待并重试一次;如果仍返回429、5xx或网络错误,则尝试 query1。请求头标识为 day-trader-skill-in/1.0。Yahoo以卢比和 Asia/Kolkata 时区提供NSE和BSE数据;百分比变动使用其前收盘价。
  • 不使用Stooq:它不提供NSE/BSE股票代码,且在2026-10-27,其报价CSV对所有股票代码返回404,其他页面则需通过JavaScript验证。
  • 免费报价是非官方的、延迟的,可能存在滞后。它们适用于警报和头寸检查,不适合交易时机判断。券商的价格才是实际成交价。trader-in/prices.json 中的每个价格都带有报价时间,trader-in-risk 仅使用15分钟内的数据。
  • 如果Yahoo不可用,可从券商(Kite、Upstox)读取价格并写入 trader-in/prices.json,格式为 {"as_of": "...Z", "prices": {"RELIANCE.NS": 1196.20}}。

NSE时钟

IST(印度标准时间)全年为UTC+05:30(无夏令时);工具自行计算时间,忽略计算机的本地时区。正常交易时段为09:15至15:30 IST,预开盘09:00至09:15(订单输入09:00-09:08,撮合09:08-09:15)。券商大约从15:20 IST开始对MIS仓位进行强制平仓并收费,因此计划中的默认平仓时间设为15:10。

  • NSE 2026年股票假日(工作日):1月26日共和国日、3月3日洒红节、3月26日罗摩诞辰、3月31日大雄诞辰、4月3日耶稣受难日、4月14日安贝德卡诞辰、5月1日马哈拉施特拉日、5月28日宰牲节、6月26日穆哈兰姆月、9月14日象神节、10月2日甘地诞辰、10月20日十胜节、11月10日排灯节·巴厘帕迪帕达、11月24日那纳克诞辰、12月25日圣诞节。
  • 特殊交易时段(非正常交易日):2026年2月1日(周日)联邦预算日,09:15-15:00;2026年11月8日(周日)Muhurat交易,14:20-15:30,预开盘从14:05开始,依据NSE通告 NSE/CMTR/76941(2026-10-19发布)(部分媒体报道关于收盘集合竞价的股票收盘时间有所不同:请查阅官方通告)。
  • 2027年的假日尚未公布:对于任何没有内置列表的年份,工具会发出一次警告(“2027年的NSE假日未内置;请将其添加到配置 extra_holidays 中”),并将所有工作日视为开市日。可通过配置 "extra_holidays": ["2027-01-26", ...] 添加休市日,通过 "special_sessions": {"YYYY-MM-DD": ["HH:MM", "HH:MM"]} 添加特殊交易时段。

操作步骤

  1. 在 trader-in-exit 写入交易计划后,立即运行 add --from-plan。向用户确认三个警报:止损、目标和平仓时间,以卢比和IST时间显示。同时说明止损和目标在券商处是两个独立订单:其中一个成交后,另一个必须取消。
  2. 在持仓期间运行 check:每几分钟通过 Claude 定时任务或 /loop 执行。每次执行仅获取今日规则涉及的股票最新延迟报价,每个警报仅触发一次。检查读取的是最新的延迟报价,并非实时数据流,因此在两次检查之间价格可能越过某个水平。
  3. 每行向用户报告触发的警报。止损或目标警报意味着该订单可能已成交:请在券商App中检查持仓和订单,取消另一个订单,并通过 /trader-in-broker 记录成交。"Flat by" 警报意味着在MIS强制平仓前平掉所有未平仓位:执行 /trader-in-broker flatten,然后运行 /trader-in-risk,获得用户确认后,再取消剩余的止损和目标订单。绝对不要替用户操作。

示例:实战场景

2026年10月27日(周二)RELIANCE.NS:开盘区间1,189.70-1,197.00,入场价₹1,197.20(IST时间12:40),止损₹1,193.30(区间中点),目标₹1,201.10(1倍风险回报比),平仓时间15:10。add --from-plan 会为该日写入 reliance-ns-plan-stop、reliance-ns-plan-target 和 reliance-ns-flat-by。15:05执行 check 读取实时最后报价₹1,196.20,位于止损和目标之间:

NSE开盘(2026-10-27 15:05 IST,正常交易时段)。
无触发。今日监控了3条规则,RELIANCE.NS ₹1,196.20。

到15:10:

警报 平仓时间:时间已到15:10 IST(设置为15:10),市场于15:30 IST收盘。券商大约从15:20 IST开始对MIS仓位强制平仓并收费。如果RELIANCE.NS仍处于未平仓状态,请平仓:
/trader-in-broker flatten --symbol RELIANCE.NS 创建卖出单,然后运行 /trader-in-risk 并确认。
同时取消券商处该股票所有未成交的止损和目标订单。

该警报只触发一次。第二天早上,计划中的三个警报不再被监控;通过 add --pre-open 和 add --opening-bell,它们会在09:00和09:15触发。

规则

  • 警报是关于价格或时间的客观事实。以陈述事实的方式告知用户。
  • 绝不打造成实时报价。免费报价为延迟且非官方数据。
  • 每条新规则都要向用户确认:股票代码、类型、水平(卢比)、日期。
  • 金额使用印度计数法(如 ₹1,23,456.78);时间使用IST。

永远不做的事情

本技能永远不会下达、取消或修改订单,永远不会声称报价是实时的,也永远不会预测价格走向。

安全说明

  • 仅为教育和工具用途,不构成投资建议。如需专业建议,请咨询SEBI注册的投资顾问。PASS 是规则检查结果,而非投资推荐。
  • 默认使用模拟交易("paper": true):印度券商没有模拟账户,因此模拟交易是本地模拟账本(trader-in/state/paper.json)。切换为实盘是用户自己的决定,需在个人配置中设置。
  • 本工具包中只有 trader-in-broker 能够下单,且必须同时满足三个条件:trader-in-risk 当日通过了该特定订单的检查、paper 设置为 false、用户在聊天中明确输入了同意执行的“是”。
  • 仅限现货股票多头:不包括期货期权、期权、做空或MIS杠杆交易,除非配置允许且用户确认。
  • 券商密钥存储在环境变量或Claude Desktop配置中,绝不会出现在聊天记录中。

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

bhardwajaditya/trader-in-broker

Order Executor for Indian stocks (NSE, BSE). Turns orders that passed /trader-in-risk into plain tickets for Zerodha Kite (default) or Upstox, and never sends anything without your yes. Indian brokers dropped bracket orders, so one trade becomes three orders: the buy, then a SL-M stop and a LIMIT target. The ticket warns that those two are NOT linked (no OCO). Shows the exact JSON for Kite's place_order MCP tool or the Upstox place-order body (ISIN instrument_token), the estimated costs (brokerage, STT, stamp duty, GST) and the max loss at the stop including costs, in ₹. Paper by default: a local simulated ledger with realised P&L after costs, because Indian brokers have no paper account. Live needs "paper": false, your yes typed word for word, then Claude's own Allow once card. Builds the sell that closes an MIS trade by 15:10 IST, before the broker's ~15:20 auto square-off. Covers connecting the Kite MCP server (tokens never in chat). Use when the user says "place the order", "buy it", "execute", "send…

bhardwajaditya/trader-in-news

News Monitor for Indian stocks (NSE / BSE). Tracks breaking news on every stock you watch and flags what moves it: Yahoo Finance and Google News (India edition) headlines, each company's exchange corporate announcements on NSE with a BSE fallback (financial results, board meeting outcomes, dividends, buybacks, acquisitions, credit ratings, KMP resignations and appointments, insider trading / SAST, promoter pledges, fund raising) and how far each stock is from the previous close in rupees. Shows only what is new since the last check, newest first, in IST, tags each item (earnings, analyst, deal, capital, people, halt, regulatory, macro...) and never repeats one. Use when the user says "any news on Reliance", "why is TCS moving", "news on my Nifty watchlist", "morning briefing", "pre-market news", "check NSE announcements", "any corporate announcements", "did HDFC Bank file anything", "monitor the news on my Indian stocks", or after /trader-in-scanner finds setups.

相关技能