Community程式設計與開發github.com

bhardwajaditya/trader-in-alerts

印度股票(NSE、BSE)的價格警報。當價格觸及、停損觸發或開盤鈴響時提醒。將交易計畫一次轉換為三個警報(停損、目標及「平倉時間」),外加高於/低於/停損/目標價格、相對於前日收盤的百分比變動,以及開盤提醒。

trader-in-alerts 是什麼?

此技能專為需要在印度股市(NSE、BSE)進行交易的使用者設計,能自動監控價格並在關鍵事件發生時發送提醒。使用者無需緊盯圖表,技能會根據交易計畫(trader-in/plan.json)自動建立三個警報:停損、目標價及預設的平倉時間(15:10 IST),並支援高於/低於特定價格、百分比變動、開盤預開盤等警報類型。 技能支援 Yahoo 延遲報價(.NS / .BO 代碼),一次僅查詢一個標的,並將價格寫入 trader-in/prices.json 供資金管理與風險檢查使用。同時內建 NSE 交易時鐘,包括 2026 年 NSE 假日、預算日及 Muhurat 特別交易時段,確保警報只在正確時間觸發。 警報僅為資訊,不會執行任何買賣委託。當停損或目標警報響起時,技能會提醒使用者在 Zerodha、Upstox 等印度券商的 MIS 帳戶中,停損與目標是兩個獨立委託(無 OCO),必須手動取消另一個。 此技能適合 Claude Code 等 AI 助手使用,可透過指令列操作,支援排程檢查(check),並在價格觸及設定水準時返回警報結果。永遠不會代替使用者下單,確保交易決策由使用者自行掌控。

相容平台✓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                          # exit 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 回應「No data found」):請使用 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重設後,或若 "rearm": true 且價格回落
below / stop價格達到或低於 price同上
pct_move相對於前日收盤(或 ref)變動 pct 百分比,可選 direction 上或下;僅限今日報價每天最多一次
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:00 收盤的時段,「15:10 平倉」會在 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 提供 NSE 和 BSE 的盧比報價,時間為 Asia/Kolkata;百分比變動使用其前日收盤價。
  • 不使用 Stooq:它不提供 NSE/BSE 標的代碼,且在 2026-10-27 其報價 CSV 對每個標的皆回應 404,其他頁面則有 JavaScript 驗證。
  • 免費報價非官方、有延遲,可能落後。它們適合用於警報和檢查數量,不適合用於下單時機。券商價格才是實際成交價格。trader-in/prices.json 中的每個價格都帶有其報價時間,trader-in-risk 只使用 15 分鐘內的資料。
  • 若 Yahoo 停機,請從券商(Kite、Upstox)讀取價格,並以 {"as_of": "...Z", "prices": {"RELIANCE.NS": 1196.20}} 格式寫入 trader-in/prices.json。

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。

  • 2026 年 NSE 股票假日(平日):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 假日未內建;請將它們加入 config 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 記錄成交。「平倉」意味著在 MIS 強制平倉前關閉任何仍持有的部位:/trader-in-broker flatten,然後 /trader-in-risk,接著使用者確認「是」,然後取消剩餘的停損和目標委託。絕不代替他們行動。

範例:實際運作

2026 年 10 月 27 日(星期二)RELIANCE.NS:開盤區間 1,189.70-1,197.00,進場價 ₹1,197.20(12:40 IST),停損 ₹1,193.30(區間中點),目標 ₹1,201.10(1R),15:10 平倉。add --from-plan 為當天寫入 reliance-ns-plan-stop、reliance-ns-plan-target 和 reliance-ns-flat-by。在 15:05 執行 check 讀取實際最後報價 ₹1,196.20,位於停損和目標之間:

NSE OPEN (2026-10-27 15:05 IST, normal session).
Nothing hit. 3 rule(s) watched today, RELIANCE.NS ₹1,196.20.

15:10 時:

ALERT Flat by: it is 15:10 IST (set for 15:10), the market closes at 15:30 IST. Brokers square off MIS
positions from about 15:20 IST and charge for it. If RELIANCE.NS is still open, close it:
/trader-in-broker flatten --symbol RELIANCE.NS builds the sell ticket, then /trader-in-risk and your yes.
Then cancel any stop and target orders still pending for it at the broker.

它只觸發一次。隔天早上,計畫的三個警報不再被觀察;透過 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-broker 僅在三項條件同時成立時才會下單:trader-in-risk 已通過當日該筆委託的檢查、paper 為 false,且使用者在聊天中對該筆委託明確輸入「是」。
  • 僅限長期現股:無期貨選擇權、選擇權、放空或 MIS 槓桿,除非設定允許且使用者確認。
  • 券商金鑰存在於環境變數或 Claude Desktop 設定中,絕不在聊天中出現。

安全

  • 教育與工具,而非投資建議。如需建議,請諮詢 SEBI 註冊的投資顧問。PASS 是規則檢查,並非推薦。
  • 預設為紙上交易("paper": true):印度券商沒有紙上帳戶,因此紙上交易是本地模擬帳本(trader-in/state/paper.json)。實際交易由使用者自行決定,並在其自己的設定中設定。
  • 此套件中除了 trader-in-broker 外,沒有任何元件會下單,且 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.

相關技能