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.json | flat_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 上或下;僅限今日報價 | 每天最多一次 |
time | IST 時鐘在交易日經過 at(如"15:10") | 每個交易日一次 |
opening_bell | NSE 開盤(09:15 IST,或特別交易時段開盤) | 每個交易日一次 |
pre_open | NSE 預開盤進行中(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"]}新增特別交易時段。
步驟
- 在 trader-in-exit 寫入計畫後,立即執行
add --from-plan。向使用者確認三個警報:停損、目標和平倉時間,以盧比和 IST 顯示。告知停損和目標在券商端是兩個獨立委託:其中一個成交時,必須取消另一個。 - 在交易持有期間執行
check:從 Claude 排程任務或/loop每隔幾分鐘執行一次。每次執行只抓取今日規則中的標的,每個警報只觸發一次。檢查會讀取最新的延遲報價;這不是即時報價源,價格可能在兩次檢查之間穿越水準。 - 每行告訴使用者什麼觸發了警報。停損或目標警報表示該委託很可能已成交:在券商 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 設定中,絕不在聊天中出現。