{"owner":"waditu","repo":"czsc","hasSkills":true,"totalSkillsCount":259,"totalTokensCount":113659,"categories":["anthropic-skill","claude-rule"],"hasMcp":false,"mcpConfig":null,"found":[".claude/skills/czsc-release/SKILL.md",".claude/skills/czsc-release/references/release_checklist.md",".claude/skills/czsc-write-signal-function/SKILL.md",".claude/skills/czsc-write-signal-function/agents/openai.yaml",".claude/skills/czsc-write-signal-function/references/event-driven-signal-pipeline.md",".claude/skills/czsc-write-signal-function/references/signal-function-patterns.md",".claude/skills/signal-functions/SKILL.md",".claude/skills/signal-functions/references/signals-ang.md",".claude/skills/signal-functions/references/signals-bar.md",".claude/skills/signal-functions/references/signals-byi.md",".claude/skills/signal-functions/references/signals-cat.md",".claude/skills/signal-functions/references/signals-clv.md",".claude/skills/signal-functions/references/signals-coo.md",".claude/skills/signal-functions/references/signals-cvolp.md",".claude/skills/signal-functions/references/signals-cxt.md",".claude/skills/signal-functions/references/signals-cxt_trader.md",".claude/skills/signal-functions/references/signals-jcc.md",".claude/skills/signal-functions/references/signals-kcatr.md",".claude/skills/signal-functions/references/signals-ntmdk.md",".claude/skills/signal-functions/references/signals-obv.md",".claude/skills/signal-functions/references/signals-pos.md",".claude/skills/signal-functions/references/signals-pressure.md",".claude/skills/signal-functions/references/signals-tas.md",".claude/skills/signal-functions/references/signals-vol.md",".claude/skills/signal-functions/references/signals-xl.md",".claude/skills/signal-functions/references/signals-zdy_trader.md",".claude/skills/signal-functions/references/signals/adtm_up_dw_line_V230603.md",".claude/skills/signal-functions/references/signals/amv_up_dw_line_V230603.md",".claude/skills/signal-functions/references/signals/asi_up_dw_line_V230603.md",".claude/skills/signal-functions/references/signals/bar_accelerate_V221110.md",".claude/skills/signal-functions/references/signals/bar_accelerate_V221118.md",".claude/skills/signal-functions/references/signals/bar_accelerate_V240428.md",".claude/skills/signal-functions/references/signals/bar_amount_acc_V230214.md",".claude/skills/signal-functions/references/signals/bar_big_solid_V230215.md",".claude/skills/signal-functions/references/signals/bar_bpm_V230227.md",".claude/skills/signal-functions/references/signals/bar_break_V240428.md",".claude/skills/signal-functions/references/signals/bar_channel_V230508.md",".claude/skills/signal-functions/references/signals/bar_classify_V240606.md",".claude/skills/signal-functions/references/signals/bar_classify_V240607.md",".claude/skills/signal-functions/references/signals/bar_decision_V240608.md",".claude/skills/signal-functions/references/signals/bar_decision_V240616.md",".claude/skills/signal-functions/references/signals/bar_dual_thrust_V230403.md",".claude/skills/signal-functions/references/signals/bar_eight_V230702.md",".claude/skills/signal-functions/references/signals/bar_end_V221211.md",".claude/skills/signal-functions/references/signals/bar_fake_break_V230204.md",".claude/skills/signal-functions/references/signals/bar_fang_liang_break_V221216.md",".claude/skills/signal-functions/references/signals/bar_limit_down_V230525.md",".claude/skills/signal-functions/references/signals/bar_mean_amount_V221112.md",".claude/skills/signal-functions/references/signals/bar_operate_span_V221111.md",".claude/skills/signal-functions/references/signals/bar_plr_V240427.md",".claude/skills/signal-functions/references/signals/bar_polyfit_V240428.md",".claude/skills/signal-functions/references/signals/bar_r_breaker_V230326.md",".claude/skills/signal-functions/references/signals/bar_reversal_V230227.md",".claude/skills/signal-functions/references/signals/bar_section_momentum_V221112.md",".claude/skills/signal-functions/references/signals/bar_shuang_fei_V230507.md",".claude/skills/signal-functions/references/signals/bar_single_V230214.md",".claude/skills/signal-functions/references/signals/bar_single_V230506.md",".claude/skills/signal-functions/references/signals/bar_td9_V240616.md",".claude/skills/signal-functions/references/signals/bar_time_V230327.md",".claude/skills/signal-functions/references/signals/bar_tnr_V230629.md",".claude/skills/signal-functions/references/signals/bar_tnr_V230630.md",".claude/skills/signal-functions/references/signals/bar_trend_V240209.md",".claude/skills/signal-functions/references/signals/bar_triple_V230506.md",".claude/skills/signal-functions/references/signals/bar_vol_bs1_V230224.md",".claude/skills/signal-functions/references/signals/bar_vol_grow_V221112.md",".claude/skills/signal-functions/references/signals/bar_volatility_V241013.md",".claude/skills/signal-functions/references/signals/bar_weekday_V230328.md",".claude/skills/signal-functions/references/signals/bar_window_ps_V230731.md",".claude/skills/signal-functions/references/signals/bar_window_ps_V230801.md",".claude/skills/signal-functions/references/signals/bar_window_std_V230731.md",".claude/skills/signal-functions/references/signals/bar_zdf_V221203.md",".claude/skills/signal-functions/references/signals/bar_zdt_V230331.md",".claude/skills/signal-functions/references/signals/bar_zfzd_V241013.md",".claude/skills/signal-functions/references/signals/bar_zfzd_V241014.md",".claude/skills/signal-functions/references/signals/bar_zt_count_V230504.md",".claude/skills/signal-functions/references/signals/bias_up_dw_line_V230618.md",".claude/skills/signal-functions/references/signals/byi_bi_end_V230106.md",".claude/skills/signal-functions/references/signals/byi_bi_end_V230107.md",".claude/skills/signal-functions/references/signals/byi_fx_num_V230628.md",".claude/skills/signal-functions/references/signals/byi_second_bs_V230324.md",".claude/skills/signal-functions/references/signals/byi_symmetry_zs_V221107.md",".claude/skills/signal-functions/references/signals/cat_macd_V230518.md",".claude/skills/signal-functions/references/signals/cat_macd_V230520.md",".claude/skills/signal-functions/references/signals/cci_decision_V240620.md",".claude/skills/signal-functions/references/signals/clv_up_dw_line_V230605.md",".claude/skills/signal-functions/references/signals/cmo_up_dw_line_V230605.md",".claude/skills/signal-functions/references/signals/coo_cci_V230323.md",".claude/skills/signal-functions/references/signals/coo_kdj_V230322.md",".claude/skills/signal-functions/references/signals/coo_sar_V230325.md",".claude/skills/signal-functions/references/signals/coo_td_V221110.md",".claude/skills/signal-functions/references/signals/coo_td_V221111.md",".claude/skills/signal-functions/references/signals/cvolp_up_dw_line_V230612.md",".claude/skills/signal-functions/references/signals/cxt_bi_base_V230228.md",".claude/skills/signal-functions/references/signals/cxt_bi_end_V230104.md",".claude/skills/signal-functions/references/signals/cxt_bi_end_V230105.md",".claude/skills/signal-functions/references/signals/cxt_bi_end_V230222.md",".claude/skills/signal-functions/references/signals/cxt_bi_end_V230224.md",".claude/skills/signal-functions/references/signals/cxt_bi_end_V230312.md",".claude/skills/signal-functions/references/signals/cxt_bi_end_V230320.md",".claude/skills/signal-functions/references/signals/cxt_bi_end_V230322.md",".claude/skills/signal-functions/references/signals/cxt_bi_end_V230324.md",".claude/skills/signal-functions/references/signals/cxt_bi_end_V230618.md",".claude/skills/signal-functions/references/signals/cxt_bi_end_V230815.md",".claude/skills/signal-functions/references/signals/cxt_bi_status_V230101.md",".claude/skills/signal-functions/references/signals/cxt_bi_status_V230102.md",".claude/skills/signal-functions/references/signals/cxt_bi_stop_V230815.md",".claude/skills/signal-functions/references/signals/cxt_bi_trend_V230824.md",".claude/skills/signal-functions/references/signals/cxt_bi_trend_V230913.md",".claude/skills/signal-functions/references/signals/cxt_bi_zdf_V230601.md",".claude/skills/signal-functions/references/signals/cxt_bs_V240526.md",".claude/skills/signal-functions/references/signals/cxt_bs_V240527.md",".claude/skills/signal-functions/references/signals/cxt_decision_V240526.md",".claude/skills/signal-functions/references/signals/cxt_decision_V240612.md",".claude/skills/signal-functions/references/signals/cxt_decision_V240613.md",".claude/skills/signal-functions/references/signals/cxt_decision_V240614.md",".claude/skills/signal-functions/references/signals/cxt_double_zs_V230311.md",".claude/skills/signal-functions/references/signals/cxt_eleven_bi_V230622.md",".claude/skills/signal-functions/references/signals/cxt_first_buy_V221126.md",".claude/skills/signal-functions/references/signals/cxt_first_sell_V221126.md",".claude/skills/signal-functions/references/signals/cxt_five_bi_V230619.md",".claude/skills/signal-functions/references/signals/cxt_fx_power_V221107.md",".claude/skills/signal-functions/references/signals/cxt_intraday_V230701.md",".claude/skills/signal-functions/references/signals/cxt_nine_bi_V230621.md",".claude/skills/signal-functions/references/signals/cxt_overlap_V240526.md",".claude/skills/signal-functions/references/signals/cxt_overlap_V240612.md",".claude/skills/signal-functions/references/signals/cxt_range_oscillation_V230620.md",".claude/skills/signal-functions/references/signals/cxt_second_bs_V230320.md",".claude/skills/signal-functions/references/signals/cxt_second_bs_V240524.md",".claude/skills/signal-functions/references/signals/cxt_seven_bi_V230620.md",".claude/skills/signal-functions/references/signals/cxt_third_bs_V230318.md",".claude/skills/signal-functions/references/signals/cxt_third_bs_V230319.md",".claude/skills/signal-functions/references/signals/cxt_third_buy_V230228.md",".claude/skills/signal-functions/references/signals/cxt_three_bi_V230618.md",".claude/skills/signal-functions/references/signals/cxt_ubi_end_V230816.md",".claude/skills/signal-functions/references/signals/cxt_zhong_shu_gong_zhen_V221221.md",".claude/skills/signal-functions/references/signals/dema_up_dw_line_V230605.md",".claude/skills/signal-functions/references/signals/demakder_up_dw_line_V230605.md",".claude/skills/signal-functions/references/signals/emv_up_dw_line_V230605.md",".claude/skills/signal-functions/references/signals/er_up_dw_line_V230604.md",".claude/skills/signal-functions/references/signals/jcc_ci_tou_V221101.md",".claude/skills/signal-functions/references/signals/jcc_fan_ji_xian_V221121.md",".claude/skills/signal-functions/references/signals/jcc_fen_shou_xian_V20221113.md",".claude/skills/signal-functions/references/signals/jcc_gap_yin_yang_V221121.md",".claude/skills/signal-functions/references/signals/jcc_ping_tou_V221113.md",".claude/skills/signal-functions/references/signals/jcc_san_fa_V20221115.md",".claude/skills/signal-functions/references/signals/jcc_san_fa_V20221118.md",".claude/skills/signal-functions/references/signals/jcc_san_szx_V221122.md",".claude/skills/signal-functions/references/signals/jcc_san_xing_xian_V221023.md",".claude/skills/signal-functions/references/signals/jcc_shan_chun_V221121.md",".claude/skills/signal-functions/references/signals/jcc_szx_V221111.md",".claude/skills/signal-functions/references/signals/jcc_ta_xing_V221124.md",".claude/skills/signal-functions/references/signals/jcc_ten_mo_V221028.md",".claude/skills/signal-functions/references/signals/jcc_three_crow_V221108.md",".claude/skills/signal-functions/references/signals/jcc_two_crow_V221108.md",".claude/skills/signal-functions/references/signals/jcc_wu_yun_gai_ding_V221101.md",".claude/skills/signal-functions/references/signals/jcc_xing_xian_V221118.md",".claude/skills/signal-functions/references/signals/jcc_yun_xian_V221118.md",".claude/skills/signal-functions/references/signals/jcc_zhu_huo_xian_V221027.md",".claude/skills/signal-functions/references/signals/kcatr_up_dw_line_V230823.md",".claude/skills/signal-functions/references/signals/ntmdk_V230824.md",".claude/skills/signal-functions/references/signals/obv_up_dw_line_V230719.md",".claude/skills/signal-functions/references/signals/obvm_line_V230610.md",".claude/skills/signal-functions/references/signals/pos_bar_stop_V230524.md",".claude/skills/signal-functions/references/signals/pos_fix_exit_V230624.md",".claude/skills/signal-functions/references/signals/pos_fx_stop_V230414.md",".claude/skills/signal-functions/references/signals/pos_holds_V230414.md",".claude/skills/signal-functions/references/signals/pos_holds_V230807.md",".claude/skills/signal-functions/references/signals/pos_holds_V240428.md",".claude/skills/signal-functions/references/signals/pos_holds_V240608.md",".claude/skills/signal-functions/references/signals/pos_ma_V230414.md",".claude/skills/signal-functions/references/signals/pos_profit_loss_V230624.md",".claude/skills/signal-functions/references/signals/pos_status_V230808.md",".claude/skills/signal-functions/references/signals/pos_stop_V240331.md",".claude/skills/signal-functions/references/signals/pos_stop_V240428.md",".claude/skills/signal-functions/references/signals/pos_stop_V240608.md",".claude/skills/signal-functions/references/signals/pos_stop_V240614.md",".claude/skills/signal-functions/references/signals/pos_stop_V240717.md",".claude/skills/signal-functions/references/signals/pos_take_V240428.md",".claude/skills/signal-functions/references/signals/pressure_support_V240222.md",".claude/skills/signal-functions/references/signals/pressure_support_V240402.md",".claude/skills/signal-functions/references/signals/pressure_support_V240406.md",".claude/skills/signal-functions/references/signals/pressure_support_V240530.md",".claude/skills/signal-functions/references/signals/skdj_up_dw_line_V230611.md",".claude/skills/signal-functions/references/signals/tas_accelerate_V230531.md",".claude/skills/signal-functions/references/signals/tas_angle_V230802.md",".claude/skills/signal-functions/references/signals/tas_atr_V230630.md",".claude/skills/signal-functions/references/signals/tas_atr_break_V230424.md",".claude/skills/signal-functions/references/signals/tas_boll_bc_V221118.md",".claude/skills/signal-functions/references/signals/tas_boll_cc_V230312.md",".claude/skills/signal-functions/references/signals/tas_boll_power_V221112.md",".claude/skills/signal-functions/references/signals/tas_boll_vt_V230212.md",".claude/skills/signal-functions/references/signals/tas_cci_base_V230402.md",".claude/skills/signal-functions/references/signals/tas_cross_status_V230619.md",".claude/skills/signal-functions/references/signals/tas_cross_status_V230624.md",".claude/skills/signal-functions/references/signals/tas_cross_status_V230625.md",".claude/skills/signal-functions/references/signals/tas_dif_layer_V241010.md",".claude/skills/signal-functions/references/signals/tas_dif_zero_V240612.md",".claude/skills/signal-functions/references/signals/tas_dif_zero_V240614.md",".claude/skills/signal-functions/references/signals/tas_dma_bs_V240608.md",".claude/skills/signal-functions/references/signals/tas_double_ma_V221203.md",".claude/skills/signal-functions/references/signals/tas_double_ma_V230511.md",".claude/skills/signal-functions/references/signals/tas_double_ma_V240208.md",".claude/skills/signal-functions/references/signals/tas_first_bs_V230217.md",".claude/skills/signal-functions/references/signals/tas_hlma_V230301.md",".claude/skills/signal-functions/references/signals/tas_kdj_base_V221101.md",".claude/skills/signal-functions/references/signals/tas_kdj_evc_V221201.md",".claude/skills/signal-functions/references/signals/tas_kdj_evc_V230401.md",".claude/skills/signal-functions/references/signals/tas_low_trend_V230627.md",".claude/skills/signal-functions/references/signals/tas_ma_base_V221101.md",".claude/skills/signal-functions/references/signals/tas_ma_base_V221203.md",".claude/skills/signal-functions/references/signals/tas_ma_base_V230313.md",".claude/skills/signal-functions/references/signals/tas_ma_cohere_V230512.md",".claude/skills/signal-functions/references/signals/tas_ma_round_V221206.md",".claude/skills/signal-functions/references/signals/tas_ma_system_V230513.md",".claude/skills/signal-functions/references/signals/tas_macd_base_V221028.md",".claude/skills/signal-functions/references/signals/tas_macd_base_V230320.md",".claude/skills/signal-functions/references/signals/tas_macd_bc_V221201.md",".claude/skills/signal-functions/references/signals/tas_macd_bc_V230803.md",".claude/skills/signal-functions/references/signals/tas_macd_bc_V230804.md",".claude/skills/signal-functions/references/signals/tas_macd_bc_V240307.md",".claude/skills/signal-functions/references/signals/tas_macd_bc_ubi_V230804.md",".claude/skills/signal-functions/references/signals/tas_macd_bs1_V230312.md",".claude/skills/signal-functions/references/signals/tas_macd_bs1_V230313.md",".claude/skills/signal-functions/references/signals/tas_macd_bs1_V230411.md",".claude/skills/signal-functions/references/signals/tas_macd_bs1_V230412.md",".claude/skills/signal-functions/references/signals/tas_macd_change_V221105.md",".claude/skills/signal-functions/references/signals/tas_macd_direct_V221106.md",".claude/skills/signal-functions/references/signals/tas_macd_dist_V230408.md",".claude/skills/signal-functions/references/signals/tas_macd_dist_V230409.md",".claude/skills/signal-functions/references/signals/tas_macd_dist_V230410.md",".claude/skills/signal-functions/references/signals/tas_macd_first_bs_V221201.md",".claude/skills/signal-functions/references/signals/tas_macd_first_bs_V221216.md",".claude/skills/signal-functions/references/signals/tas_macd_power_V221108.md",".claude/skills/signal-functions/references/signals/tas_macd_second_bs_V221201.md",".claude/skills/signal-functions/references/signals/tas_macd_xt_V221208.md",".claude/skills/signal-functions/references/signals/tas_rsi_base_V230227.md",".claude/skills/signal-functions/references/signals/tas_rumi_V230704.md",".claude/skills/signal-functions/references/signals/tas_sar_base_V230425.md",".claude/skills/signal-functions/references/signals/tas_second_bs_V230228.md",".claude/skills/signal-functions/references/signals/tas_second_bs_V230303.md",".claude/skills/signal-functions/references/signals/tas_slope_V231019.md",".claude/skills/signal-functions/references/signals/vol_double_ma_V230214.md",".claude/skills/signal-functions/references/signals/vol_gao_di_V221218.md",".claude/skills/signal-functions/references/signals/vol_single_ma_V230214.md",".claude/skills/signal-functions/references/signals/vol_ti_suo_V221216.md",".claude/skills/signal-functions/references/signals/vol_window_V230731.md",".claude/skills/signal-functions/references/signals/vol_window_V230801.md",".claude/skills/signal-functions/references/signals/xl_bar_basis_V240411.md",".claude/skills/signal-functions/references/signals/xl_bar_basis_V240412.md",".claude/skills/signal-functions/references/signals/xl_bar_position_V240328.md",".claude/skills/signal-functions/references/signals/xl_bar_trend_V240329.md",".claude/skills/signal-functions/references/signals/xl_bar_trend_V240330.md",".claude/skills/signal-functions/references/signals/xl_bar_trend_V240331.md",".claude/skills/signal-functions/references/signals/xl_bar_trend_V240623.md",".claude/skills/signal-functions/references/signals/zdy_stop_loss_V230406.md",".claude/skills/signal-functions/references/signals/zdy_take_profit_V230406.md",".claude/skills/signal-functions/references/signals/zdy_take_profit_V230407.md",".claude/skills/signal-functions/references/signals/zdy_vibrate_V230406.md","CLAUDE.md"],"skills":{".claude/skills/czsc-release/SKILL.md":"---\nname: czsc-release\ndescription: 规范 czsc 库（混合 Rust + Python，PyO3 + maturin）的版本发布流程。当用户说\"发版/发布/release/publish czsc\"、\"bump 版本\"、\"出 rc.N+1\"、\"准备 1.0.0 stable\"、要把 Rust crate 推 crates.io 或 wheel 推 PyPI 时使用。本 skill 半自动执行预检 / bump / CHANGELOG / commit，遇 push tag / push master / 真 publish 等不可逆动作时停下来要授权。\n---\n\n# CZSC Release Workflow\n\n## 📋 Mandatory References（必读，且必须逐项核完才能进 Phase 3）\n\n| 文件 | 角色 | 何时读 |\n|---|---|---|\n| **`docs/release_checklist.md`**（项目根目录，权威 214 行清单） | 9 节硬性检查清单 —— 含代码/文档一致性、SemVer 决策、本地 Rust/Python/Wheel 三层验证、发布动作顺序、发布后验证、隐藏缺陷雷达、一键自检脚本 | **Phase 0 一次性 Read 全文**；Phase 2 按 §3/§4/§5/§9 跑命令 |\n| `references/release_checklist.md`（本目录） | 上述文件的 pointer（不存内容，避免漂移） | 仅供路径定位 |\n\n**ratchet 规则**：本 skill 的 Phase 2 预检是 `docs/release_checklist.md` 的最小子集。完整清单**必须全部 ✅ 通过**才能进 Phase 3 bump 版本。任何一项 fail / 跳过 → 停下问用户，不要自己决定\"这条不重要\"。\n\n## Overview\n\nczsc 是 **Rust + Python 混合包**：\n\n- crates.io 上发 6 个业务 crate（`czsc-derive`/`czsc-signal-macros` → `czsc-core` → `czsc-ta`/`czsc-utils` → `czsc-signals` → `czsc-trader` → `czsc` facade）\n- PyPI 上发 1 个 wheel（`czsc`，扩展模块 `czsc._native` 由 `crates/czsc-python` 通过 maturin 编译）\n\n两边**版本号必须严格一致**（宪法第一条 + PR-5）。**唯一版本源是 `Cargo.toml [workspace.package].version`**，pyproject.toml 用 `dynamic = [\"version\"]` 由 maturin 注入，`crates/czsc-python/build.rs` 在编译期 ratchet 禁止 pyproject.toml 硬编码 version。\n\n发版**完全靠 GitHub Actions 自动化**：\n\n| 触发 | Workflow | 行为 |\n|---|---|---|\n| `git push origin vX.Y.Z` | `.github/workflows/python-publish.yml` | 自动 build wheels + smoke + 推 PyPI（OIDC Trusted Publishing） |\n| `git push origin vX.Y.Z` | `.github/workflows/rust-publish.yml` | 默认 **dry-run**；真 publish 需 workflow_dispatch + `do_publish=true` |\n\n本 skill 的责任是**人手动做才不会错**的部分：版本决策、CHANGELOG 落档、预检、tag/push 时机、CI 监控、出错重发。\n\n## What this skill does / doesn't do\n\n| ✅ skill 替你做 | ❌ skill 不做 |\n|---|---|\n| 跑全套预检（fmt / clippy / pytest / maturin / stub） | 真按 PyPI 上传按钮（CI 干） |\n| 推下一版本号（基于 CHANGELOG 推 SemVer） | 真按 crates.io publish（CI workflow_dispatch 干） |\n| Bump `Cargo.toml` workspace version | 给 OIDC trusted publishing / CRATES_IO_TOKEN 配凭证（一次性人工事） |\n| 把 CHANGELOG `[Unreleased]` 落档成 `[X.Y.Z] — YYYY-MM-DD` | `git push origin master`、`git tag`、`git push --tags`——这些都要**先停下来明确征求授权**，不可逆 |\n| 提 `chore(release): bump X.Y.Z` commit | 跨语言 reviewer 工作（PR 评审走 requesting-code-review skill） |\n| 监控 publish workflow 跑完，失败时进入重发剧本 | |\n\n## Decision Tree\n\n```\n1. 当前在 master 上？working tree 干净？\n   └─ 否：先 commit 完手头改动，merge 进 master 再 release。\n        发版必须在 master 头部，避免分支漂移。\n\n2. 现在该发什么版本号？\n   ├─ 当前 rc 阶段（X.Y.Z-rc.N）\n   │   ├─ 上轮 RC 已经 publish 到 PyPI/crates.io？\n   │   │   ├─ 是：bump rc.N+1（哪怕只改了 docs，PyPI 版本号已占名不能复用）\n   │   │   └─ 否（rc.N wheel 未上传 / crate 未发）：可以在 rc.N 上修问题、复用 rc.N\n   │   └─ rc 期间累积满意，准备出第一个 stable：bump 到 X.Y.Z（去掉 -rc.N）\n   ├─ stable 阶段（X.Y.Z）\n   │   ├─ [Unreleased] 含 Breaking changes → bump X+1.0.0\n   │   ├─ 仅 Added/Changed（无 breaking） → bump X.Y+1.0\n   │   └─ 仅 Fixed/docs/internal     → bump X.Y.Z+1\n   └─ 不确定 → 让 skill 推荐并问用户确认（永远先问，别猜）\n\n3. 这次只发 Python 还是 Python + Rust 都发？\n   ├─ 改了 Rust crate 公共 API → 两边都发\n   ├─ 只改了 Python 端 facade / docs → 两边都发（版本号必须同步，不能 PyPI 走 1.0.1 而 crates.io 停 1.0.0）\n   └─ 默认：两边都发（除非用户明确说 \"skip rust\" / \"skip python\"）\n```\n\n## Workflow\n\n### Phase 0 — 准备（必做）\n\n**0.0 强制读 release checklist 全文**：\n\n```\nRead /Users/lifanngzhou/git-repo/czsc/docs/release_checklist.md\n```\n\n读完后**列出 9 节标题**给用户看，明确告知\"以下每一节都必须 ✅ 通过才能发版；本 skill 的 Phase 2 是 §3+§4+§5+§9 的最小子集，§1（代码/文档一致性）、§5（Linux aarch64/musllinux wheel 验证）、§7（发布后验证）等节本 skill 不能替代，你需要手动核完并告诉我结果\"。\n\n```bash\n# 0.1 切到 master + pull 最新\ngit checkout master\ngit pull --ff-only origin master\n\n# 0.2 working tree 干净\ngit status   # 必须 nothing to commit\n\n# 0.3 距上一个 tag 至少有 1 个 commit（否则没东西可发）\ngit describe --tags --abbrev=0\ngit log $(git describe --tags --abbrev=0)..HEAD --oneline | wc -l   # > 0\n\n# 0.4 CHANGELOG.md 的 [Unreleased] 非空\ngrep -A50 '^## \\[Unreleased\\]' CHANGELOG.md\n\n# 0.5 release_checklist.md §1 代码/文档一致性（含 3 段 rg 命令）\n#     —— 这一节本 skill 没复述，必须按 docs/release_checklist.md 跑\n```\n\n如果 [Unreleased] 是空的 → **停**，告诉用户：\"上一个 release 后没人写 CHANGELOG，发版前先补\"，让用户决定补还是放弃。\n\n如果 §1 的 `rg czsc.svc|czsc.signals.|streamlit|CZSC_USE_PYTHON|SignalsParser` 命中（说明 markdown 引用了已删除的 API）→ **停**，让用户先清理文档。\n\n### Phase 1 — 推荐下一版本号\n\n读 `Cargo.toml [workspace.package].version` 拿当前版本，读 CHANGELOG.md 的 `[Unreleased]` 块。\n\n按 [Decision Tree](#decision-tree) 第 2 步推荐下一个版本号，并**用 AskUserQuestion 让用户确认**，给出推荐理由：\n\n> 当前版本 1.0.0-rc.7。CHANGELOG [Unreleased] 含 Breaking changes（X 项）+ Added（Y 项）+ Fixed（Z 项）。\n> 推荐 bump 到 **1.0.0-rc.8**（仍在 rc 阶段，rc.7 已发 PyPI 不能复用号）。\n> 是否同意？\n\n### Phase 2 — Pre-flight 预检（必跑全套）\n\n这一节的 ratchet 都是 CHANGELOG 历史教训留下的，**不要跳任何一项**。\n\n> **本节与 `docs/release_checklist.md` 的对应关系**：\n> - 2.1 ↔ checklist §3（Rust 验证 + clippy）\n> - 2.2 ↔ checklist §3（cargo test 的 5 crate 子集）\n> - 2.3-2.4 ↔ checklist §3 最后一项（stub_gen + git diff ratchet）\n> - 2.5-2.6 ↔ checklist §4（Python 验证 + `--run-slow`）\n> - **未覆盖**：checklist §5（本地 wheel + Linux aarch64/musllinux docker 验证）—— 必须额外手跑\n>\n> 想一键跑完？用 checklist §9 的 bash 一键脚本（已串好 §3+§4 的全部命令）。\n\n```bash\n# 2.1 Rust 端格式 + clippy + 全 target typecheck（rc.3 教训：cargo check 不带 --all-targets 漏 test 模块）\ncargo fmt --all -- --check\ncargo clippy --workspace --all-targets -- -D warnings\ncargo check --workspace --all-targets\n\n# 2.2 Rust 单元测试（不带 python feature，绕开 pyo3-stub-gen 上游兼容性问题）\ncargo test --release -p czsc-core --lib\n\n# 2.3 重编 .so 与最新源对齐\nuv run --no-sync maturin develop --release\n\n# 2.4 重生成 stub 并校验无 drift\nPYO3_PYTHON=$(pwd)/.venv/bin/python3 cargo run --release --bin stub_gen -p czsc-python --no-default-features --features stub-gen\ngit diff --exit-code czsc/_native/__init__.pyi   # 必须 0 — stub 必须与 Rust 源一致\n\n# 2.5 Python 端测试 + lint\nuv run --no-sync pytest tests/unit tests/compat -q\nuv run --no-sync ruff format --check czsc tests\nuv run --no-sync ruff check czsc tests\n\n# 2.6 慢测试（发版必跑，平时不跑）\nuv run --no-sync pytest --run-slow -q\n```\n\n任何一步 fail → **停**，把失败摘要给用户，让用户决定修还是放弃发版。**不要在 fail 状态下继续 bump 版本号**——历史上 rc.2/3/4/5 重发都是因为预检不严，把已知错带上 CI。\n\n### Phase 3 — Bump 版本 + 落 CHANGELOG（可逆，skill 直接做）\n\n```bash\nNEW_VER=\"1.0.0-rc.8\"     # ← 来自 Phase 1 用户确认值\nTODAY=$(date +%Y-%m-%d)\n```\n\n1. **改 `Cargo.toml`** 的 `[workspace.package] version = \"...\"`，**同时**把 `[workspace.dependencies]` 里所有 `czsc-* = { path = \"...\", version = \"...\" }` 的 version 字段都同步成新值（grep 出来一并改，否则 `cargo publish` 会拒绝）。\n2. **跑一次 `cargo check --workspace`** 让 `crates/czsc-python/build.rs` 的 ratchet 重新校验 pyproject.toml 仍走 dynamic。\n3. **CHANGELOG.md**：把 `## [Unreleased]` 改成 `## [NEW_VER] — TODAY`，并在它**上方插一个新的空 `[Unreleased]`** 块，结构如下：\n   ```markdown\n   ## [Unreleased]\n\n   _（待填）_\n\n   ---\n\n   ## [1.0.0-rc.8] — 2026-05-29\n\n   ### Added\n   ...（搬下来的内容）\n   ```\n4. **再跑一次 maturin develop + 烟测**确认 bump 后 .so 还能装、`__version__` 正确：\n   ```bash\n   uv run --no-sync maturin develop --release\n   uv run --no-sync python -c \"import czsc; print(czsc.__version__)\"   # 必须等于 NEW_VER 的 PEP440 形式\n   ```\n5. **提 commit**：\n   ```bash\n   git add Cargo.toml CHANGELOG.md\n   # 如果 step 1 改到了 workspace.dependencies，那些也加\n   git commit -m \"chore(release): bump ${NEW_VER}\"\n   ```\n\n### Phase 4 — 打 tag + push（不可逆，**必须先停下来征求授权**）\n\n`git tag` 在本地是可逆的，但 `git push origin tag` **触发 CI** 是不可逆的（CI 会真上传 PyPI / 发 crates.io 真 publish）。所以：\n\n**先用 AskUserQuestion 确认**，比如：\n\n> Phase 3 完成。即将执行：\n> 1. `git tag v1.0.0-rc.8` （本地）\n> 2. `git push origin master` （推 release commit）\n> 3. `git push origin v1.0.0-rc.8` （触发 python-publish 真上传 PyPI；rust-publish 默认 dry-run）\n>\n> 一旦推 tag 就**不能撤回**：PyPI 上的版本号占名后永远不能复用，要修问题只能 bump rc.9。\n> 继续吗？\n\n用户确认后：\n\n```bash\ngit tag \"v${NEW_VER}\"           # SemVer 前缀必须是 v，CI 监听 v*\ngit push origin master           # 先推 commit 再推 tag，避免 CI checkout 不到 commit\ngit push origin \"v${NEW_VER}\"    # 这一行触发 python-publish + rust-publish\n```\n\n### Phase 4.5 — Push 之前最后一道 ratchet：checklist §1 / §5 / §6 是否手核完？\n\nPhase 0 强制读了 `docs/release_checklist.md`。Phase 2 自动跑了 §3/§4/§9。但下面这些**本 skill 不能替你自动核**，push tag 之前必须确认用户已经手动完成：\n\n- [ ] checklist **§1**（代码/文档一致性 —— 3 段 rg 命令均无输出 / `czsc.xxx` 引用都还存在 / 已退役关键字没残留）\n- [ ] checklist **§5**（本地 wheel 构建 + 用 docker `--platform linux/arm64` 或 alpine 镜像验证 ARM/musllinux 加载成功）\n- [ ] checklist **§6 step 1**（TestPyPI 演练 —— breaking 版本强烈建议）\n\n**用 AskUserQuestion 把这三项列出来，明确询问\"全部已完成？是 / 否 / 跳过 + 理由\"**。任一项\"否\" → 拦下，告诉用户先核完再回来；\"跳过\" → 把理由记录在 release commit message 的 trailer 里（`Skipped-checklist-items: §5 (理由)`），future 复盘时能 trace。\n\n### Phase 5 — 监控 CI（直到 publish 成功或失败）\n\n```bash\ngh run list --workflow=python-publish.yml --limit 3\ngh run watch <run-id>     # 跟到 publish-to-pypi job 跑完\ngh run list --workflow=rust-publish.yml --limit 3\n```\n\n需要看到：\n- ✅ `python-publish.yml` 全绿 → PyPI 已发\n- ✅ `rust-publish.yml` 在 tag push 触发下**只是 dry-run**（这是设计；要真 publish crates.io 需手动 workflow_dispatch）\n\n如果 python-publish 失败 → 进入 [Phase 6 重发剧本](#phase-6--重发剧本)。\n\n如果 python-publish 成功 → **告诉用户去手动触发 rust-publish.yml**：\n\n```bash\ngh workflow run rust-publish.yml -f do_publish=true -f start_layer=0 -f end_layer=5\ngh run watch <run-id>\n```\n\n注意 crates.io rate-limit ≈ 1 个新 crate / 10 分钟。第一次发 czsc 系列新 crate 时，常常 layer 0/1 成功、layer 2 后被 rate-limit 拒；用 `start_layer` 参数从失败 layer 续发。\n\n### Phase 5.5 — 发布后验证（checklist §7）\n\n发布成功后**必须按 `docs/release_checklist.md` §7 逐项核完**：\n\n- [ ] PyPI 页面 6 平台 + sdist 齐全\n- [ ] crates.io 6 个 crate 都 OK（czsc-derive / czsc-signal-macros / czsc-core / czsc-ta / czsc-utils / czsc-signals / czsc-trader / czsc）\n- [ ] GitHub Release 包含 wheel + sdist + sigstore 签名\n- [ ] **干净环境冒烟（Python）**：用 `uv venv --seed`（带 pip）创建 tmp venv 后 `pip install czsc==<X.Y.Z>` + `python -c \"import czsc; print(czsc.__version__)\"`。⚠️ 不要在 czsc 仓库根目录跑 —— python path 会优先加载本地 czsc/ 路径而不是 PyPI wheel，给假阳性\n- [ ] **`cargo add czsc@=<X.Y.Z>` 在干净项目 `cargo check` 真编通过**（不只是\"可解析\"！1.0.0-rc.8 实战教训：解析成功但 cargo check 失败）：\n  ```bash\n  TMPD=$(mktemp -d); cd \"$TMPD\"\n  cargo init --name release_smoke --quiet\n  cargo add 'czsc@=<X.Y.Z>' --quiet\n  cargo check 2>&1 | tail -20      # 必须无 error\n  cargo tree -i polars-core 2>&1   # 必须单一版本\n  cd - && rm -rf \"$TMPD\"\n  ```\n  常见两类失败 → 见 [Phase 6 重发剧本](#phase-6--重发剧本) 后两行\n- [ ] 至少跑一个 `docs/examples/` demo 确认无运行时回归\n\n任一项失败 → 立刻在 GitHub Issue 记录、按 [Phase 6 重发剧本](#phase-6--重发剧本) 处理。**不要 yank 已上传的 X.Y.Z 版本本身**——版本号永久占名，必须 bump 下一个 patch/rc 重发。但**误发的混淆版本可以也应该 yank**（如 1.0.0 stable 与 1.0.0-rc.* 并存时 yank stable，避免 SemVer 解析坑）。\n\n### Phase 6 — 重发剧本（出错后）\n\nCHANGELOG 里 rc.2 → rc.3 → rc.4 → rc.5 是连续 4 次重发，写得很细。**主要坑**：\n\n| 症状 | 根因 | 修法 |\n|---|---|---|\n| `python-publish` 在 \"Verify version consistency\" 失败 | SemVer 与 PEP440 不一致（如 `1.0.0-rc.4` ↔ `1.0.0rc4`），workflow 拿字符串硬比 | 这个 bug 已在 rc.5 修；新出现就检查 `packaging.version.canonicalize_version` 翻译是否还在 |\n| build-wheels macOS 卡 1h+ | `macos-13` Intel runner pool 紧张 | 已切到 `macos-latest` cross-compile；不要回退 |\n| aarch64 manylinux2014 编译 `ring` 失败 ARM assembler 报错 | manylinux 镜像 cross-gcc 没传 `__ARM_ARCH` | 已加 `CFLAGS_aarch64_unknown_linux_gnu=\"-D__ARM_ARCH=8\"`；不要回退 |\n| `cargo check` 本地过 CI 挂 | 本地没带 `--all-targets`，test 模块没被 typecheck | Phase 2.1 已强制 `--all-targets`；本地必跑 |\n| `rust-publish` 中途断（rate-limit） | crates.io 新 crate ≈ 1/10min | `gh workflow run rust-publish.yml -f start_layer=N`，N 是失败 layer |\n| **下游 `cargo add czsc@=<X.Y.Z>` 解析到错误 stable 版本**（rc.8 实战） | crates.io 同时有 `1.0.0` stable 与 `1.0.0-rc.*`；workspace.dependencies 写 `version = \"<X.Y.Z>\"` 不带 `=`，cargo 按 SemVer 选 stable（stable > prerelease） | (a) 紧急：`cargo yank --version 1.0.0 <crate>` × 8 个 czsc-* crate，强制下游解析跳过 stable；(b) 永久：把 workspace.dependencies 改 `version = \"=<X.Y.Z>\"` 严格匹配 + bump 下一个 rc 重发 |\n| **下游 `cargo add` 编不出来 — pyo3 / pyo3-stub-gen / numpy 无条件依赖**（rc.8 实战） | czsc-core / czsc-utils / czsc-signals / czsc-trader 把 pyo3 系列列成无条件 dep，纯 Rust 用户也被强制拉 PyO3 工具链 | 4 个 crate Cargo.toml 把 pyo3 系列改 `optional = true` + 加 `[features] python = [\"pyo3\", \"pyo3-stub-gen\", \"numpy\", ...]`；facade czsc 默认 features 为空（纯 Rust）；bump 下一个 rc 重发；本地 `cargo check --no-default-features` 验证纯 Rust 路径 |\n\n**安全 bump 规则**（rc.4 → rc.5 的教训）：\n\n- 如果 wheel **build 成功但 publish step 没跑/失败**（PyPI 上没出现这个版本号）→ 同号修 + force-push tag 是**不允许**的（tag 已推过、CI 已跑过、commit 已上 master）。**只能 bump 下一个 rc 号**，把修复打进新版本。\n- 检查 PyPI 是否已经收到：`pip index versions czsc` 或 https://pypi.org/project/czsc/#history\n- 检查 crates.io：`cargo search czsc-core --limit 1`\n\n## 关键文件参考\n\n| 文件 | 角色 |\n|---|---|\n| **`docs/release_checklist.md`** | **权威清单（必读）**，9 节 / 214 行，本 skill 是它的可执行子集；详见顶部 [Mandatory References](#-mandatory-references必读且必须逐项核完才能进-phase-3) |\n| `Cargo.toml` (workspace root) | 唯一版本源 `[workspace.package].version` |\n| `pyproject.toml` | 必须 `dynamic = [\"version\"]`，禁止硬编码版本（`build.rs` ratchet 拦） |\n| `CHANGELOG.md` | Keep a Changelog 格式，`[Unreleased]` → `[X.Y.Z] — YYYY-MM-DD` |\n| `.github/workflows/python-publish.yml` | tag `v*` 触发，wheels + smoke + PyPI |\n| `.github/workflows/rust-publish.yml` | tag `v*` 触发 dry-run；workflow_dispatch + `do_publish=true` 真发 |\n| `crates/czsc-python/build.rs` | 编译期 ratchet：pyproject.toml 不能硬编码 version |\n| `czsc/__init__.py` | `__version__ = importlib.metadata.version(\"czsc\")` 反查 |\n\n## 触发场景速查\n\n下面这些用户表达**都应该启用本 skill**：\n\n- \"发版 czsc rc.N\"、\"出 rc.N+1\"、\"准备 1.0.0 stable\"\n- \"bump 版本号\"、\"bump 到 X.Y.Z\"\n- \"release\"、\"publish czsc\"、\"推 PyPI\"、\"发 crates.io\"\n- \"CHANGELOG [Unreleased] 落档\"\n- \"tag vX.Y.Z\"、\"打 release tag\"\n- \"上次 publish 失败，重发\"、\"rc 重发\"\n\n## 不要做的事\n\n- ❌ **不要跳过 `docs/release_checklist.md` 的任何一节**——Phase 0 必须 Read 全文，Phase 2 跑 §3+§4+§9 子集，Phase 4.5 显式核 §1+§5+§6 step 1，Phase 5.5 核 §7。任一节\"省略\"都属违规\n- ❌ 不要在 fail 状态下跳过 Phase 2 预检——历史 4 次重发都是这么开始的\n- ❌ 不要替用户跑 `git push origin <tag>`——必须 AskUserQuestion 后再做\n- ❌ 不要为了\"快\"在 rc 期间 force-push 同号 tag——PyPI/crates.io 版本号占名后永久不能复用\n- ❌ 不要在 pyproject.toml 里写死 `version = \"X.Y.Z\"`——会被 build.rs 编译期拦下\n- ❌ 不要只 bump `[workspace.package].version` 而漏掉 `[workspace.dependencies]` 里 czsc-* 的 version 字段——`cargo publish` 会拒绝\n- ❌ 不要在 master 之外的分支打 release tag——CI checkout 的是 tag 指向的 commit，但 master 历史会缺失\n",".claude/skills/czsc-release/references/release_checklist.md":"# Release Checklist —— 权威版本指针\n\n> ⚠️ **不要在此处复制 checklist 内容** —— 会与项目根的权威版本漂移。\n>\n> 完整清单（9 节、214 行）保存在仓库根目录：\n>\n> 👉 **[`docs/release_checklist.md`](../../../../docs/release_checklist.md)**\n>\n> 维护者修改清单时**只改 `docs/release_checklist.md` 这一份**，本指针文件不需要同步更新。\n\n## 为什么本目录不放副本\n\n- **单源不漂移**：复制一份到 references/ 后，每次更新都得改两处；漂移后 LLM 不知道该信哪份。\n- **不用 symlink**：跨 OS（Windows）+ 某些 git 配置下软链接行为不一致；skill 可能被复制/分发到其他工作目录，断链后 silent 失败。\n- **保留 references/ 目录结构**：符合 Anthropic skill convention（references/ 承载参考材料），让 SKILL.md 的引用路径稳定。\n\n## SKILL.md 是怎么用这份清单的\n\n`../SKILL.md` 在 **Phase 0** 和 **Phase 2** 把这份清单作为 **ratchet** 强制引入：\n\n- **Phase 0**：用 `Read` 工具读 `docs/release_checklist.md` 全文（一次性，加载到上下文）。\n- **Phase 2 预检**：把 docs §3 / §4 / §5 / §9 的命令逐条跑完；任何一条 fail → 停。\n- **不许跳**：哪怕\"只是 docs 改动\"也要按 §1 跑代码/文档一致性检查（`czsc.xxx` 引用是否还存在、已退役关键字是否还有残留、文件路径是否还在）—— 历史教训里大量发版事故来自\"docs 改了但忘了 push、或 docs 引用了已删 API 让下游 demo 炸\"。\n\n## 9 节速览（详情看 docs）\n\n1. **代码冻结前**：所有 PR 已合 / CHANGELOG 已更 / 迁移说明已写；**代码 ↔ Markdown 文档一致性硬性检查**（含 3 段命令找漂移）\n2. **版本号**：SemVer 决策树、单一版本源、prerelease 规则\n3. **本地 Rust 验证**：cargo fmt / clippy / test / stub_gen + git diff 校验\n4. **本地 Python 验证**：`pytest --run-slow`、ruff、冒烟 import 链\n5. **本地 Wheel 验证**：含 Linux aarch64 / musllinux 的 docker 验证（CI 不覆盖）\n6. **发布动作**：TestPyPI 演练 → tag push 触发 PyPI 真发 → 手动 dispatch crates.io 真发\n7. **发布后验证**：PyPI / crates.io 页面、GitHub Release、干净环境冒烟\n8. **隐藏缺陷雷达**：按历史踩坑频度排序的 10 项风险表\n9. **一键自检脚本**：把 §3+§4+§5 串成可跑的 bash 一脚本\n",".claude/skills/czsc-write-signal-function/SKILL.md":"---\nname: czsc-write-signal-function\ndescription: 为 rs_czsc 编写或重构 Rust 信号函数（bar/tas/cxt/pos）并接入事件驱动链路（`#[signal]` 自动注册、SignalConfig、Event/Position 匹配）的工作流。遇到“新增信号函数”“修改信号模板”“注册信号函数”“排查信号不触发”时使用。\n---\n\n# CZSC Signal Authoring\n\n## Overview\n\n用这个技能在 `rs_czsc` 中稳定完成信号函数开发：\n1. 判断信号类型（K线级 / Trader级）\n2. 编写函数并保持 `Signal` 7段格式\n3. 注册到正确注册表\n4. 用 `SignalConfig` 和测试验证是否能触发 `Event -> Position`\n\n先读：\n- `references/event-driven-signal-pipeline.md`\n- `references/signal-function-patterns.md`\n\n需要快速起草函数时，先运行：\n- `scripts/new_signal_stub.py`\n\n## Decision Tree\n\n1. 需要访问仓位（`Position`）或策略状态吗？\n- 是：写 Trader 级信号（`pos.rs` 风格），用 `#[signal(category = \"trader\", ...)]` 自动注册。\n- 否：写 K线级信号（`bar/tas/cxt` 风格），用 `#[signal(category = \"kline\", ...)]` 自动注册。\n\n2. 需要技术指标缓存吗？\n- 是：使用 `TaCache`，优先走 `update_*_cache`。\n- 否：保留 `_cache` 参数但不使用。\n\n3. 需要多个输出信号吗？\n- 是：返回 `Vec<Signal>`，每个信号都保持 7 段格式。\n- 否：返回单元素 `Vec`。\n\n## Workflow\n\n1. 明确输入输出\n- 明确函数输入参数（`params`）和默认值。\n- 明确 `k1/k2/k3` 模板和 `v1/v2/v3` 语义。\n- 明确“数据不足时”返回策略：通常返回 `vec![]` 或 `其他` 信号。\n\n2. 实现函数\n- K线级函数签名：`fn(&CZSC, &ParamView, &mut TaCache) -> Vec<Signal>`。\n- Trader级函数签名：`fn(&dyn TraderState, &ParamView) -> Vec<Signal>`。\n- 参数解析优先复用工具：`get_usize_param` / `get_str_param`。\n- 必须写详细注释（硬性格式，不可省略小节）：\n  - 标题行：`/// <func_name>：<一句话功能>`\n  - `///`\n  - `/// 参数模板：\\`\"...\"\\``\n  - `///`\n  - `/// 信号逻辑：`\n  - `/// 1. ...`\n  - `/// 2. ...`\n  - `/// 3. ...`\n  - `///`\n  - `/// 信号列表示例：`\n  - `/// - Signal('...')`\n  - `/// - Signal('...')`\n  - `///`\n  - `/// 参数说明：`\n  - `/// - <param>: <含义与默认值>`\n  - `/// - <param>: <含义与默认值>`\n  - 与 Python 或历史版本对齐时，必须补一行：`/// 对齐说明：...`\n- 关键分支注释：说明为什么这么判定，而不是只写“做了什么”。\n- 用 `format!` 拼出完整字符串：`k1_k2_k3_v1_v2_v3_score`。\n- 用 `Signal::from_str(...)` 或 `parse::<Signal>()` 做最终构造。\n\n3. 接入注册表\n- 在函数上添加 `#[signal(...)]`，由 `inventory` 自动收集。\n- 注册名与函数名保持一一对应（注意 `_V` 与 `_v` 大小写风格）。\n- 在 `#[signal(...)]` 中给出 `template`，确保 `SignalConfig` 反解析和人类阅读一致。\n\n4. 接入调用侧\n- K线级：通过 `SignalConfig { name, freq: Some(...), params }` 在 `CzscSignals::update_signals` 中执行。\n- Trader级：通过 `SignalConfig { name, freq: None, params }` 在 `CzscTrader::update` 的 Trader 信号分支执行。\n\n5. 验证\n- 至少验证：\n  - 函数在样本上可运行，不 panic。\n  - 输出信号可被 `Signal` 正常解析（7段、score 0~100）。\n  - 注册后能被 `SignalConfig.name` 命中。\n  - 若用于交易事件，`Event.matches_signals*` 能按预期触发。\n  - 注释完整：他人仅看注释可理解参数、边界、输出语义和关键判定。\n- 优先补充/运行相关测试：`signal_compare_tests`、`trader_tests` 或新增针对性测试。\n- 注释格式校验（提交前必须人工检查）：\n  - 每个新/改信号函数都包含 `参数模板/信号逻辑/信号列表示例/参数说明` 四段。\n  - `信号列表示例` 至少 2 条，且与当前函数输出字段一致（`k1_k2_k3_v1_v2_v3_score`）。\n\n## Guardrails\n\n- 不要输出非 7 段信号；否则会在 `Signal::from_str` 失败。\n- 不要忽略大小写差异；注册表键是精确匹配。\n- 不要在数据长度不足时硬算；先做边界检查。\n- 不要绕过 `TaCache` 重复全量计算重指标。\n- 不要在函数里偷偷改全局状态；保持纯计算风格（Trader级仅读取状态）。\n- 不要写空洞注释（如“计算信号”）；注释要解释判定依据和业务语义。\n\n## Resources\n\n- 架构与触发链路：`references/event-driven-signal-pipeline.md`\n- 函数模板与常见坑：`references/signal-function-patterns.md`\n- 骨架生成器：`scripts/new_signal_stub.py`\n",".claude/skills/czsc-write-signal-function/agents/openai.yaml":"interface:\n  display_name: \"CZSC Signal Writer\"\n  short_description: \"Write Rust CZSC signal functions and wire registries\"\n  default_prompt: \"Use $czsc-write-signal-function to implement and register a new CZSC signal function.\"\n",".claude/skills/czsc-write-signal-function/references/event-driven-signal-pipeline.md":"# Event-Driven Signal Pipeline (rs_czsc)\n\n## 1. 总体调用链\n\n1. `CzscTrader::update` 接收一根 `RawBar`\n2. `CzscSignals::update_signals` 计算本根所有 K线级信号\n3. `CzscTrader::update` 额外执行 Trader 级信号（pos 系列）\n4. 合并信号后调用每个 `Position::update`\n5. `Position` 按 `opens + exits` 顺序匹配 `Event`\n6. `Event` 内部通过 `signals_not -> signals_all -> signals_any` 判定\n7. 匹配后产生命令（`LO/LE/SO/SE/...`）并更新持仓记录\n\n## 2. 关键文件\n\n- `crates/czsc-trader/src/trader.rs`\n  - 交易主入口；组织信号计算与仓位更新\n- `crates/czsc-trader/src/signals/czsc_signals.rs`\n  - K线级信号执行器；维护 `s` 与 `sigs`\n- `crates/czsc-signals/src/registry.rs`\n  - 汇总 `inventory` 自动收集的 `SignalDescriptor` 到运行时注册表\n- `crates/czsc-signals/src/types.rs`\n  - 信号函数签名类型定义\n- `crates/czsc-core/src/objects/signal.rs`\n  - `Signal` 7段格式、`is_match`\n- `crates/czsc-core/src/objects/event.rs`\n  - `Event` 匹配逻辑\n- `crates/czsc-core/src/objects/position.rs`\n  - `Position::update` 执行开平仓规则\n- `crates/czsc-core/src/objects/state.rs`\n  - `TraderState` trait（给 Trader 级信号读状态）\n\n## 3. 两类信号函数\n\n### K线级信号（bar / tas / cxt）\n\n- 签名：\n`fn(&CZSC, &ParamView, &mut TaCache) -> Vec<Signal>`\n- 注册方式：函数上 `#[signal(category = \"kline\", ...)]` 自动收集\n- 调用路径：`CzscSignals::update_signals`\n- 适用场景：仅依赖某个周期的 K 线结构和指标\n\n### Trader级信号（pos）\n\n- 签名：\n`fn(&dyn TraderState, &ParamView) -> Vec<Signal>`\n- 注册方式：函数上 `#[signal(category = \"trader\", ...)]` 自动收集\n- 调用路径：`CzscTrader::update` 中 `freq.is_none()` 分支\n- 适用场景：需要 `Position` + `CZSC` 联合状态\n\n## 4. 信号字符串规则\n\n`Signal` 必须满足：\n- 格式：`k1_k2_k3_v1_v2_v3_score`\n- 总段数：7 段\n- `score`：0~100\n\n`CzscSignals` 会把它拆成：\n- key：`k1_k2_k3`\n- value：`v1_v2_v3_score`\n\n`Event` 匹配时用 `Signal::is_match`：\n- `score >= 事件要求score`\n- `v1/v2/v3` 精确匹配或事件侧为 `任意`\n\n## 5. 开发时最常见断点\n\n- 注册表 name 与 `SignalConfig.name` 不一致（大小写、`_V`/`_v`）\n- 输出不是 7 段，导致 `Signal::from_str` 失败\n- `freq` 设置错误：\n  - K线级应为 `Some(freq)`\n  - Trader级应为 `None`\n- 数据不足未做边界检查，触发索引错误或无意义信号\n\n## 6. 最小联调路径\n\n1. 在 `czsc-signals` 实现函数并添加 `#[signal(...)]` 标注\n2. 构造 `SignalConfig`\n3. 用 `CzscTrader::update` 喂历史 bars\n4. 检查：\n   - `trader.signals.s` 中是否有目标 key\n   - `trader.signals.sigs` 中是否出现目标 `Signal`\n   - `position.operates` 是否按预期变化\n",".claude/skills/czsc-write-signal-function/references/signal-function-patterns.md":"# Signal Function Patterns\n\n## 0. 注释规范（必须）\n\n每个新信号函数都必须包含以下注释层级：\n\n- 函数文档注释（`///`）至少写清 4 件事：\n  - 信号在策略中的业务含义\n  - 参数模板字符串（`param_template`）\n  - 核心判定逻辑（触发条件）\n  - 边界行为（数据不足返回什么）\n- 关键分支前写“原因注释”，解释判定依据和设计意图。\n- 与 Python/旧版行为对齐时，标注“对齐对象”和“为何这样对齐”。\n\n## 1. K线级函数模板（bar/tas/cxt）\n\n```rust\nuse crate::params::ParamView;\nuse crate::types::TaCache;\nuse crate::utils::sig::{get_str_param, get_usize_param};\nuse czsc_core::analyze::CZSC;\nuse czsc_core::objects::signal::Signal;\nuse czsc_signal_macros::signal;\n\n/// xxx_v240101: 示例信号\n///\n/// 参数模板：\"{freq}_D{di}{key}_示例V240101\"\n/// 信号语义：当满足示例条件时输出目标状态，否则输出“其他”。\n/// 边界行为：当 bars 不足以支持 di 回看时，返回空信号。\n#[signal(\n    category = \"kline\",\n    name = \"xxx_V240101\",\n    template = \"{freq}_D{di}{key}_示例V240101\",\n    opcode = \"XxxV240101\",\n    param_kind = \"XxxV240101\"\n)]\npub fn xxx_v240101(\n    czsc: &CZSC,\n    params: &ParamView,\n    cache: &mut TaCache,\n) -> Vec<Signal> {\n    let di = get_usize_param(params, \"di\", 1);\n    let key = get_str_param(params, \"key\", \"DEFAULT\");\n\n    // 1) 边界检查：数据不足时不输出错误信号，直接返回空结果。\n    if czsc.bars_raw.len() < di + 2 {\n        return vec![];\n    }\n\n    // 2) 计算 k1/k2/k3 与 v1/v2/v3：\n    // k1/k2/k3 用于事件匹配 key，v1/v2/v3 承载状态值语义。\n    let k1 = czsc.freq.to_string();\n    let k2 = format!(\"D{}{}\", di, key);\n    let k3 = \"示例V240101\";\n    let v1 = \"其他\";\n    let v2 = \"任意\";\n    let v3 = \"任意\";\n\n    // 3) 严格 7 段\n    let sig_str = format!(\"{}_{}_{}_{}_{}_{}_0\", k1, k2, k3, v1, v2, v3);\n    Signal::from_str(&sig_str).map_or_else(|_| vec![], |s| vec![s])\n}\n```\n\n## 2. Trader级函数模板（pos）\n\n```rust\nuse crate::params::ParamView;\nuse crate::utils::sig::get_str_param;\nuse czsc_core::objects::signal::Signal;\nuse czsc_core::objects::state::TraderState;\nuse czsc_signal_macros::signal;\nuse std::str::FromStr;\n\n/// pos_xxx_v240101: 示例 Trader 级信号\n///\n/// 参数模板：\"{pos_name}_示例V240101\"\n/// 信号语义：根据仓位是否存在输出“有效/其他”。\n/// 边界行为：缺少 pos_name 或查询不到仓位时输出“其他”。\n#[signal(\n    category = \"trader\",\n    name = \"pos_xxx_V240101\",\n    template = \"{pos_name}_示例V240101\",\n    opcode = \"PosXxxV240101\",\n    param_kind = \"PosXxxV240101\"\n)]\npub fn pos_xxx_v240101(cat: &dyn TraderState, params: &ParamView) -> Vec<Signal> {\n    let pos_name = get_str_param(params, \"pos_name\", \"\").to_string();\n\n    let k1 = format!(\"{}_状态\", pos_name);\n    let k2 = \"其他\";\n    let k3 = \"示例V240101\";\n\n    // Trader 级信号必须解释“为何读取 trader 状态”，避免后续误改为纯 K线逻辑。\n    let v1 = if cat.get_position(&pos_name).is_some() {\n        \"有效\"\n    } else {\n        \"其他\"\n    };\n\n    let sig_str = format!(\"{}_{}_{}_{}_任意_任意_0\", k1, k2, k3, v1);\n    Signal::from_str(&sig_str).map_or_else(|_| vec![], |s| vec![s])\n}\n```\n\n## 3. 注册模板\n\n通过 `#[signal(...)]` 自动注册，无需手写 `registry.rs` 列表。\n关键字段：\n\n```rust\n#[signal(\n    category = \"kline|trader\",\n    name = \"..._Vxxxxxx\",\n    template = \"...\",\n    opcode = \"...\",\n    param_kind = \"...\"\n)]\n```\n\n## 4. 参数与模板约束\n\n- `params` key 名与模板占位符保持一致。\n- 模板中 `freq` 表示周期；Trader 级常常不用 `freq` 字段做路由，依赖 `freq1` 之类业务参数。\n- 维护 `k2/k3` 语义稳定，避免同名逻辑漂移。\n\n## 5. 事件触发兼容性检查\n\n新增信号用于事件时，先写出事件侧信号字符串，再倒推函数输出：\n\n1. 事件侧 `Signal` 是否 7 段且 score 合法\n2. 事件侧 `k1_k2_k3` 是否与函数输出完全一致\n3. 事件侧 `v1/v2/v3` 是否允许 `任意`\n4. 事件侧 score 是否不高于函数输出 score\n\n## 6. 常见坑\n\n- 在 `SignalConfig` 里用错注册名（尤其 `_V` 大写）\n- `freq: None` / `Some` 配置反了，导致函数完全不被调度\n- 直接 `unwrap` 导致边界数据 panic；优先 `map_or_else` 或早返回\n- 函数输出多信号时 key 冲突未预期，后写会覆盖 `s` 字典同 key 值\n",".claude/skills/signal-functions/SKILL.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2FSKILL.md -->",".claude/skills/signal-functions/references/signals-ang.md":"# ang 模块信号索引\n\n> 源码: `crates/czsc-signals/src/ang.rs`\n> 共 10 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `adtm_up_dw_line_V230603` | `\"{freq}_D{di}N{n}M{m}TH{th}_ADTMV230603` | ADTM 能量异动多空信号 | [详细文档](signals/adtm_up_dw_line_V230603.md) |\n| `amv_up_dw_line_V230603` | `\"{freq}_D{di}N{n}M{m}_AMV能量V230603` | AMV 能量多空信号 | [详细文档](signals/amv_up_dw_line_V230603.md) |\n| `asi_up_dw_line_V230603` | `\"{freq}_D{di}N{n}P{p}_ASI多空V230603` | ASI 多空信号 | [详细文档](signals/asi_up_dw_line_V230603.md) |\n| `bias_up_dw_line_V230618` | `\"{freq}_D{di}N{n}M{m}P{p}TH1{th1}TH2{th2}TH3{th3}_BIAS乖离率V230618` | BIAS 三周期共振信号 | [详细文档](signals/bias_up_dw_line_V230618.md) |\n| `cmo_up_dw_line_V230605` | `\"{freq}_D{di}N{n}M{m}_CMO能量V230605` | CMO 能量阈值信号 | [详细文档](signals/cmo_up_dw_line_V230605.md) |\n| `dema_up_dw_line_V230605` | `\"{freq}_D{di}N{n}_DEMA短线趋势V230605` | DEMA 短线趋势信号 | [详细文档](signals/dema_up_dw_line_V230605.md) |\n| `demakder_up_dw_line_V230605` | `\"{freq}_D{di}N{n}TH{th}TL{tl}_DEMAKER价格趋势V230605` | DEMAKER 价格趋势信号 | [详细文档](signals/demakder_up_dw_line_V230605.md) |\n| `emv_up_dw_line_V230605` | `\"{freq}_D{di}_EMV简易波动V230605` | EMV 简易波动多空信号 | [详细文档](signals/emv_up_dw_line_V230605.md) |\n| `er_up_dw_line_V230604` | `\"{freq}_D{di}W{w}N{n}_ER价格动量V230604` | ER 价格动量分层信号 | [详细文档](signals/er_up_dw_line_V230604.md) |\n| `skdj_up_dw_line_V230611` | `\"{freq}_D{di}N{n}M{m}UP{up}DW{dw}_SKDJ随机波动V230611` | SKDJ 随机波动信号 | [详细文档](signals/skdj_up_dw_line_V230611.md) |\n",".claude/skills/signal-functions/references/signals-bar.md":"# bar 模块信号索引\n\n> 源码: `crates/czsc-signals/src/bar.rs`\n> 共 46 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `bar_accelerate_V221110` | `\"{freq}_D{di}W{window}_加速V221110` | 区间加速走势判定 | [详细文档](signals/bar_accelerate_V221110.md) |\n| `bar_accelerate_V221118` | `\"{freq}_D{di}W{window}#{ma_type}#{timeperiod}_加速V221118` | 均线偏离加速判定 | [详细文档](signals/bar_accelerate_V221118.md) |\n| `bar_accelerate_V240428` | `\"{freq}_D{di}W{w}T{t}_加速V240428` | 滚动差分加速判定 | [详细文档](signals/bar_accelerate_V240428.md) |\n| `bar_amount_acc_V230214` | `\"{freq}_D{di}N{n}_累计超{t}千万` | 区间累计成交额信号 | [详细文档](signals/bar_amount_acc_V230214.md) |\n| `bar_big_solid_V230215` | `\"{freq}_D{di}N{n}_MIDV230215` | 窗口最大实体中位多空信号 | [详细文档](signals/bar_big_solid_V230215.md) |\n| `bar_bpm_V230227` | `\"{freq}_D{di}N{n}T{th}_绝对动量V230227` | 绝对动量分层 | [详细文档](signals/bar_bpm_V230227.md) |\n| `bar_break_V240428` | `\"{freq}_D{di}W{w}_事件V240428` | 收盘极值突破 | [详细文档](signals/bar_break_V240428.md) |\n| `bar_channel_V230508` | `\"{freq}_D{di}M{m}_通道V230507` | 窄幅通道方向判定 | [详细文档](signals/bar_channel_V230508.md) |\n| `bar_classify_V240606` | `\"{freq}_D{di}收盘位置_分类V240606` | 单根K线收盘位置分类 | [详细文档](signals/bar_classify_V240606.md) |\n| `bar_classify_V240607` | `\"{freq}_D{di}K2收盘位置_分类V240607` | 两根K线收盘位置分类 | [详细文档](signals/bar_classify_V240607.md) |\n| `bar_decision_V240608` | `\"{freq}_W{w}N{n}Q{q}放量_决策区域V240608` | 放量反向决策区 | [详细文档](signals/bar_decision_V240608.md) |\n| `bar_decision_V240616` | `\"{freq}_W{w}N{n}强弱_决策区域V240616` | 新高新低后的强弱决策 | [详细文档](signals/bar_decision_V240616.md) |\n| `bar_dual_thrust_V230403` | `\"{freq}_D{di}通道突破#{N}#{K1}#{K2}_BS辅助V230403` | Dual Thrust 通道突破 | [详细文档](signals/bar_dual_thrust_V230403.md) |\n| `bar_eight_V230702` | `\"{freq}_D{di}#8K_走势分类V230702` | 8K 走势分类 | [详细文档](signals/bar_eight_V230702.md) |\n| `bar_end_V221211` | `\"{freq}_{freq1}结束_BS辅助221211` | 判断大周期K线是否闭合 | [详细文档](signals/bar_end_V221211.md) |\n| `bar_fake_break_V230204` | `\"{freq}_D{di}N{n}M{m}_假突破V230204` | 区间假突破判定 | [详细文档](signals/bar_fake_break_V230204.md) |\n| `bar_fang_liang_break_V221216` | `\"{freq}_D{di}TH{th}#{ma_type}#{timeperiod}_突破V221216` | 放量突破与缩量回踩 | [详细文档](signals/bar_fang_liang_break_V221216.md) |\n| `bar_limit_down_V230525` | `\"{freq}_跌停后无下影线长实体阳线_短线V230525` | 跌停后反包阳线 | [详细文档](signals/bar_limit_down_V230525.md) |\n| `bar_mean_amount_V221112` | `\"{freq}_D{di}K{n}B均额_{th1}至{th2}千万` | 区间均额分类信号 | [详细文档](signals/bar_mean_amount_V221112.md) |\n| `bar_operate_span_V221111` | `\"{freq}_T{t1}#{t2}_时间区间V221111` | 日内时间区间过滤 | [详细文档](signals/bar_operate_span_V221111.md) |\n| `bar_plr_V240427` | `\"{freq}_D{di}W{w}T{t}M{m}_盈亏比V240427` | 盈亏比约束 | [详细文档](signals/bar_plr_V240427.md) |\n| `bar_polyfit_V240428` | `\"{freq}_D{di}W{w}_分类V240428` | 一阶二阶拟合分类 | [详细文档](signals/bar_polyfit_V240428.md) |\n| `bar_r_breaker_V230326` | `\"{freq}_RBreaker_BS辅助V230326` | RBreaker 价格位判定 | [详细文档](signals/bar_r_breaker_V230326.md) |\n| `bar_reversal_V230227` | `\"{freq}_D{di}A{avg_bp}_反转V230227` | 末根反转迹象判定 | [详细文档](signals/bar_reversal_V230227.md) |\n| `bar_section_momentum_V221112` | `\"{freq}_D{di}K{n}B_阈值{th}BPV221112` | 区间动量强弱与波动 | [详细文档](signals/bar_section_momentum_V221112.md) |\n| `bar_shuang_fei_V230507` | `\"{freq}_D{di}双飞_短线V230507` | 双飞涨停形态 | [详细文档](signals/bar_shuang_fei_V230507.md) |\n| `bar_single_V230214` | `\"{freq}_D{di}T{t}_状态V230214` | 单K状态信号 | [详细文档](signals/bar_single_V230214.md) |\n| `bar_single_V230506` | `\"{freq}_D{di}单K趋势N{n}_BS辅助V230506` | 单K趋势分层信号 | [详细文档](signals/bar_single_V230506.md) |\n| `bar_td9_V240616` | `\"{freq}_神奇九转N{n}_BS辅助V240616` | 神奇九转计数 | [详细文档](signals/bar_td9_V240616.md) |\n| `bar_time_V230327` | `\"{freq}_日内时间_分段V230327` | 日内时间分段信号 | [详细文档](signals/bar_time_V230327.md) |\n| `bar_tnr_V230629` | `\"{freq}_D{di}TNR{timeperiod}_趋势V230629` | TNR 分层信号 | [详细文档](signals/bar_tnr_V230629.md) |\n| `bar_tnr_V230630` | `\"{freq}_D{di}TNR{timeperiod}K{k}_趋势V230630` | TNR 噪音变化判定 | [详细文档](signals/bar_tnr_V230630.md) |\n| `bar_trend_V240209` | `\"{freq}_D{di}N{N}趋势跟踪_BS辅助V240209` | 趋势跟踪结构判定 | [详细文档](signals/bar_trend_V240209.md) |\n| `bar_triple_V230506` | `\"{freq}_D{di}三K加速_裸K形态V230506` | 三K加速形态信号 | [详细文档](signals/bar_triple_V230506.md) |\n| `bar_vol_bs1_V230224` | `\"{freq}_D{di}N{n}量价_BS1辅助V230224` | 量价高低点辅助 | [详细文档](signals/bar_vol_bs1_V230224.md) |\n| `bar_vol_grow_V221112` | `\"{freq}_D{di}K{n}B_放量V221112` | 成交量放大信号 | [详细文档](signals/bar_vol_grow_V221112.md) |\n| `bar_volatility_V241013` | `\"{freq}_波动率分层W{w}N{n}_完全分类V241013` | 波动率三层分类 | [详细文档](signals/bar_volatility_V241013.md) |\n| `bar_weekday_V230328` | `\"{freq}_周内时间_分段V230328` | 周内时间分段信号 | [详细文档](signals/bar_weekday_V230328.md) |\n| `bar_window_ps_V230731` | `\"{freq}_W{w}M{m}N{n}L{l}_支撑压力位V230731` | 支撑压力位分位特征 | [详细文档](signals/bar_window_ps_V230731.md) |\n| `bar_window_ps_V230801` | `\"{freq}_N{n}W{w}_支撑压力位V230801` | 支撑压力位窗口极值 | [详细文档](signals/bar_window_ps_V230801.md) |\n| `bar_window_std_V230731` | `\"{freq}_D{di}W{w}M{m}N{n}_窗口波动V230731` | 窗口波动分层特征 | [详细文档](signals/bar_window_std_V230731.md) |\n| `bar_zdf_V221203` | `\"{freq}_D{di}{mode}_{t1}至{t2}` | 单根涨跌幅区间信号 | [详细文档](signals/bar_zdf_V221203.md) |\n| `bar_zdt_V230331` | `\"{freq}_D{di}_涨跌停V230331` | 涨跌停识别信号 | [详细文档](signals/bar_zdt_V230331.md) |\n| `bar_zfzd_V241013` | `\"{freq}_窄幅震荡N{n}_形态V241013` | 窄幅震荡（全重叠） | [详细文档](signals/bar_zfzd_V241013.md) |\n| `bar_zfzd_V241014` | `\"{freq}_窄幅震荡N{n}_形态V241014` | 窄幅震荡（最大实体重叠） | [详细文档](signals/bar_zfzd_V241014.md) |\n| `bar_zt_count_V230504` | `\"{freq}_D{di}W{window}涨停计数_裸K形态V230504` | 窗口涨停计数 | [详细文档](signals/bar_zt_count_V230504.md) |\n",".claude/skills/signal-functions/references/signals-byi.md":"# byi 模块信号索引\n\n> 源码: `crates/czsc-signals/src/byi.rs`\n> 共 5 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `byi_bi_end_V230106` | `\"{freq}_D0停顿分型_BE辅助V230106` | 分型停顿辅助笔结束信号 | [详细文档](signals/byi_bi_end_V230106.md) |\n| `byi_bi_end_V230107` | `\"{freq}_D0验证分型_BE辅助V230107` | 验证分型辅助笔结束信号 | [详细文档](signals/byi_bi_end_V230107.md) |\n| `byi_fx_num_V230628` | `\"{freq}_D{di}笔分型数大于{num}_BE辅助V230628` | 前笔分型数量约束信号 | [详细文档](signals/byi_fx_num_V230628.md) |\n| `byi_second_bs_V230324` | `\"{freq}_D{di}MACD{fastperiod}#{slowperiod}#{signalperiod}回抽零轴_BS2辅助V230324` | 二类买卖点辅助信号 | [详细文档](signals/byi_second_bs_V230324.md) |\n| `byi_symmetry_zs_V221107` | `\"{freq}_D{di}B_对称中枢` | 对称中枢识别信号 | [详细文档](signals/byi_symmetry_zs_V221107.md) |\n",".claude/skills/signal-functions/references/signals-cat.md":"# cat 模块信号索引\n\n> 源码: `crates/czsc-signals/src/cat.rs`\n> 共 2 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `cat_macd_V230518` | `\"{freq1}#{freq2}_MACD交叉_联立V230518` | 高低级别 MACD 交叉联立信号 | [详细文档](signals/cat_macd_V230518.md) |\n| `cat_macd_V230520` | `\"{freq1}#{freq2}_MACD交叉_联立V230520` | 高低级别 MACD 缩柱联立信号 | [详细文档](signals/cat_macd_V230520.md) |\n",".claude/skills/signal-functions/references/signals-clv.md":"# clv 模块信号索引\n\n> 源码: `crates/czsc-signals/src/clv.rs`\n> 共 1 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `clv_up_dw_line_V230605` | `\"{freq}_D{di}N{n}_CLV多空V230605` | CLV 多空信号 | [详细文档](signals/clv_up_dw_line_V230605.md) |\n",".claude/skills/signal-functions/references/signals-coo.md":"# coo 模块信号索引\n\n> 源码: `crates/czsc-signals/src/coo.rs`\n> 共 5 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `coo_cci_V230323` | `\"{freq}_D{di}CCI{n}#{ma_type}#{m}_BS辅助V230323` | CCI 结合均线的多空与方向信号 | [详细文档](signals/coo_cci_V230323.md) |\n| `coo_kdj_V230322` | `\"{freq}_D{di}KDJ{fastk_period}#{slowk_period}#{slowd_period}#{ma_type}#{n}_BS辅助V230322` | 均线与 KDJ 配合多空信号 | [详细文档](signals/coo_kdj_V230322.md) |\n| `coo_sar_V230325` | `\"{freq}_D{di}N{n}SAR_BS辅助V230325` | SAR 与区间极值配合信号 | [详细文档](signals/coo_sar_V230325.md) |\n| `coo_td_V221110` | `\"{freq}_D{di}K_TD` | TD 神奇九转信号（旧版模板） | [详细文档](signals/coo_td_V221110.md) |\n| `coo_td_V221111` | `\"{freq}_D{di}TD_BS辅助V221111` | TD 神奇九转信号 | [详细文档](signals/coo_td_V221111.md) |\n",".claude/skills/signal-functions/references/signals-cvolp.md":"# cvolp 模块信号索引\n\n> 源码: `crates/czsc-signals/src/cvolp.rs`\n> 共 1 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `cvolp_up_dw_line_V230612` | `\"{freq}_D{di}N{n}M{m}UP{up}DW{dw}_CVOLP动量变化率V230612` | CVOLP 动量变化率信号 | [详细文档](signals/cvolp_up_dw_line_V230612.md) |\n",".claude/skills/signal-functions/references/signals-cxt.md":"# cxt 模块信号索引\n\n> 源码: `crates/czsc-signals/src/cxt.rs`\n> 共 41 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `cxt_bi_base_V230228` | `\"{freq}_D0BL{bi_init_length}_V230228` | 笔基础状态信号 | [详细文档](signals/cxt_bi_base_V230228.md) |\n| `cxt_bi_end_V230104` | `\"{freq}_D0{ma_type}#{timeperiod}T{th}_BE辅助V230104` | 单均线辅助判断笔结束 | [详细文档](signals/cxt_bi_end_V230104.md) |\n| `cxt_bi_end_V230105` | `\"{freq}_D0{ma_type}#{timeperiod}T{th}_BE辅助V230105` | K线形态+均线辅助判断笔结束 | [详细文档](signals/cxt_bi_end_V230105.md) |\n| `cxt_bi_end_V230222` | `\"{freq}_D1MO{max_overlap}_BE辅助V230222` | 未完成笔分型新高新低次数 | [详细文档](signals/cxt_bi_end_V230222.md) |\n| `cxt_bi_end_V230224` | `\"{freq}_D1_BE辅助V230224` | 量价配合笔结束辅助 | [详细文档](signals/cxt_bi_end_V230224.md) |\n| `cxt_bi_end_V230312` | `\"{freq}_D0MACD{fastperiod}#{slowperiod}#{signalperiod}_BE辅助V230312` | MACD辅助判断笔结束 | [详细文档](signals/cxt_bi_end_V230312.md) |\n| `cxt_bi_end_V230320` | `\"{freq}_D0质数窗口MO{max_overlap}_BE辅助V230320` | 质数窗口笔结束辅助 | [详细文档](signals/cxt_bi_end_V230320.md) |\n| `cxt_bi_end_V230322` | `\"{freq}_D0分型配合{ma_type}#{timeperiod}_BE辅助V230322` | 分型配合均线的笔结束辅助 | [详细文档](signals/cxt_bi_end_V230322.md) |\n| `cxt_bi_end_V230324` | `\"{freq}_D0{ma_type}#{timeperiod}均线突破_BE辅助V230324` | 笔结束分型均线突破 | [详细文档](signals/cxt_bi_end_V230324.md) |\n| `cxt_bi_end_V230618` | `\"{freq}_D{di}MO{max_overlap}_BE辅助V230618` | 笔结束小中枢辅助 | [详细文档](signals/cxt_bi_end_V230618.md) |\n| `cxt_bi_end_V230815` | `\"{freq}_快速突破_BE辅助V230815` | 快速突破反向笔 | [详细文档](signals/cxt_bi_end_V230815.md) |\n| `cxt_bi_status_V230101` | `\"{freq}_D1_表里关系V230101` | 笔表里关系信号 | [详细文档](signals/cxt_bi_status_V230101.md) |\n| `cxt_bi_status_V230102` | `\"{freq}_D1_表里关系V230102` | 笔表里关系信号 | [详细文档](signals/cxt_bi_status_V230102.md) |\n| `cxt_bi_stop_V230815` | `\"{freq}_距离{th}BP_止损V230815` | 笔止损距离状态 | [详细文档](signals/cxt_bi_stop_V230815.md) |\n| `cxt_bi_trend_V230824` | `\"{freq}_D{di}N{n}TH{th}_形态V230824` | N笔形态判断 | [详细文档](signals/cxt_bi_trend_V230824.md) |\n| `cxt_bi_trend_V230913` | `\"{freq}_D{di}N{n}笔趋势_高低点辅助判断V230913` | 笔趋势高低点回归信号 | [详细文档](signals/cxt_bi_trend_V230913.md) |\n| `cxt_bi_zdf_V230601` | `\"{freq}_D{di}N{n}_分层V230601` | BI涨跌幅分层 | [详细文档](signals/cxt_bi_zdf_V230601.md) |\n| `cxt_bs_V240526` | `\"{freq}_趋势跟随_BS辅助V240526` | 趋势跟随 BS 辅助 | [详细文档](signals/cxt_bs_V240526.md) |\n| `cxt_bs_V240527` | `\"{freq}_趋势跟随_BS辅助V240527` | 未完成笔上的趋势跟随 BS 辅助 | [详细文档](signals/cxt_bs_V240527.md) |\n| `cxt_decision_V240526` | `\"{freq}_分型区域N{n}_决策区域V240526` | 分型区域决策 | [详细文档](signals/cxt_decision_V240526.md) |\n| `cxt_decision_V240612` | `\"{freq}_W{w}N{n}高低点_决策区域V240612` | 高低点N档决策区间 | [详细文档](signals/cxt_decision_V240612.md) |\n| `cxt_decision_V240613` | `\"{freq}_放量笔N{n}BS2_决策区域V240613` | 放量笔N4BS2决策区 | [详细文档](signals/cxt_decision_V240613.md) |\n| `cxt_decision_V240614` | `\"{freq}_放量笔N{n}_决策区域V240614` | 放量新高/新低决策区 | [详细文档](signals/cxt_decision_V240614.md) |\n| `cxt_double_zs_V230311` | `\"{freq}_D{di}双中枢_BS1辅助V230311` | 双中枢 BS1 辅助 | [详细文档](signals/cxt_double_zs_V230311.md) |\n| `cxt_eleven_bi_V230622` | `\"{freq}_D{di}十一笔_形态V230622` | 十一笔形态分类信号 | [详细文档](signals/cxt_eleven_bi_V230622.md) |\n| `cxt_first_buy_V221126` | `\"{freq}_D{di}B_BUY1V221126` | 一买信号 | [详细文档](signals/cxt_first_buy_V221126.md) |\n| `cxt_first_sell_V221126` | `\"{freq}_D{di}B_SELL1V221126` | 一卖信号 | [详细文档](signals/cxt_first_sell_V221126.md) |\n| `cxt_five_bi_V230619` | `\"{freq}_D{di}五笔_形态V230619` | 五笔形态分类信号 | [详细文档](signals/cxt_five_bi_V230619.md) |\n| `cxt_fx_power_V221107` | `\"{freq}_D{di}F_分型强弱V221107` | 倒数分型强弱 | [详细文档](signals/cxt_fx_power_V221107.md) |\n| `cxt_nine_bi_V230621` | `\"{freq}_D{di}九笔_形态V230621` | 九笔形态分类信号 | [详细文档](signals/cxt_nine_bi_V230621.md) |\n| `cxt_overlap_V240526` | `\"{freq}_顶底重合_支撑压力V240526` | 收盘价与最近分型区间重合次数 | [详细文档](signals/cxt_overlap_V240526.md) |\n| `cxt_overlap_V240612` | `\"{freq}_SNR顺畅N{n}_支撑压力V240612` | 顺畅笔分型支撑压力信号 | [详细文档](signals/cxt_overlap_V240612.md) |\n| `cxt_range_oscillation_V230620` | `\"{freq}_D{di}TH{th}_区间震荡V230620` | 区间震荡笔数统计 | [详细文档](signals/cxt_range_oscillation_V230620.md) |\n| `cxt_second_bs_V230320` | `\"{freq}_D{di}#{ma_type}#{timeperiod}_BS2辅助V230320` | 均线辅助识别第二类买卖点 | [详细文档](signals/cxt_second_bs_V230320.md) |\n| `cxt_second_bs_V240524` | `\"{freq}_D{di}W{w}T{t}_第二买卖点V240524` | 第二买卖点重叠计数信号 | [详细文档](signals/cxt_second_bs_V240524.md) |\n| `cxt_seven_bi_V230620` | `\"{freq}_D{di}七笔_形态V230620` | 七笔形态分类信号 | [详细文档](signals/cxt_seven_bi_V230620.md) |\n| `cxt_third_bs_V230318` | `\"{freq}_D{di}#{ma_type}#{timeperiod}_BS3辅助V230318` | 均线辅助识别第三类买卖点 | [详细文档](signals/cxt_third_bs_V230318.md) |\n| `cxt_third_bs_V230319` | `\"{freq}_D{di}#{ma_type}#{timeperiod}_BS3辅助V230319` | 带均线形态的第三类买卖点辅助 | [详细文档](signals/cxt_third_bs_V230319.md) |\n| `cxt_third_buy_V230228` | `\"{freq}_D{di}_三买辅助V230228` | 笔三买辅助 | [详细文档](signals/cxt_third_buy_V230228.md) |\n| `cxt_three_bi_V230618` | `\"{freq}_D{di}三笔_形态V230618` | 三笔形态分类信号 | [详细文档](signals/cxt_three_bi_V230618.md) |\n| `cxt_ubi_end_V230816` | `\"{freq}_UBI_BE辅助V230816` | UBI 新高新低次数信号 | [详细文档](signals/cxt_ubi_end_V230816.md) |\n",".claude/skills/signal-functions/references/signals-cxt_trader.md":"# cxt_trader 模块信号索引\n\n> 源码: `crates/czsc-signals/src/cxt_trader.rs`\n> 共 2 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `cxt_intraday_V230701` | `\"{freq1}#{freq2}_D{di}日_走势分类V230701` | 30分钟日内走势分类 | [详细文档](signals/cxt_intraday_V230701.md) |\n| `cxt_zhong_shu_gong_zhen_V221221` | `\"{freq1}_{freq2}_中枢共振V221221` | 大小级别中枢共振 | [详细文档](signals/cxt_zhong_shu_gong_zhen_V221221.md) |\n",".claude/skills/signal-functions/references/signals-jcc.md":"# jcc 模块信号索引\n\n> 源码: `crates/czsc-signals/src/jcc.rs`\n> 共 19 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `jcc_ci_tou_V221101` | `\"{freq}_D{di}Z{z}TH{th}_刺透形态` | 刺透形态 | [详细文档](signals/jcc_ci_tou_V221101.md) |\n| `jcc_fan_ji_xian_V221121` | `\"{freq}_D{di}_反击线` | 反击线 | [详细文档](signals/jcc_fan_ji_xian_V221121.md) |\n| `jcc_fen_shou_xian_V20221113` | `\"{freq}_D{di}K_分手线` | 分手线 | [详细文档](signals/jcc_fen_shou_xian_V20221113.md) |\n| `jcc_gap_yin_yang_V221121` | `\"{freq}_D{di}K_并列阴阳` | 跳空并列阴阳 | [详细文档](signals/jcc_gap_yin_yang_V221121.md) |\n| `jcc_ping_tou_V221113` | `\"{freq}_D{di}TH{th}_平头形态` | 平头形态 | [详细文档](signals/jcc_ping_tou_V221113.md) |\n| `jcc_san_fa_V20221115` | `\"{freq}_D{di}K_三法` | 三法形态 | [详细文档](signals/jcc_san_fa_V20221115.md) |\n| `jcc_san_fa_V20221118` | `\"{freq}_D{di}K_三法A` | 三法形态A | [详细文档](signals/jcc_san_fa_V20221118.md) |\n| `jcc_san_szx_V221122` | `\"{freq}_D{di}T{th}_三星` | 三星形态 | [详细文档](signals/jcc_san_szx_V221122.md) |\n| `jcc_san_xing_xian_V221023` | `\"{freq}_D{di}TH{th}_伞形线` | 伞形线形态信号 | [详细文档](signals/jcc_san_xing_xian_V221023.md) |\n| `jcc_shan_chun_V221121` | `\"{freq}_D{di}B_山川形态` | 山川形态 | [详细文档](signals/jcc_shan_chun_V221121.md) |\n| `jcc_szx_V221111` | `\"{freq}_D{di}TH{th}_十字线` | 十字线 | [详细文档](signals/jcc_szx_V221111.md) |\n| `jcc_ta_xing_V221124` | `\"{freq}_D{di}K_塔形` | 塔形顶底 | [详细文档](signals/jcc_ta_xing_V221124.md) |\n| `jcc_ten_mo_V221028` | `\"{freq}_D{di}_吞没形态` | 吞没形态 | [详细文档](signals/jcc_ten_mo_V221028.md) |\n| `jcc_three_crow_V221108` | `\"{freq}_D{di}_三只乌鸦` | 三只乌鸦 | [详细文档](signals/jcc_three_crow_V221108.md) |\n| `jcc_two_crow_V221108` | `\"{freq}_D{di}K_两只乌鸦` | 两只乌鸦 | [详细文档](signals/jcc_two_crow_V221108.md) |\n| `jcc_wu_yun_gai_ding_V221101` | `\"{freq}_D{di}Z{z}TH{th}_乌云盖顶` | 乌云盖顶 | [详细文档](signals/jcc_wu_yun_gai_ding_V221101.md) |\n| `jcc_xing_xian_V221118` | `\"{freq}_D{di}TH{th}_星形线` | 星形线 | [详细文档](signals/jcc_xing_xian_V221118.md) |\n| `jcc_yun_xian_V221118` | `\"{freq}_D{di}_孕线` | 孕线形态 | [详细文档](signals/jcc_yun_xian_V221118.md) |\n| `jcc_zhu_huo_xian_V221027` | `\"{freq}_D{di}T{th}F{zf}_烛火线` | 烛火线 | [详细文档](signals/jcc_zhu_huo_xian_V221027.md) |\n",".claude/skills/signal-functions/references/signals-kcatr.md":"# kcatr 模块信号索引\n\n> 源码: `crates/czsc-signals/src/kcatr.rs`\n> 共 1 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `kcatr_up_dw_line_V230823` | `\"{freq}_D{di}N{n}M{m}T{th}_KCATR多空V230823` | ATR 通道突破多空 | [详细文档](signals/kcatr_up_dw_line_V230823.md) |\n",".claude/skills/signal-functions/references/signals-ntmdk.md":"# ntmdk 模块信号索引\n\n> 源码: `crates/czsc-signals/src/ntmdk.rs`\n> 共 1 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `ntmdk_V230824` | `\"{freq}_D{di}M{m}_NTMDK多空V230824` | M 日前收盘价对比多空 | [详细文档](signals/ntmdk_V230824.md) |\n",".claude/skills/signal-functions/references/signals-obv.md":"# obv 模块信号索引\n\n> 源码: `crates/czsc-signals/src/obv.rs`\n> 共 2 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `obv_up_dw_line_V230719` | `\"{freq}_D{di}N{n}M{m}MO{max_overlap}_OBV能量V230719` | OBV 交叉信号 | [详细文档](signals/obv_up_dw_line_V230719.md) |\n| `obvm_line_V230610` | `\"{freq}_D{di}N{n}M{m}_OBV能量V230610` | OBV 双 EMA 能量信号 | [详细文档](signals/obvm_line_V230610.md) |\n",".claude/skills/signal-functions/references/signals-pos.md":"# pos 模块信号索引\n\n> 源码: `crates/czsc-signals/src/pos.rs`\n> 共 16 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `pos_bar_stop_V230524` | `\"{pos_name}_{freq1}N{n}K_止损V230524` | 按开仓点附近N根K线极值止损 | [详细文档](signals/pos_bar_stop_V230524.md) |\n| `pos_fix_exit_V230624` | `\"{pos_name}_固定{th}BP止盈止损_出场V230624` | 固定 BP 止盈止损 | [详细文档](signals/pos_fix_exit_V230624.md) |\n| `pos_fx_stop_V230414` | `\"{freq1}_{pos_name}N{n}_止损V230414` | 按开仓点附近分型止损 | [详细文档](signals/pos_fx_stop_V230414.md) |\n| `pos_holds_V230414` | `\"{pos_name}_{freq1}N{n}M{m}_趋势判断V230414` | 开仓后 N 根K线收益与阈值比较 | [详细文档](signals/pos_holds_V230414.md) |\n| `pos_holds_V230807` | `\"{pos_name}_{freq1}N{n}M{m}T{t}_BS辅助V230807` | 开仓后收益在 (t, m) 之间触发保本 | [详细文档](signals/pos_holds_V230807.md) |\n| `pos_holds_V240428` | `\"{pos_name}_{freq1}H{h}T{t}N{n}_保本V240428` | 最大盈利回撤比例保本 | [详细文档](signals/pos_holds_V240428.md) |\n| `pos_holds_V240608` | `\"{pos_name}_{freq1}W{w}N{n}_保本V240608` | 跌破/升破开仓前窗口极值后，回到成本价指定档位保本 | [详细文档](signals/pos_holds_V240608.md) |\n| `pos_ma_V230414` | `\"{pos_name}_{freq1}#{ma_type}#{timeperiod}_持有状态V230414` | 判断开仓后是否升破/跌破均线 | [详细文档](signals/pos_ma_V230414.md) |\n| `pos_profit_loss_V230624` | `\"{pos_name}_{freq1}YKB{ykb}N{n}_盈亏比判断V230624` | 盈亏比阈值判断 | [详细文档](signals/pos_profit_loss_V230624.md) |\n| `pos_status_V230808` | `\"{pos_name}_持仓状态_BS辅助V230808` | 持仓状态 | [详细文档](signals/pos_status_V230808.md) |\n| `pos_stop_V240331` | `\"{pos_name}_{freq1}#{n}_止损V240331` | 最近 N 根K线追踪止损 | [详细文档](signals/pos_stop_V240331.md) |\n| `pos_stop_V240428` | `\"{pos_name}_{freq1}T{t}N{n}_止损V240428` | 按开仓前离散价位跳数止损 | [详细文档](signals/pos_stop_V240428.md) |\n| `pos_stop_V240608` | `\"{pos_name}_{freq1}W{w}N{n}_止损V240608` | 开仓后突破开仓前窗口极值 N 档止损 | [详细文档](signals/pos_stop_V240608.md) |\n| `pos_stop_V240614` | `\"{pos_name}_{freq1}N{n}_止损V240614` | 开仓后低于/高于成本价的 K线数量计数止损 | [详细文档](signals/pos_stop_V240614.md) |\n| `pos_stop_V240717` | `\"{pos_name}_{freq1}N{n}T{timeperiod}_止损V240717` | 基于开仓时 ATR 的计数止损 | [详细文档](signals/pos_stop_V240717.md) |\n| `pos_take_V240428` | `\"{pos_name}_{freq1}T{t}N{n}_止盈V240428` | 倍量阳/阴线计数止盈 | [详细文档](signals/pos_take_V240428.md) |\n",".claude/skills/signal-functions/references/signals-pressure.md":"# pressure 模块信号索引\n\n> 源码: `crates/czsc-signals/src/pressure.rs`\n> 共 4 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `pressure_support_V240222` | `\"{freq}_D{di}W{w}高低点验证_支撑压力V240222` | 高低点验证支撑压力位 | [详细文档](signals/pressure_support_V240222.md) |\n| `pressure_support_V240402` | `\"{freq}_D{di}W{w}_支撑压力V240402` | 分型区间支撑压力位 | [详细文档](signals/pressure_support_V240402.md) |\n| `pressure_support_V240406` | `\"{freq}_D{di}W{w}_支撑压力V240406` | 分型密集支撑压力位 | [详细文档](signals/pressure_support_V240406.md) |\n| `pressure_support_V240530` | `\"{freq}_D{di}W{w}N{n}_支撑压力V240530` | 关键重叠K线支撑压力位 | [详细文档](signals/pressure_support_V240530.md) |\n",".claude/skills/signal-functions/references/signals-tas.md":"# tas 模块信号索引\n\n> 源码: `crates/czsc-signals/src/tas.rs`\n> 共 59 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `cci_decision_V240620` | `\"{freq}_N{n}CCI_决策区域V240620` | CCI 逆势决策区域 | [详细文档](signals/cci_decision_V240620.md) |\n| `tas_accelerate_V230531` | `\"{freq}_D{di}N{n}T{t}_BOLL加速V230531` | BOLL 通道加速信号 | [详细文档](signals/tas_accelerate_V230531.md) |\n| `tas_angle_V230802` | `\"{freq}_D{di}N{n}T{th}_笔角度V230802` | 笔角度偏离信号 | [详细文档](signals/tas_angle_V230802.md) |\n| `tas_atr_V230630` | `\"{freq}_D{di}ATR{timeperiod}_波动V230630` | ATR 波动分层信号 | [详细文档](signals/tas_atr_V230630.md) |\n| `tas_atr_break_V230424` | `\"{freq}_D{di}ATR{timeperiod}T{th}突破_BS辅助V230424` | ATR 通道突破 | [详细文档](signals/tas_atr_break_V230424.md) |\n| `tas_boll_bc_V221118` | `\"{freq}_D{di}N{n}M{m}L{line}#BOLL{timeperiod}_背驰V221118` | BOLL背驰辅助信号 | [详细文档](signals/tas_boll_bc_V221118.md) |\n| `tas_boll_cc_V230312` | `\"{freq}_D{di}BOLL{timeperiod}S{nbdev}SP{sp}_BS辅助V230312` | 布林进出场信号 | [详细文档](signals/tas_boll_cc_V230312.md) |\n| `tas_boll_power_V221112` | `\"{freq}_D{di}BOLL{timeperiod}_强弱V221112` | BOLL强弱分层信号 | [详细文档](signals/tas_boll_power_V221112.md) |\n| `tas_boll_vt_V230212` | `\"{freq}_D{di}BOLL{timeperiod}S{nbdev}MO{max_overlap}_BS辅助V230212` | BOLL 通道突破进出场信号 | [详细文档](signals/tas_boll_vt_V230212.md) |\n| `tas_cci_base_V230402` | `\"{freq}_D{di}CCI{timeperiod}#{min_count}#{max_count}_BS辅助V230402` | CCI 极值连续计数信号 | [详细文档](signals/tas_cci_base_V230402.md) |\n| `tas_cross_status_V230619` | `\"{freq}_D{di}MACD{fastperiod}#{slowperiod}#{signalperiod}_金死叉V230619` | 0轴上下金死叉次数 | [详细文档](signals/tas_cross_status_V230619.md) |\n| `tas_cross_status_V230624` | `\"{freq}_D{di}N{n}MD{md}_MACD交叉数量V230624` | 指定金死叉数值 | [详细文档](signals/tas_cross_status_V230624.md) |\n| `tas_cross_status_V230625` | `\"{freq}_D{di}N{n}MD{md}J{j}S{s}_MACD交叉数量V230625` | 指定金叉/死叉次数后状态 | [详细文档](signals/tas_cross_status_V230625.md) |\n| `tas_dif_layer_V241010` | `\"{freq}_DIF分层W{w}T{t}_完全分类V241010` | DIF 三层分类 | [详细文档](signals/tas_dif_layer_V241010.md) |\n| `tas_dif_zero_V240612` | `\"{freq}_DIF靠近零轴T{t}_BS辅助V240612` | DIF靠近零轴买卖点信号（基于最近一笔） | [详细文档](signals/tas_dif_zero_V240612.md) |\n| `tas_dif_zero_V240614` | `\"{freq}_DIF靠近零轴W{w}T{t}_BS辅助V240614` | DIF靠近零轴买卖点信号 | [详细文档](signals/tas_dif_zero_V240614.md) |\n| `tas_dma_bs_V240608` | `\"{freq}_N{n}双均线{t1}#{t2}顺势_BS辅助V240608` | 双均线顺势回调买卖点 | [详细文档](signals/tas_dma_bs_V240608.md) |\n| `tas_double_ma_V221203` | `\"{freq}_D{di}T{th}#{ma_type}#{timeperiod1}#{timeperiod2}_JX辅助V221203` | 双均线多空强弱信号 | [详细文档](signals/tas_double_ma_V221203.md) |\n| `tas_double_ma_V230511` | `\"{freq}_D{di}#{ma_type}#{t1}#{t2}_BS辅助V230511` | 双均线反向信号 | [详细文档](signals/tas_double_ma_V230511.md) |\n| `tas_double_ma_V240208` | `\"{freq}_D{di}N{N}M{M}双均线_BS辅助V240208` | 双均线交叉结构信号 | [详细文档](signals/tas_double_ma_V240208.md) |\n| `tas_first_bs_V230217` | `\"{freq}_D{di}N{n}#{ma_type}#{timeperiod}_BS1辅助V230217` | 均线结合K线形态的一买一卖辅助 | [详细文档](signals/tas_first_bs_V230217.md) |\n| `tas_hlma_V230301` | `\"{freq}_D{di}#{ma_type}#{timeperiod}HLMA_BS辅助V230301` | HMA/LMA 多空信号 | [详细文档](signals/tas_hlma_V230301.md) |\n| `tas_kdj_base_V221101` | `\"{freq}_D{di}K#KDJ{fastk_period}#{slowk_period}#{slowd_period}_KDJ辅助V221101` | KDJ基础辅助信号 | [详细文档](signals/tas_kdj_base_V221101.md) |\n| `tas_kdj_evc_V221201` | `\"{freq}_D{di}T{th}KDJ{fastk_period}#{slowk_period}#{slowd_period}#{key}值突破{c1}#{c2}_KDJ极值V221201` | KDJ 极值计数信号 | [详细文档](signals/tas_kdj_evc_V221201.md) |\n| `tas_kdj_evc_V230401` | `\"{freq}_D{di}T{th}KDJ{fastk_period}#{slowk_period}#{slowd_period}#{key}值突破{min_count}#{max_count}_BS辅助V230401` | KDJ 极值计数信号 | [详细文档](signals/tas_kdj_evc_V230401.md) |\n| `tas_low_trend_V230627` | `\"{freq}_D{di}N{n}TH{th}_趋势230627` | 阴跌/小阳趋势信号 | [详细文档](signals/tas_low_trend_V230627.md) |\n| `tas_ma_base_V221101` | `\"{freq}_D{di}{ma_type}#{timeperiod}_分类V221101` | 单均线多空与方向信号 | [详细文档](signals/tas_ma_base_V221101.md) |\n| `tas_ma_base_V221203` | `\"{freq}_D{di}{ma_type}#{timeperiod}T{th}_分类V221203` | 单均线多空与距离分层信号 | [详细文档](signals/tas_ma_base_V221203.md) |\n| `tas_ma_base_V230313` | `\"{freq}_D{di}#{ma_type}#{timeperiod}MO{max_overlap}_BS辅助V230313` | 单均线开平仓辅助信号（带重叠约束） | [详细文档](signals/tas_ma_base_V230313.md) |\n| `tas_ma_cohere_V230512` | `\"{freq}_D{di}SMA{ma_seq}_均线系统V230512` | 均线系统粘合/扩散状态 | [详细文档](signals/tas_ma_cohere_V230512.md) |\n| `tas_ma_round_V221206` | `\"{freq}_D{di}TH{th}#碰{ma_type}#{timeperiod}_BE辅助V221206` | 笔端点触碰均线信号 | [详细文档](signals/tas_ma_round_V221206.md) |\n| `tas_ma_system_V230513` | `\"{freq}_D{di}SMA{ma_seq}_均线系统V230513` | 均线系统多空排列 | [详细文档](signals/tas_ma_system_V230513.md) |\n| `tas_macd_base_V221028` | `\"{freq}_D{di}MACD{fastperiod}#{slowperiod}#{signalperiod}#{key}_BS辅助V221028` | MACD/DIF/DEA 多空与方向信号 | [详细文档](signals/tas_macd_base_V221028.md) |\n| `tas_macd_base_V230320` | `\"{freq}_D{di}MACD{fastperiod}#{slowperiod}#{signalperiod}MO{max_overlap}#{key}_BS辅助V230320` | MACD/DIF/DEA 多空与方向信号（含重叠约束） | [详细文档](signals/tas_macd_base_V230320.md) |\n| `tas_macd_bc_V221201` | `\"{freq}_D{di}N{n}M{m}#MACD{fastperiod}#{slowperiod}#{signalperiod}_BCV221201` | MACD背驰辅助信号 | [详细文档](signals/tas_macd_bc_V221201.md) |\n| `tas_macd_bc_V230803` | `\"{freq}_MACD双分型背驰_BS辅助V230803` | 双分型 MACD 背驰信号 | [详细文档](signals/tas_macd_bc_V230803.md) |\n| `tas_macd_bc_V230804` | `\"{freq}_D{di}MACD背驰_BS辅助V230804` | MACD 黄白线背驰信号 | [详细文档](signals/tas_macd_bc_V230804.md) |\n| `tas_macd_bc_V240307` | `\"{freq}_D{di}N{n}柱子背驰_BS辅助V240307` | MACD 柱背驰计次信号 | [详细文档](signals/tas_macd_bc_V240307.md) |\n| `tas_macd_bc_ubi_V230804` | `\"{freq}_MACD背驰_UBI观察V230804` | 未完成笔 MACD 背驰观察 | [详细文档](signals/tas_macd_bc_ubi_V230804.md) |\n| `tas_macd_bs1_V230312` | `\"{freq}_D{di}MACD{fastperiod}#{slowperiod}#{signalperiod}_BS1辅助V230312` | MACD 辅助一买一卖（笔结构） | [详细文档](signals/tas_macd_bs1_V230312.md) |\n| `tas_macd_bs1_V230313` | `\"{freq}_D{di}MACD{fastperiod}#{slowperiod}#{signalperiod}_BS1辅助V230313` | MACD 红绿柱第一买卖点 | [详细文档](signals/tas_macd_bs1_V230313.md) |\n| `tas_macd_bs1_V230411` | `\"{freq}_D{di}T{tha}#{thb}#{thc}_BS1辅助V230411` | MACD DIF 五笔背驰信号 | [详细文档](signals/tas_macd_bs1_V230411.md) |\n| `tas_macd_bs1_V230412` | `\"{freq}_D{di}T{tha}#{thb}_BS1辅助V230412` | MACD DIF 五笔背驰简化信号 | [详细文档](signals/tas_macd_bs1_V230412.md) |\n| `tas_macd_change_V221105` | `\"{freq}_D{di}K{n}#MACD{fastperiod}#{slowperiod}#{signalperiod}变色次数_BS辅助V221105` | MACD变色次数信号 | [详细文档](signals/tas_macd_change_V221105.md) |\n| `tas_macd_direct_V221106` | `\"{freq}_D{di}K#MACD{fastperiod}#{slowperiod}#{signalperiod}方向_BS辅助V221106` | MACD柱方向信号 | [详细文档](signals/tas_macd_direct_V221106.md) |\n| `tas_macd_dist_V230408` | `\"{freq}_{key}分层W{w}N{n}_BS辅助V230408` | DIF/DEA/MACD等宽分层信号 | [详细文档](signals/tas_macd_dist_V230408.md) |\n| `tas_macd_dist_V230409` | `\"{freq}_{key}远离W{w}N{n}T{t}_BS辅助V230409` | DIF/DEA/MACD远离零轴信号 | [详细文档](signals/tas_macd_dist_V230409.md) |\n| `tas_macd_dist_V230410` | `\"{freq}_{key}多空分层W{w}N{n}_BS辅助V230410` | DIF/DEA/MACD多空分层信号 | [详细文档](signals/tas_macd_dist_V230410.md) |\n| `tas_macd_first_bs_V221201` | `\"{freq}_D{di}MACD{fastperiod}#{slowperiod}#{signalperiod}_BS1辅助V221201` | MACD一买一卖辅助信号 | [详细文档](signals/tas_macd_first_bs_V221201.md) |\n| `tas_macd_first_bs_V221216` | `\"{freq}_D{di}MACD{fastperiod}#{slowperiod}#{signalperiod}_BS1辅助V221216` | MACD 第一买卖点（扩展版） | [详细文档](signals/tas_macd_first_bs_V221216.md) |\n| `tas_macd_power_V221108` | `\"{freq}_D{di}K#MACD{fastperiod}#{slowperiod}#{signalperiod}强弱_BS辅助V221108` | MACD强弱分层信号 | [详细文档](signals/tas_macd_power_V221108.md) |\n| `tas_macd_second_bs_V221201` | `\"{freq}_D{di}MACD{fastperiod}#{slowperiod}#{signalperiod}_BS2辅助V221201` | MACD 第二买卖点 | [详细文档](signals/tas_macd_second_bs_V221201.md) |\n| `tas_macd_xt_V221208` | `\"{freq}_D{di}K#MACD{fastperiod}#{slowperiod}#{signalperiod}形态_BS辅助V221208` | MACD 柱形态信号 | [详细文档](signals/tas_macd_xt_V221208.md) |\n| `tas_rsi_base_V230227` | `\"{freq}_D{di}T{th}RSI{timeperiod}_RSI辅助V230227` | RSI超买超卖与方向信号 | [详细文档](signals/tas_rsi_base_V230227.md) |\n| `tas_rumi_V230704` | `\"{freq}_D{di}F{timeperiod1}S{timeperiod2}R{rumi_window}_BS辅助V230704` | RUMI 零轴切换信号 | [详细文档](signals/tas_rumi_V230704.md) |\n| `tas_sar_base_V230425` | `\"{freq}_D{di}MO{max_overlap}SAR_BS辅助V230425` | SAR 基础多空信号 | [详细文档](signals/tas_sar_base_V230425.md) |\n| `tas_second_bs_V230228` | `\"{freq}_D{di}N{n}#{ma_type}#{timeperiod}_BS2辅助V230228` | 均线结合K线形态的二买二卖辅助 | [详细文档](signals/tas_second_bs_V230228.md) |\n| `tas_second_bs_V230303` | `\"{freq}_D{di}{ma_type}#{timeperiod}_BS2辅助V230303` | 利用笔和均线辅助二买二卖 | [详细文档](signals/tas_second_bs_V230303.md) |\n| `tas_slope_V231019` | `\"{freq}_D{di}DIF{n}斜率T{th}_BS辅助V231019` | DIF 斜率分位多空 | [详细文档](signals/tas_slope_V231019.md) |\n",".claude/skills/signal-functions/references/signals-vol.md":"# vol 模块信号索引\n\n> 源码: `crates/czsc-signals/src/vol.rs`\n> 共 6 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `vol_double_ma_V230214` | `\"{freq}_D{di}VOL双均线{ma_type}#{t1}#{t2}_BS辅助V230214` | 成交量双均线多空信号 | [详细文档](signals/vol_double_ma_V230214.md) |\n| `vol_gao_di_V221218` | `\"{freq}_D{di}K_量柱V221218` | 高量柱与低量柱信号 | [详细文档](signals/vol_gao_di_V221218.md) |\n| `vol_single_ma_V230214` | `\"{freq}_D{di}VOL#{ma_type}#{timeperiod}_分类V230214` | 单成交量均线多空与方向信号 | [详细文档](signals/vol_single_ma_V230214.md) |\n| `vol_ti_suo_V221216` | `\"{freq}_D{di}K_量柱V221216` | 梯量与缩量柱信号 | [详细文档](signals/vol_ti_suo_V221216.md) |\n| `vol_window_V230731` | `\"{freq}_D{di}W{w}M{m}N{n}_窗口能量V230731` | 窗口成交量分层特征 | [详细文档](signals/vol_window_V230731.md) |\n| `vol_window_V230801` | `\"{freq}_D{di}W{w}_窗口能量V230801` | 窗口成交量先后顺序特征 | [详细文档](signals/vol_window_V230801.md) |\n",".claude/skills/signal-functions/references/signals-xl.md":"# xl 模块信号索引\n\n> 源码: `crates/czsc-signals/src/xl.rs`\n> 共 7 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `xl_bar_basis_V240411` | `\"{freq}_N{n}_形态V240411` | 吞没形态信号 | [详细文档](signals/xl_bar_basis_V240411.md) |\n| `xl_bar_basis_V240412` | `\"{freq}_N{n}#TH{th}_形态V240412` | 长蜡烛形态信号 | [详细文档](signals/xl_bar_basis_V240412.md) |\n| `xl_bar_position_V240328` | `\"{freq}_N{n}_BS辅助V240328` | 相对高低位置识别信号 | [详细文档](signals/xl_bar_position_V240328.md) |\n| `xl_bar_trend_V240329` | `\"{freq}_N{n}M{m}_十字线反转V240329` | 十字孕线反转信号 | [详细文档](signals/xl_bar_trend_V240329.md) |\n| `xl_bar_trend_V240330` | `\"{freq}_N{n}M{m}#{ma_type}_双均线过滤V240330` | 双均线过滤信号 | [详细文档](signals/xl_bar_trend_V240330.md) |\n| `xl_bar_trend_V240331` | `\"{freq}_N{n}_突破信号V240331` | 通道突破信号 | [详细文档](signals/xl_bar_trend_V240331.md) |\n| `xl_bar_trend_V240623` | `\"{freq}_N{n}通道_突破信号V240623` | 通道突破连续信号 | [详细文档](signals/xl_bar_trend_V240623.md) |\n",".claude/skills/signal-functions/references/signals-zdy_trader.md":"# zdy_trader 模块信号索引\n\n> 源码: `crates/czsc-signals/src/zdy_trader.rs`\n> 共 4 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `zdy_stop_loss_V230406` | `` | 笔操作止损逻辑 | [详细文档](signals/zdy_stop_loss_V230406.md) |\n| `zdy_take_profit_V230406` | `` | 笔操作止盈逻辑 | [详细文档](signals/zdy_take_profit_V230406.md) |\n| `zdy_take_profit_V230407` | `` | 按力度提前止盈 | [详细文档](signals/zdy_take_profit_V230407.md) |\n| `zdy_vibrate_V230406` | `` | 中枢震荡短差辅助 | [详细文档](signals/zdy_vibrate_V230406.md) |\n",".claude/skills/signal-functions/references/signals/adtm_up_dw_line_V230603.md":"# adtm_up_dw_line_V230603：ADTM 能量异动多空信号\n\n> 模块: `ang.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}N{n}M{m}TH{th}_ADTMV230603`\n\n## 信号逻辑\n\n1. 计算 `N` 窗口 `up_sum` 与 `M` 窗口 `dw_sum`；\n2. 计算 `adtm = (up_sum - dw_sum) / max(up_sum, dw_sum)`；\n3. `up_sum > dw_sum` 或 `adtm > th/10` 判 `看多`；\n4. `up_sum < dw_sum` 或 `adtm < th/10` 判 `看空`，否则 `其他`。\n\n## 信号列表示例\n\n- `Signal('60分钟_D1N30M20TH5_ADTMV230603_看多_任意_任意_0')`\n- `Signal('60分钟_D1N30M20TH5_ADTMV230603_看空_任意_任意_0')`\n\n## 参数说明\n\n- `di`：信号计算截止在倒数第 `di` 根K线，默认 `1`；\n- `n`：`up_sum` 窗口，默认 `30`；\n- `m`：`dw_sum` 窗口，默认 `20`；\n- `th`：阈值（除以 10 使用），默认 `5`。\n\n## 对齐说明\n\n与 Python `adtm_up_dw_line_V230603` 的条件优先级与阈值口径一致。\n",".claude/skills/signal-functions/references/signals/amv_up_dw_line_V230603.md":"# amv_up_dw_line_V230603：AMV 能量多空信号\n\n> 模块: `ang.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}N{n}M{m}_AMV能量V230603`\n\n## 信号逻辑\n\n1. 计算 `N` 与 `M` 窗口成交额加权均价；\n2. 形成 `amv1` 与 `amv2`；\n3. `amv1 > amv2` 判 `看多`，否则 `看空`。\n\n## 信号列表示例\n\n- `Signal('60分钟_D1N30M120_AMV能量V230603_看多_任意_任意_0')`\n- `Signal('60分钟_D1N30M120_AMV能量V230603_看空_任意_任意_0')`\n\n## 参数说明\n\n- `di`：信号计算截止在倒数第 `di` 根K线，默认 `1`；\n- `n`：短窗口，默认 `30`；\n- `m`：长窗口，默认 `120`。\n\n## 对齐说明\n\n与 Python `amv_up_dw_line_V230603` 的加权均价公式一致。\n",".claude/skills/signal-functions/references/signals/asi_up_dw_line_V230603.md":"# asi_up_dw_line_V230603：ASI 多空信号\n\n> 模块: `ang.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}N{n}P{p}_ASI多空V230603`\n\n## 信号逻辑\n\n1. 基于最近 `p` 根K线计算 SI 序列并累加得 ASI；\n2. 将最新 ASI 与 `p` 窗口 ASI 均值比较；\n3. `asi_last > asi_mean` 判 `看多`，否则 `看空`。\n\n## 信号列表示例\n\n- `Signal('60分钟_D1N30P120_ASI多空V230603_看多_任意_任意_0')`\n- `Signal('60分钟_D1N30P120_ASI多空V230603_看空_任意_任意_0')`\n\n## 参数说明\n\n- `di`：信号计算截止在倒数第 `di` 根K线，默认 `1`；\n- `n`：SI 公式中的常数项，默认 `30`；\n- `p`：窗口长度，默认 `120`。\n\n## 对齐说明\n\n按 Python `asi_up_dw_line_V230603` 的原始向量公式逐项对齐实现。\n",".claude/skills/signal-functions/references/signals/bar_accelerate_V221110.md":"# bar_accelerate_V221110：区间加速走势判定\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}W{window}_加速V221110`\n\n## 信号逻辑\n\n1. 取倒数第 `di` 根截止的最近 `window` 根K线，计算区间最高/最低；\n2. 若末根收盘位于区间上20%且阳线占比>=80%，判 `上涨`；\n3. 若末根收盘位于区间下20%且阴线占比>=80%，判 `下跌`，否则 `其他`。\n\n## 信号列表示例\n\n- `Signal('60分钟_D1W13_加速V221110_上涨_任意_任意_0')`\n- `Signal('60分钟_D1W13_加速V221110_下跌_任意_任意_0')`\n\n## 参数说明\n\n- `di`：倒数第 `di` 根K线，默认 `1`；\n- `window`：观察窗口长度，默认 `10`。\n\n## 对齐说明\n\n收盘位置与阳阴占比阈值对齐 Python `bar_accelerate_V221110`。\n",".claude/skills/signal-functions/references/signals/bar_accelerate_V221118.md":"# bar_accelerate_V221118：均线偏离加速判定\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}W{window}#{ma_type}#{timeperiod}_加速V221118`\n\n## 信号逻辑\n\n1. 计算窗口内每根 `close - ma` 偏离值；\n2. 全部偏离为正，且最后三根偏离值递增，判 `上涨`；\n3. 全部偏离为负，且最后三根偏离值递减，判 `下跌`，否则 `其他`。\n\n## 信号列表示例\n\n- `Signal('日线_D1W13#SMA#10_加速V221118_上涨_任意_任意_0')`\n- `Signal('日线_D1W13#SMA#10_加速V221118_下跌_任意_任意_0')`\n\n## 参数说明\n\n- `di`：倒数第 `di` 根K线，默认 `1`；\n- `window`：观察窗口，默认 `13`；\n- `ma_type`：均线类型，默认 `SMA`；\n- `timeperiod`：均线周期，默认 `10`。\n\n## 对齐说明\n\n偏离序列与三根单调条件对齐 Python `bar_accelerate_V221118`。\n",".claude/skills/signal-functions/references/signals/bar_accelerate_V240428.md":"# bar_accelerate_V240428：滚动差分加速判定\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}W{w}T{t}_加速V240428`\n\n## 信号逻辑\n\n1. 计算 `diff = close - close[w]`，取最近300根 `|diff|` 的75分位阈值；\n2. 若最新 `|diff|` 超阈且 `diff>0`，窗口内倍量阳线数>=`t` 判 `上涨`；\n3. 若最新 `|diff|` 超阈且 `diff<0`，窗口内倍量阴线数>=`t` 判 `下跌`，否则 `其他`。\n\n## 信号列表示例\n\n- `Signal('日线_D1W21T2_加速V240428_上涨_任意_任意_0')`\n- `Signal('日线_D1W21T2_加速V240428_下跌_任意_任意_0')`\n\n## 参数说明\n\n- `di`：倒数第 `di` 根K线，默认 `1`；\n- `w`：差分窗口，默认 `21`；\n- `t`：倍量同向K线最小数量，默认 `1`。\n\n## 对齐说明\n\n阈值分位与倍量计数口径对齐 Python `bar_accelerate_V240428`。\n",".claude/skills/signal-functions/references/signals/bar_amount_acc_V230214.md":"# bar_amount_acc_V230214：区间累计成交额信号\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}N{n}_累计超{t}千万`\n\n## 信号逻辑\n\n1. 取倒数第 `di` 根截止的最近 `n` 根K线；\n2. 计算累计成交额 `sum(amount)`；\n3. 若大于 `t * 1e7` 判 `是`，否则 `否`。\n\n## 信号列表示例\n\n- `Signal('日线_D2N5_累计超10千万_是_任意_任意_0')`\n- `Signal('日线_D2N5_累计超10千万_否_任意_任意_0')`\n\n## 参数说明\n\n- `di`：倒数第 `di` 根K线，默认 `2`；\n- `n`：回看K线数，默认 `5`；\n- `t`：阈值（千万），默认 `10`。\n\n## 对齐说明\n\n累计金额阈值判断与 Python `bar_amount_acc_V230214` 一致。\n",".claude/skills/signal-functions/references/signals/bar_big_solid_V230215.md":"# bar_big_solid_V230215：窗口最大实体中位多空信号\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}N{n}_MIDV230215`\n\n## 信号逻辑\n\n1. 在窗口内找到实体最大K线；\n2. 取该K线实体中位价 `mid`；\n3. 最新收盘价高于 `mid` 判 `看多`，否则 `看空`；\n4. 最大实体K线按方向标注 `大阳/大阴`。\n\n## 信号列表示例\n\n- `Signal('日线_D1N20_MIDV230215_看多_大阳_任意_0')`\n- `Signal('日线_D1N20_MIDV230215_看空_大阴_任意_0')`\n\n## 参数说明\n\n- `di`：倒数第 `di` 根K线，默认 `1`；\n- `n`：窗口长度，默认 `20`。\n\n## 对齐说明\n\n最大实体与中位价定义对齐 Python `bar_big_solid_V230215`。\n",".claude/skills/signal-functions/references/signals/bar_bpm_V230227.md":"# bar_bpm_V230227：绝对动量分层\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}N{n}T{th}_绝对动量V230227`\n\n## 信号逻辑\n\n1. 取最近 `n` 根，计算区间 BP：`(last_close/first_open-1)*10000`；\n2. `bp>0` 时，`bp>th` 判 `超强` 否则 `强势`；\n3. `bp<=0` 时，`|bp|>th` 判 `超弱` 否则 `弱势`。\n\n## 信号列表示例\n\n- `Signal('60分钟_D1N20T1000_绝对动量V230227_强势_任意_任意_0')`\n- `Signal('60分钟_D1N20T1000_绝对动量V230227_超弱_任意_任意_0')`\n\n## 参数说明\n\n- `di`：倒数第 `di` 根K线，默认 `1`；\n- `n`：窗口长度，默认 `20`；\n- `th`：强弱阈值（BP），默认 `1000`。\n\n## 对齐说明\n\n分层规则与 Python `bar_bpm_V230227` 保持一致。\n",".claude/skills/signal-functions/references/signals/bar_break_V240428.md":"# bar_break_V240428：收盘极值突破\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}W{w}_事件V240428`\n\n## 信号逻辑\n\n1. 在窗口内比较末根收盘与前序最高/最低；\n2. 收盘高于前序最高判 `收盘新高`；\n3. 收盘低于前序最低判 `收盘新低`，否则 `其他`。\n\n## 信号列表示例\n\n- `Signal('60分钟_D1W20_事件V240428_收盘新高_任意_任意_0')`\n- `Signal('60分钟_D1W20_事件V240428_收盘新低_任意_任意_0')`\n\n## 参数说明\n\n- `di`：倒数第 `di` 根K线，默认 `1`；\n- `w`：窗口长度，默认 `20`。\n\n## 对齐说明\n\n极值比较区间与 Python `bar_break_V240428` 一致。\n",".claude/skills/signal-functions/references/signals/bar_channel_V230508.md":"# bar_channel_V230508：窄幅通道方向判定\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}M{m}_通道V230507`\n\n## 信号逻辑\n\n1. 窗口内每根K线涨跌幅需不超过 `m` BP；\n2. 对高点和低点分别做一元线性拟合，要求 `r2 > 0.8`；\n3. 双斜率同向且右侧极值确认，判 `看多/看空`，否则 `其他`。\n\n## 信号列表示例\n\n- `Signal('日线_D1M600_通道V230507_看多_任意_任意_0')`\n- `Signal('日线_D1M600_通道V230507_看空_任意_任意_0')`\n\n## 参数说明\n\n- `di`：倒数第 `di` 根K线，默认 `1`；\n- `n`：窗口长度，默认 `20`；\n- `m`：单根波动阈值（BP），默认 `600`。\n\n## 对齐说明\n\n拟合阈值和右侧极值规则对齐 Python `bar_channel_V230508`。\n",".claude/skills/signal-functions/references/signals/bar_classify_V240606.md":"# bar_classify_V240606：单根K线收盘位置分类\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}收盘位置_分类V240606`\n\n## 信号逻辑\n\n1. 将K线高低区间三等分；\n2. 收盘落在上三分之一判 `高位`；\n3. 收盘落在下三分之一判 `低位`，否则 `中间`。\n\n## 信号列表示例\n\n- `Signal('60分钟_D1收盘位置_分类V240606_高位_任意_任意_0')`\n- `Signal('60分钟_D1收盘位置_分类V240606_中间_任意_任意_0')`\n\n## 参数说明\n\n- `di`：倒数第 `di` 根K线，默认 `1`。\n\n## 对齐说明\n\n三分位阈值与 Python `bar_classify_V240606` 一致。\n",".claude/skills/signal-functions/references/signals/bar_classify_V240607.md":"# bar_classify_V240607：两根K线收盘位置分类\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}K2收盘位置_分类V240607`\n\n## 信号逻辑\n\n1. 取最近两根K线（截至 `di`）；\n2. 第二根收盘高于第一根最高判 `看多`；\n3. 第二根收盘低于第一根最低判 `看空`，否则 `中性`。\n\n## 信号列表示例\n\n- `Signal('60分钟_D1K2收盘位置_分类V240607_看多_任意_任意_0')`\n- `Signal('60分钟_D1K2收盘位置_分类V240607_中性_任意_任意_0')`\n\n## 参数说明\n\n- `di`：倒数第 `di` 根K线，默认 `1`。\n\n## 对齐说明\n\n两根K线比较规则与 Python `bar_classify_V240607` 一致。\n",".claude/skills/signal-functions/references/signals/bar_decision_V240608.md":"# bar_decision_V240608：放量反向决策区\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_W{w}N{n}Q{q}放量_决策区域V240608`\n\n## 信号逻辑\n\n1. 在最近 `n` 根中取成交量最大的3根；\n2. 若三者成交量都大于最近 `w` 根的 `q` 分位；\n3. 且 `n` 窗口净涨则 `看空`，净跌则 `看多`。\n\n## 信号列表示例\n\n- `Signal('60分钟_W300N10Q80放量_决策区域V240608_看空_任意_任意_0')`\n- `Signal('60分钟_W300N10Q80放量_决策区域V240608_看多_任意_任意_0')`\n\n## 参数说明\n\n- `w`：长窗口，默认 `300`；\n- `n`：短窗口，默认 `10`；\n- `q`：成交量分位阈值（0-100），默认 `80`。\n\n## 对齐说明\n\n分位阈值与反向判定对齐 Python `bar_decision_V240608`。\n",".claude/skills/signal-functions/references/signals/bar_decision_V240616.md":"# bar_decision_V240616：新高新低后的强弱决策\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_W{w}N{n}强弱_决策区域V240616`\n\n## 信号逻辑\n\n1. 用 `di=n` 的 `w` 窗口给出历史新高/新低参考；\n2. 在最近 `n` 根中过滤出大实体K线并按顺序检查其右侧K线；\n3. 新高后转弱判 `看空`，新低后转强判 `看多`。\n\n## 信号列表示例\n\n- `Signal('60分钟_W100N5强弱_决策区域V240616_看空_任意_任意_0')`\n- `Signal('60分钟_W100N5强弱_决策区域V240616_看多_任意_任意_0')`\n\n## 参数说明\n\n- `w`：参考窗口，默认 `100`；\n- `n`：决策窗口，默认 `5`。\n\n## 对齐说明\n\n候选筛选与右侧确认流程对齐 Python `bar_decision_V240616`。\n",".claude/skills/signal-functions/references/signals/bar_dual_thrust_V230403.md":"# bar_dual_thrust_V230403：Dual Thrust 通道突破\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}通道突破#{N}#{K1}#{K2}_BS辅助V230403`\n\n## 信号逻辑\n\n1. 用前 `N+1` 根计算 `HH/HC/LC/LL` 与 `Range=max(HH-LC, HC-LL)`；\n2. 构造当根上/下轨：`open + Range*K1%`、`open - Range*K2%`；\n3. 收盘上破判 `看多`，下破判 `看空`，否则 `其他`。\n\n## 信号列表示例\n\n- `Signal('日线_D1通道突破#5#20#20_BS辅助V230403_看多_任意_任意_0')`\n- `Signal('日线_D1通道突破#5#20#20_BS辅助V230403_看空_任意_任意_0')`\n\n## 参数说明\n\n- `di`：倒数第 `di` 根K线，默认 `1`；\n- `N`：回看天数，默认 `5`；\n- `K1`：上轨系数（百分比），默认 `20`；\n- `K2`：下轨系数（百分比），默认 `20`。\n\n## 对齐说明\n\n通道计算与突破判断对齐 Python `bar_dual_thrust_V230403`。\n",".claude/skills/signal-functions/references/signals/bar_eight_V230702.md":"# bar_eight_V230702：8K 走势分类\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}#8K_走势分类V230702`\n\n## 信号逻辑\n\n1. 统计8K中的三连K重叠中枢；\n2. 无中枢时输出 `无中枢上涨/无中枢下跌`；\n3. 双中枢满足不重叠时输出 `双中枢上涨/双中枢下跌`；\n4. 其余按前三根是否出现极值分为 `强平衡/弱平衡/转折平衡`。\n\n## 信号列表示例\n\n- `Signal('30分钟_D1#8K_走势分类V230702_双中枢上涨_任意_任意_0')`\n- `Signal('30分钟_D1#8K_走势分类V230702_转折平衡市_任意_任意_0')`\n\n## 参数说明\n\n- `di`：倒数第 `di` 根K线，默认 `1`。\n\n## 对齐说明\n\n中枢判定与分类分支顺序对齐 Python `bar_eight_V230702`。\n",".claude/skills/signal-functions/references/signals/bar_end_V221211.md":"# bar_end_V221211：判断大周期K线是否闭合\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_{freq1}结束_BS辅助221211`\n\n## 信号逻辑\n\n1. 以当前基础周期 `freq` 与目标分钟周期 `freq1` 计算当前K线对应结束时间；\n2. 从最新K线向前统计同属该结束时间的连续数量 `i`；\n3. 若 `end_time == last_dt` 判定 `闭合`，否则判定 `未闭{i}`。\n\n## 信号列表示例\n\n- `Signal('15分钟_60分钟结束_BS辅助221211_闭合_任意_任意_0')`\n- `Signal('15分钟_60分钟结束_BS辅助221211_未闭2_任意_任意_0')`\n\n## 参数说明\n\n- `freq1`：目标分钟周期，默认 `60分钟`。\n\n## 对齐说明\n\n闭合/未闭计数语义与 Python `bar_end_V221211` 保持一致。\n",".claude/skills/signal-functions/references/signals/bar_fake_break_V230204.md":"# bar_fake_break_V230204：区间假突破判定\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}N{n}M{m}_假突破V230204`\n\n## 信号逻辑\n\n1. 在最近 `N` 根内寻找滑动 `M` 窗口重叠中枢；\n2. 阳线末根创新高且“跌破DD后拉回”，判 `看多`；\n3. 阴线末根创新低且“突破GG后回落”，判 `看空`，否则 `其他`。\n\n## 信号列表示例\n\n- `Signal('15分钟_D1N20M5_假突破_看多_任意_任意_0')`\n- `Signal('15分钟_D1N20M5_假突破_看空_任意_任意_0')`\n\n## 参数说明\n\n- `di`：倒数第 `di` 根K线，默认 `1`；\n- `n`：观察窗口，默认 `20`；\n- `m`：中枢滑窗，默认 `5`。\n\n## 对齐说明\n\n中枢重叠与真假突破条件对齐 Python `bar_fake_break_V230204`。\n",".claude/skills/signal-functions/references/signals/bar_fang_liang_break_V221216.md":"# bar_fang_liang_break_V221216：放量突破与缩量回踩\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}TH{th}#{ma_type}#{timeperiod}_突破V221216`\n\n## 信号逻辑\n\n1. 计算指定均线，检查末根是否放量且站上均线，判 `放量突破`；\n2. 检查末根是否缩量且收盘不破均线，且前序收盘与均线距离在阈值内，判 `缩量回踩`；\n3. 在窗口长度 `5~9` 中依次尝试，首次出现突破即返回。\n\n## 信号列表示例\n\n- `Signal('15分钟_D1TH300#SMA#233_突破V221216_放量突破_缩量回踩_任意_0')`\n- `Signal('15分钟_D1TH300#SMA#233_突破V221216_其他_其他_任意_0')`\n\n## 参数说明\n\n- `di`：倒数第 `di` 根K线，默认 `1`；\n- `th`：回踩距离阈值（BP），默认 `300`；\n- `ma_type`：均线类型，默认 `SMA`；\n- `timeperiod`：均线周期，默认 `233`。\n\n## 对齐说明\n\n窗口扫描与两阶段条件对齐 Python `bar_fang_liang_break_V221216`。\n",".claude/skills/signal-functions/references/signals/bar_limit_down_V230525.md":"# bar_limit_down_V230525：跌停后反包阳线\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_跌停后无下影线长实体阳线_短线V230525`\n\n## 信号逻辑\n\n1. 仅日线级别；\n2. 前一日近似跌停：`low==close<prev_close && close/prev_close<0.95`；\n3. 当日无下影长阳：`low==open && close>open && solid>2*upper && close/open>1.07`；\n4. 且当日最低低于前日最低，判 `满足`。\n\n## 信号列表示例\n\n- `Signal('日线_跌停后无下影线长实体阳线_短线V230525_满足_任意_任意_0')`\n- `Signal('日线_跌停后无下影线长实体阳线_短线V230525_其他_任意_任意_0')`\n\n## 参数说明\n\n- 无额外参数。\n\n## 对齐说明\n\n条件组合与 Python `bar_limit_down_V230525` 保持一致。\n",".claude/skills/signal-functions/references/signals/bar_mean_amount_V221112.md":"# bar_mean_amount_V221112：区间均额分类信号\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}K{n}B均额_{th1}至{th2}千万`\n\n## 信号逻辑\n\n1. 取倒数第 `di` 根截止的最近 `n` 根K线；\n2. 计算平均成交额 `m`；\n3. 若 `m/1e7` 在 `[th1, th2]` 判 `是`，否则判 `否`。\n\n## 信号列表示例\n\n- `Signal('60分钟_D1K10B均额_1至4千万_是_任意_任意_0')`\n- `Signal('60分钟_D1K10B均额_1至4千万_否_任意_任意_0')`\n\n## 参数说明\n\n- `di`：倒数第 `di` 根K线，默认 `1`；\n- `n`：样本长度，默认 `10`；\n- `th1`：下限（千万），默认 `1`；\n- `th2`：上限（千万），默认 `4`。\n\n## 对齐说明\n\n均额口径与 Python `bar_mean_amount_V221112` 保持一致。\n",".claude/skills/signal-functions/references/signals/bar_operate_span_V221111.md":"# bar_operate_span_V221111：日内时间区间过滤\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_T{t1}#{t2}_时间区间V221111`\n\n## 信号逻辑\n\n1. 读取最新K线时间 `HHMM`；\n2. 若 `t1 <= HHMM <= t2` 判定 `是`，否则判定 `否`。\n\n## 信号列表示例\n\n- `Signal('60分钟_T0935#1450_时间区间_是_任意_任意_0')`\n- `Signal('60分钟_T0935#1450_时间区间_否_任意_任意_0')`\n\n## 参数说明\n\n- `t1`：起始时间（`HHMM`），默认 `0935`；\n- `t2`：结束时间（`HHMM`），默认 `1450`。\n\n## 对齐说明\n\n边界包含比较与 Python `bar_operate_span_V221111` 一致。\n",".claude/skills/signal-functions/references/signals/bar_plr_V240427.md":"# bar_plr_V240427：盈亏比约束\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}W{w}T{t}M{m}_盈亏比V240427`\n\n## 信号逻辑\n\n1. `多头`：以窗口最低点前的最高点与当前收盘计算盈亏比；\n2. `空头`：以窗口最高点前的最低点与当前收盘计算盈亏比；\n3. `plr > t/10` 判 `满足`，否则 `不满足`。\n\n## 信号列表示例\n\n- `Signal('60分钟_D1W60T20M多头_盈亏比V240427_满足_任意_任意_0')`\n- `Signal('60分钟_D1W60T20M空头_盈亏比V240427_不满足_任意_任意_0')`\n\n## 参数说明\n\n- `di`：倒数第 `di` 根K线，默认 `1`；\n- `w`：窗口长度，默认 `60`；\n- `t`：阈值（`t/10`），默认 `20`；\n- `m`：方向，`多头/空头`，默认 `多头`。\n\n## 对齐说明\n\n盈亏比定义与阈值比较对齐 Python `bar_plr_V240427`。\n",".claude/skills/signal-functions/references/signals/bar_polyfit_V240428.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_polyfit_V240428.md -->",".claude/skills/signal-functions/references/signals/bar_r_breaker_V230326.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_r_breaker_V230326.md -->",".claude/skills/signal-functions/references/signals/bar_reversal_V230227.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_reversal_V230227.md -->",".claude/skills/signal-functions/references/signals/bar_section_momentum_V221112.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_section_momentum_V221112.md -->",".claude/skills/signal-functions/references/signals/bar_shuang_fei_V230507.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_shuang_fei_V230507.md -->",".claude/skills/signal-functions/references/signals/bar_single_V230214.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_single_V230214.md -->",".claude/skills/signal-functions/references/signals/bar_single_V230506.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_single_V230506.md -->",".claude/skills/signal-functions/references/signals/bar_td9_V240616.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_td9_V240616.md -->",".claude/skills/signal-functions/references/signals/bar_time_V230327.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_time_V230327.md -->",".claude/skills/signal-functions/references/signals/bar_tnr_V230629.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_tnr_V230629.md -->",".claude/skills/signal-functions/references/signals/bar_tnr_V230630.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_tnr_V230630.md -->",".claude/skills/signal-functions/references/signals/bar_trend_V240209.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_trend_V240209.md -->",".claude/skills/signal-functions/references/signals/bar_triple_V230506.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_triple_V230506.md -->",".claude/skills/signal-functions/references/signals/bar_vol_bs1_V230224.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_vol_bs1_V230224.md -->",".claude/skills/signal-functions/references/signals/bar_vol_grow_V221112.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_vol_grow_V221112.md -->",".claude/skills/signal-functions/references/signals/bar_volatility_V241013.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_volatility_V241013.md -->",".claude/skills/signal-functions/references/signals/bar_weekday_V230328.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_weekday_V230328.md -->",".claude/skills/signal-functions/references/signals/bar_window_ps_V230731.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_window_ps_V230731.md -->",".claude/skills/signal-functions/references/signals/bar_window_ps_V230801.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_window_ps_V230801.md -->",".claude/skills/signal-functions/references/signals/bar_window_std_V230731.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_window_std_V230731.md -->",".claude/skills/signal-functions/references/signals/bar_zdf_V221203.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_zdf_V221203.md -->",".claude/skills/signal-functions/references/signals/bar_zdt_V230331.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_zdt_V230331.md -->",".claude/skills/signal-functions/references/signals/bar_zfzd_V241013.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_zfzd_V241013.md -->",".claude/skills/signal-functions/references/signals/bar_zfzd_V241014.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_zfzd_V241014.md -->",".claude/skills/signal-functions/references/signals/bar_zt_count_V230504.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_zt_count_V230504.md -->",".claude/skills/signal-functions/references/signals/bias_up_dw_line_V230618.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbias_up_dw_line_V230618.md -->",".claude/skills/signal-functions/references/signals/byi_bi_end_V230106.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbyi_bi_end_V230106.md -->",".claude/skills/signal-functions/references/signals/byi_bi_end_V230107.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbyi_bi_end_V230107.md -->",".claude/skills/signal-functions/references/signals/byi_fx_num_V230628.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbyi_fx_num_V230628.md -->",".claude/skills/signal-functions/references/signals/byi_second_bs_V230324.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbyi_second_bs_V230324.md -->",".claude/skills/signal-functions/references/signals/byi_symmetry_zs_V221107.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbyi_symmetry_zs_V221107.md -->",".claude/skills/signal-functions/references/signals/cat_macd_V230518.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcat_macd_V230518.md -->",".claude/skills/signal-functions/references/signals/cat_macd_V230520.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcat_macd_V230520.md -->",".claude/skills/signal-functions/references/signals/cci_decision_V240620.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcci_decision_V240620.md -->",".claude/skills/signal-functions/references/signals/clv_up_dw_line_V230605.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fclv_up_dw_line_V230605.md -->",".claude/skills/signal-functions/references/signals/cmo_up_dw_line_V230605.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcmo_up_dw_line_V230605.md -->",".claude/skills/signal-functions/references/signals/coo_cci_V230323.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcoo_cci_V230323.md -->",".claude/skills/signal-functions/references/signals/coo_kdj_V230322.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcoo_kdj_V230322.md -->",".claude/skills/signal-functions/references/signals/coo_sar_V230325.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcoo_sar_V230325.md -->",".claude/skills/signal-functions/references/signals/coo_td_V221110.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcoo_td_V221110.md -->",".claude/skills/signal-functions/references/signals/coo_td_V221111.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcoo_td_V221111.md -->",".claude/skills/signal-functions/references/signals/cvolp_up_dw_line_V230612.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcvolp_up_dw_line_V230612.md -->",".claude/skills/signal-functions/references/signals/cxt_bi_base_V230228.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_bi_base_V230228.md -->",".claude/skills/signal-functions/references/signals/cxt_bi_end_V230104.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_bi_end_V230104.md -->",".claude/skills/signal-functions/references/signals/cxt_bi_end_V230105.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_bi_end_V230105.md -->",".claude/skills/signal-functions/references/signals/cxt_bi_end_V230222.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_bi_end_V230222.md -->",".claude/skills/signal-functions/references/signals/cxt_bi_end_V230224.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_bi_end_V230224.md -->",".claude/skills/signal-functions/references/signals/cxt_bi_end_V230312.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_bi_end_V230312.md -->",".claude/skills/signal-functions/references/signals/cxt_bi_end_V230320.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_bi_end_V230320.md -->",".claude/skills/signal-functions/references/signals/cxt_bi_end_V230322.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_bi_end_V230322.md -->",".claude/skills/signal-functions/references/signals/cxt_bi_end_V230324.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_bi_end_V230324.md -->",".claude/skills/signal-functions/references/signals/cxt_bi_end_V230618.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_bi_end_V230618.md -->",".claude/skills/signal-functions/references/signals/cxt_bi_end_V230815.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_bi_end_V230815.md -->",".claude/skills/signal-functions/references/signals/cxt_bi_status_V230101.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_bi_status_V230101.md -->",".claude/skills/signal-functions/references/signals/cxt_bi_status_V230102.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_bi_status_V230102.md -->",".claude/skills/signal-functions/references/signals/cxt_bi_stop_V230815.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_bi_stop_V230815.md -->",".claude/skills/signal-functions/references/signals/cxt_bi_trend_V230824.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_bi_trend_V230824.md -->",".claude/skills/signal-functions/references/signals/cxt_bi_trend_V230913.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_bi_trend_V230913.md -->",".claude/skills/signal-functions/references/signals/cxt_bi_zdf_V230601.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_bi_zdf_V230601.md -->",".claude/skills/signal-functions/references/signals/cxt_bs_V240526.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_bs_V240526.md -->",".claude/skills/signal-functions/references/signals/cxt_bs_V240527.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_bs_V240527.md -->",".claude/skills/signal-functions/references/signals/cxt_decision_V240526.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_decision_V240526.md -->",".claude/skills/signal-functions/references/signals/cxt_decision_V240612.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_decision_V240612.md -->",".claude/skills/signal-functions/references/signals/cxt_decision_V240613.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_decision_V240613.md -->",".claude/skills/signal-functions/references/signals/cxt_decision_V240614.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_decision_V240614.md -->",".claude/skills/signal-functions/references/signals/cxt_double_zs_V230311.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_double_zs_V230311.md -->",".claude/skills/signal-functions/references/signals/cxt_eleven_bi_V230622.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_eleven_bi_V230622.md -->",".claude/skills/signal-functions/references/signals/cxt_first_buy_V221126.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_first_buy_V221126.md -->",".claude/skills/signal-functions/references/signals/cxt_first_sell_V221126.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_first_sell_V221126.md -->",".claude/skills/signal-functions/references/signals/cxt_five_bi_V230619.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_five_bi_V230619.md -->",".claude/skills/signal-functions/references/signals/cxt_fx_power_V221107.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_fx_power_V221107.md -->",".claude/skills/signal-functions/references/signals/cxt_intraday_V230701.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_intraday_V230701.md -->",".claude/skills/signal-functions/references/signals/cxt_nine_bi_V230621.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_nine_bi_V230621.md -->",".claude/skills/signal-functions/references/signals/cxt_overlap_V240526.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_overlap_V240526.md -->",".claude/skills/signal-functions/references/signals/cxt_overlap_V240612.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_overlap_V240612.md -->",".claude/skills/signal-functions/references/signals/cxt_range_oscillation_V230620.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_range_oscillation_V230620.md -->",".claude/skills/signal-functions/references/signals/cxt_second_bs_V230320.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_second_bs_V230320.md -->",".claude/skills/signal-functions/references/signals/cxt_second_bs_V240524.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_second_bs_V240524.md -->",".claude/skills/signal-functions/references/signals/cxt_seven_bi_V230620.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_seven_bi_V230620.md -->",".claude/skills/signal-functions/references/signals/cxt_third_bs_V230318.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_third_bs_V230318.md -->",".claude/skills/signal-functions/references/signals/cxt_third_bs_V230319.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_third_bs_V230319.md -->",".claude/skills/signal-functions/references/signals/cxt_third_buy_V230228.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_third_buy_V230228.md -->",".claude/skills/signal-functions/references/signals/cxt_three_bi_V230618.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_three_bi_V230618.md -->",".claude/skills/signal-functions/references/signals/cxt_ubi_end_V230816.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_ubi_end_V230816.md -->",".claude/skills/signal-functions/references/signals/cxt_zhong_shu_gong_zhen_V221221.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_zhong_shu_gong_zhen_V221221.md -->",".claude/skills/signal-functions/references/signals/dema_up_dw_line_V230605.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fdema_up_dw_line_V230605.md -->",".claude/skills/signal-functions/references/signals/demakder_up_dw_line_V230605.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fdemakder_up_dw_line_V230605.md -->",".claude/skills/signal-functions/references/signals/emv_up_dw_line_V230605.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Femv_up_dw_line_V230605.md -->",".claude/skills/signal-functions/references/signals/er_up_dw_line_V230604.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fer_up_dw_line_V230604.md -->",".claude/skills/signal-functions/references/signals/jcc_ci_tou_V221101.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fjcc_ci_tou_V221101.md -->",".claude/skills/signal-functions/references/signals/jcc_fan_ji_xian_V221121.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fjcc_fan_ji_xian_V221121.md -->",".claude/skills/signal-functions/references/signals/jcc_fen_shou_xian_V20221113.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fjcc_fen_shou_xian_V20221113.md -->",".claude/skills/signal-functions/references/signals/jcc_gap_yin_yang_V221121.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fjcc_gap_yin_yang_V221121.md -->",".claude/skills/signal-functions/references/signals/jcc_ping_tou_V221113.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fjcc_ping_tou_V221113.md -->",".claude/skills/signal-functions/references/signals/jcc_san_fa_V20221115.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fjcc_san_fa_V20221115.md -->",".claude/skills/signal-functions/references/signals/jcc_san_fa_V20221118.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fjcc_san_fa_V20221118.md -->",".claude/skills/signal-functions/references/signals/jcc_san_szx_V221122.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fjcc_san_szx_V221122.md -->",".claude/skills/signal-functions/references/signals/jcc_san_xing_xian_V221023.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fjcc_san_xing_xian_V221023.md -->",".claude/skills/signal-functions/references/signals/jcc_shan_chun_V221121.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fjcc_shan_chun_V221121.md -->",".claude/skills/signal-functions/references/signals/jcc_szx_V221111.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fjcc_szx_V221111.md -->",".claude/skills/signal-functions/references/signals/jcc_ta_xing_V221124.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fjcc_ta_xing_V221124.md -->",".claude/skills/signal-functions/references/signals/jcc_ten_mo_V221028.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fjcc_ten_mo_V221028.md -->",".claude/skills/signal-functions/references/signals/jcc_three_crow_V221108.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fjcc_three_crow_V221108.md -->",".claude/skills/signal-functions/references/signals/jcc_two_crow_V221108.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fjcc_two_crow_V221108.md -->",".claude/skills/signal-functions/references/signals/jcc_wu_yun_gai_ding_V221101.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fjcc_wu_yun_gai_ding_V221101.md -->",".claude/skills/signal-functions/references/signals/jcc_xing_xian_V221118.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fjcc_xing_xian_V221118.md -->",".claude/skills/signal-functions/references/signals/jcc_yun_xian_V221118.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fjcc_yun_xian_V221118.md -->",".claude/skills/signal-functions/references/signals/jcc_zhu_huo_xian_V221027.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fjcc_zhu_huo_xian_V221027.md -->",".claude/skills/signal-functions/references/signals/kcatr_up_dw_line_V230823.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fkcatr_up_dw_line_V230823.md -->",".claude/skills/signal-functions/references/signals/ntmdk_V230824.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fntmdk_V230824.md -->",".claude/skills/signal-functions/references/signals/obv_up_dw_line_V230719.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fobv_up_dw_line_V230719.md -->",".claude/skills/signal-functions/references/signals/obvm_line_V230610.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fobvm_line_V230610.md -->",".claude/skills/signal-functions/references/signals/pos_bar_stop_V230524.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fpos_bar_stop_V230524.md -->",".claude/skills/signal-functions/references/signals/pos_fix_exit_V230624.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fpos_fix_exit_V230624.md -->",".claude/skills/signal-functions/references/signals/pos_fx_stop_V230414.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fpos_fx_stop_V230414.md -->",".claude/skills/signal-functions/references/signals/pos_holds_V230414.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fpos_holds_V230414.md -->",".claude/skills/signal-functions/references/signals/pos_holds_V230807.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fpos_holds_V230807.md -->",".claude/skills/signal-functions/references/signals/pos_holds_V240428.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fpos_holds_V240428.md -->",".claude/skills/signal-functions/references/signals/pos_holds_V240608.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fpos_holds_V240608.md -->",".claude/skills/signal-functions/references/signals/pos_ma_V230414.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fpos_ma_V230414.md -->",".claude/skills/signal-functions/references/signals/pos_profit_loss_V230624.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fpos_profit_loss_V230624.md -->",".claude/skills/signal-functions/references/signals/pos_status_V230808.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fpos_status_V230808.md -->",".claude/skills/signal-functions/references/signals/pos_stop_V240331.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fpos_stop_V240331.md -->",".claude/skills/signal-functions/references/signals/pos_stop_V240428.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fpos_stop_V240428.md -->",".claude/skills/signal-functions/references/signals/pos_stop_V240608.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fpos_stop_V240608.md -->",".claude/skills/signal-functions/references/signals/pos_stop_V240614.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fpos_stop_V240614.md -->",".claude/skills/signal-functions/references/signals/pos_stop_V240717.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fpos_stop_V240717.md -->",".claude/skills/signal-functions/references/signals/pos_take_V240428.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fpos_take_V240428.md -->",".claude/skills/signal-functions/references/signals/pressure_support_V240222.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fpressure_support_V240222.md -->",".claude/skills/signal-functions/references/signals/pressure_support_V240402.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fpressure_support_V240402.md -->",".claude/skills/signal-functions/references/signals/pressure_support_V240406.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fpressure_support_V240406.md -->",".claude/skills/signal-functions/references/signals/pressure_support_V240530.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fpressure_support_V240530.md -->",".claude/skills/signal-functions/references/signals/skdj_up_dw_line_V230611.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fskdj_up_dw_line_V230611.md -->",".claude/skills/signal-functions/references/signals/tas_accelerate_V230531.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_accelerate_V230531.md -->",".claude/skills/signal-functions/references/signals/tas_angle_V230802.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_angle_V230802.md -->",".claude/skills/signal-functions/references/signals/tas_atr_V230630.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_atr_V230630.md -->",".claude/skills/signal-functions/references/signals/tas_atr_break_V230424.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_atr_break_V230424.md -->",".claude/skills/signal-functions/references/signals/tas_boll_bc_V221118.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_boll_bc_V221118.md -->",".claude/skills/signal-functions/references/signals/tas_boll_cc_V230312.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_boll_cc_V230312.md -->",".claude/skills/signal-functions/references/signals/tas_boll_power_V221112.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_boll_power_V221112.md -->",".claude/skills/signal-functions/references/signals/tas_boll_vt_V230212.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_boll_vt_V230212.md -->",".claude/skills/signal-functions/references/signals/tas_cci_base_V230402.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_cci_base_V230402.md -->",".claude/skills/signal-functions/references/signals/tas_cross_status_V230619.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_cross_status_V230619.md -->",".claude/skills/signal-functions/references/signals/tas_cross_status_V230624.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_cross_status_V230624.md -->",".claude/skills/signal-functions/references/signals/tas_cross_status_V230625.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_cross_status_V230625.md -->",".claude/skills/signal-functions/references/signals/tas_dif_layer_V241010.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_dif_layer_V241010.md -->",".claude/skills/signal-functions/references/signals/tas_dif_zero_V240612.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_dif_zero_V240612.md -->",".claude/skills/signal-functions/references/signals/tas_dif_zero_V240614.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_dif_zero_V240614.md -->",".claude/skills/signal-functions/references/signals/tas_dma_bs_V240608.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_dma_bs_V240608.md -->",".claude/skills/signal-functions/references/signals/tas_double_ma_V221203.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_double_ma_V221203.md -->",".claude/skills/signal-functions/references/signals/tas_double_ma_V230511.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_double_ma_V230511.md -->",".claude/skills/signal-functions/references/signals/tas_double_ma_V240208.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_double_ma_V240208.md -->",".claude/skills/signal-functions/references/signals/tas_first_bs_V230217.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_first_bs_V230217.md -->",".claude/skills/signal-functions/references/signals/tas_hlma_V230301.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_hlma_V230301.md -->",".claude/skills/signal-functions/references/signals/tas_kdj_base_V221101.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_kdj_base_V221101.md -->",".claude/skills/signal-functions/references/signals/tas_kdj_evc_V221201.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_kdj_evc_V221201.md -->",".claude/skills/signal-functions/references/signals/tas_kdj_evc_V230401.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_kdj_evc_V230401.md -->",".claude/skills/signal-functions/references/signals/tas_low_trend_V230627.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_low_trend_V230627.md -->",".claude/skills/signal-functions/references/signals/tas_ma_base_V221101.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_ma_base_V221101.md -->",".claude/skills/signal-functions/references/signals/tas_ma_base_V221203.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_ma_base_V221203.md -->",".claude/skills/signal-functions/references/signals/tas_ma_base_V230313.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_ma_base_V230313.md -->",".claude/skills/signal-functions/references/signals/tas_ma_cohere_V230512.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_ma_cohere_V230512.md -->",".claude/skills/signal-functions/references/signals/tas_ma_round_V221206.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_ma_round_V221206.md -->",".claude/skills/signal-functions/references/signals/tas_ma_system_V230513.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_ma_system_V230513.md -->",".claude/skills/signal-functions/references/signals/tas_macd_base_V221028.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_base_V221028.md -->",".claude/skills/signal-functions/references/signals/tas_macd_base_V230320.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_base_V230320.md -->",".claude/skills/signal-functions/references/signals/tas_macd_bc_V221201.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_bc_V221201.md -->",".claude/skills/signal-functions/references/signals/tas_macd_bc_V230803.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_bc_V230803.md -->",".claude/skills/signal-functions/references/signals/tas_macd_bc_V230804.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_bc_V230804.md -->",".claude/skills/signal-functions/references/signals/tas_macd_bc_V240307.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_bc_V240307.md -->",".claude/skills/signal-functions/references/signals/tas_macd_bc_ubi_V230804.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_bc_ubi_V230804.md -->",".claude/skills/signal-functions/references/signals/tas_macd_bs1_V230312.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_bs1_V230312.md -->",".claude/skills/signal-functions/references/signals/tas_macd_bs1_V230313.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_bs1_V230313.md -->",".claude/skills/signal-functions/references/signals/tas_macd_bs1_V230411.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_bs1_V230411.md -->",".claude/skills/signal-functions/references/signals/tas_macd_bs1_V230412.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_bs1_V230412.md -->",".claude/skills/signal-functions/references/signals/tas_macd_change_V221105.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_change_V221105.md -->",".claude/skills/signal-functions/references/signals/tas_macd_direct_V221106.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_direct_V221106.md -->",".claude/skills/signal-functions/references/signals/tas_macd_dist_V230408.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_dist_V230408.md -->",".claude/skills/signal-functions/references/signals/tas_macd_dist_V230409.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_dist_V230409.md -->",".claude/skills/signal-functions/references/signals/tas_macd_dist_V230410.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_dist_V230410.md -->",".claude/skills/signal-functions/references/signals/tas_macd_first_bs_V221201.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_first_bs_V221201.md -->",".claude/skills/signal-functions/references/signals/tas_macd_first_bs_V221216.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_first_bs_V221216.md -->",".claude/skills/signal-functions/references/signals/tas_macd_power_V221108.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_power_V221108.md -->",".claude/skills/signal-functions/references/signals/tas_macd_second_bs_V221201.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_second_bs_V221201.md -->",".claude/skills/signal-functions/references/signals/tas_macd_xt_V221208.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_xt_V221208.md -->",".claude/skills/signal-functions/references/signals/tas_rsi_base_V230227.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_rsi_base_V230227.md -->",".claude/skills/signal-functions/references/signals/tas_rumi_V230704.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_rumi_V230704.md -->",".claude/skills/signal-functions/references/signals/tas_sar_base_V230425.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_sar_base_V230425.md -->",".claude/skills/signal-functions/references/signals/tas_second_bs_V230228.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_second_bs_V230228.md -->",".claude/skills/signal-functions/references/signals/tas_second_bs_V230303.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_second_bs_V230303.md -->",".claude/skills/signal-functions/references/signals/tas_slope_V231019.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_slope_V231019.md -->",".claude/skills/signal-functions/references/signals/vol_double_ma_V230214.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fvol_double_ma_V230214.md -->",".claude/skills/signal-functions/references/signals/vol_gao_di_V221218.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fvol_gao_di_V221218.md -->",".claude/skills/signal-functions/references/signals/vol_single_ma_V230214.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fvol_single_ma_V230214.md -->",".claude/skills/signal-functions/references/signals/vol_ti_suo_V221216.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fvol_ti_suo_V221216.md -->",".claude/skills/signal-functions/references/signals/vol_window_V230731.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fvol_window_V230731.md -->",".claude/skills/signal-functions/references/signals/vol_window_V230801.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fvol_window_V230801.md -->",".claude/skills/signal-functions/references/signals/xl_bar_basis_V240411.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fxl_bar_basis_V240411.md -->",".claude/skills/signal-functions/references/signals/xl_bar_basis_V240412.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fxl_bar_basis_V240412.md -->",".claude/skills/signal-functions/references/signals/xl_bar_position_V240328.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fxl_bar_position_V240328.md -->",".claude/skills/signal-functions/references/signals/xl_bar_trend_V240329.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fxl_bar_trend_V240329.md -->",".claude/skills/signal-functions/references/signals/xl_bar_trend_V240330.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fxl_bar_trend_V240330.md -->",".claude/skills/signal-functions/references/signals/xl_bar_trend_V240331.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fxl_bar_trend_V240331.md -->",".claude/skills/signal-functions/references/signals/xl_bar_trend_V240623.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fxl_bar_trend_V240623.md -->",".claude/skills/signal-functions/references/signals/zdy_stop_loss_V230406.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fzdy_stop_loss_V230406.md -->",".claude/skills/signal-functions/references/signals/zdy_take_profit_V230406.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fzdy_take_profit_V230406.md -->",".claude/skills/signal-functions/references/signals/zdy_take_profit_V230407.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fzdy_take_profit_V230407.md -->",".claude/skills/signal-functions/references/signals/zdy_vibrate_V230406.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fzdy_vibrate_V230406.md -->","CLAUDE.md":"# CLAUDE.md\n\nThis file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.\n\n## 项目概述\n\nCZSC（缠中说禅技术分析工具）是基于缠中说禅理论的综合性量化交易Python库，提供技术分析、信号生成、回测和市场分析等功能。本项目专注于实现缠论的分型、笔、线段等核心概念的自动识别，以及基于此的多级别量化交易策略。\n\n## 🏛️ 开发宪法（Constitution）\n\n以下规则是本项目长期演进的**硬约束**，任何 PR、任何重构、任何\"为了赶进度的临时变通\"都不得违反。与此冲突的代码审查意见、个人偏好、历史代码一律以本节为准；违反本节的代码即便已合入，也按 bug 处理、必须回滚或修复。\n\n### 第一条 · Rust ↔ Python 行为一致\n\n**需要 Rust 实现的部分必须同时满足 Rust crate 与 Python wheel 行为一致（Python 端纯透传，禁止再写适配层）。**\n\n> 落地参考（2026-05-17）：策略门面 `CzscStrategyBase` 的 `unique_signals` / `save_positions` / `load_positions` 已全部下沉到 `crates/czsc-trader/src/strategy.rs`，Python 端只剩 1 行 `_native.*` 透传；新增的文件完整性校验改用 `sha256(canonical JSON)`，可在 Rust / Python 端 byte-for-byte 一致复现。任何违反本条的新 PR 都会被 `tests/unit/test_strategy_save_load_parity.py::test_strategies_module_no_longer_uses_hashlib_or_json` 等源码级 ratchet 拦下。\n\n具体含义：\n\n- 同一个名字（如 `monotonicity` / `CzscStrategyBase` / `generate_czsc_signals` / `CZSC`），`cargo add czsc` 的 Rust 用户与 `pip install czsc` 的 Python 用户调用后**行为必须一致**——同样的输入产生同样的输出，默认参数、错误处理、边界条件、字段命名都一致。\n- Python 侧**只允许**做下面两类工作：\n  1. **纯透传**：`from czsc._native import xxx` 后直接 re-export，不做任何包装；\n  2. **不可避免的 PyO3 边界胶水**：DataFrame ↔ Arrow IPC 序列化、`pathlib.Path` ↔ `String` 转换等，PyO3 类型系统无法跨越的边界处理。\n- **禁止**在 Python 侧做参数归一化、默认值补齐、返回值字段重命名、错误码翻译、`isinstance` 多态分支等\"适配层\"工作——这类逻辑必须下沉到 Rust 端实现（修改现有 API 或新增 API）。\n- 新增 Python wrapper 之前，PR 描述里必须先回答\"为什么不能改成 Rust 实现\"，并经过 reviewer 显式批准。\n\n**违反本条的常见信号（在 review 中视为红线）**：\n\n- Python 函数体内出现 `if isinstance(bars, pd.DataFrame): ... elif isinstance(bars, list): ...` 等多态分支；\n- Python 函数返回的 dict 字段顺序 / 命名与 Rust 端 `serde` 输出不一致；\n- 同一份功能在 Python 测试覆盖完整，但 `cargo test` 没有等价用例；\n- CHANGELOG 写 \"Python 端默认参数从 X 改为 Y\"，但 Rust 端无对应改动；\n- `czsc/_runtime_adapters.py` 等\"适配层\"文件持续膨胀，而不是被逐步搬空到 Rust。\n\n## 常用开发命令\n\n### UV 包管理 (项目使用UV管理依赖)\n```bash\n# 同步依赖并安装开发工具（仅在 pyproject.toml / uv.lock 变更时跑）\nuv sync --extra dev\n\n# 安装所有依赖组合\nuv sync --extra all\n\n# 运行测试（日常默认 --no-sync，省去每次 4-5s 的 lockfile/venv 一致性检查）\nuv run --no-sync pytest\n\n# 运行指定测试文件\nuv run --no-sync pytest tests/test_analyze.py -v\n\n# 运行单个测试函数\nuv run --no-sync pytest tests/test_analyze.py::test_czsc_basic -v\n\n# 带覆盖率的测试\nuv run --no-sync pytest --cov=czsc\n\n# 跑全套（含 @pytest.mark.slow 标记的耗时测试，CI / 发布前用）\nuv run --no-sync pytest --run-slow\n\n# 代码格式化和检查（项目使用 ruff，不使用 black/isort/flake8）\nuv run --no-sync ruff format czsc/ tests/\nuv run --no-sync ruff check czsc/ tests/\n```\n\n> **`--no-sync` 约定**：`uv run` 默认会做 lockfile 解析 + venv 一致性检查（本地稳定 4-5s 固定开销）。日常开发循环里依赖很少变，统一用 `--no-sync` 跳过；仅在 `pyproject.toml` / `uv.lock` 改动后显式跑一次 `uv sync` 即可。\n\n### 测试规范\n- 所有测试文件位于 `tests/` 目录，使用 pytest 格式\n- **关键原则**：测试数据统一通过 `czsc.mock` 模块获取，不要在测试中硬编码模拟数据\n- 测试文件命名模式：`test_*.py`\n- 模拟数据使用 `generate_symbol_kines` 函数生成，支持多品种、多频率、可重现的随机数据\n- **慢测试约定**：依赖 `time.sleep` 或子进程冷启动的测试加 `@pytest.mark.slow`，默认跳过；CI / 发布前用 `pytest --run-slow` 跑全套。注册逻辑见 `tests/conftest.py`。\n\n\n## 代码架构\n\n### 核心组件\n\n1. **`czsc._native`** - PyO3 编译产生的 Rust 扩展模块（缠论核心）：\n   - 由 `crates/czsc-python` 通过 `maturin` 打包，扩展模块名 `czsc._native`\n   - 暴露 `CZSC / FX / BI / ZS / RawBar / NewBar / Freq / Mark / Direction / Operate / Signal / Event / Position / BarGenerator` 等核心类型\n   - 暴露 `check_bi / check_fx / check_fxs / remove_include / freq_end_time / is_trading_time` 等工具函数\n   - 暴露 220+ 信号函数（Python 端 7 个子模块：bar/cvolp/cxt/obv/pressure/tas/vol；底层 `crates/czsc-signals/src/` 有 22 个 .rs 源文件，可用 `ls crates/czsc-signals/src/` 自查最新清单）\n   - 暴露 `czsc._native.ta.*`（Rust TA 算子，供信号函数内部使用；本次清理 起 Python 端不再暴露 `czsc.ta` 顶层 alias）\n   - **不存在 Python 回退**：核心分析统一由 Rust 实现。\n\n2. **`crates/`** - Rust workspace（9 个 crate）：\n   - `czsc` / `czsc-core` / `czsc-derive` / `czsc-signals` / `czsc-trader` / `czsc-utils` / `czsc-ta`\n   - `czsc-signal-macros`（proc-macro，`#[signal]` 注册宏）\n   - `czsc-python`（PyO3 binding 总入口，唯一启用 `pyo3/extension-module` 的 crate）\n\n3. **`czsc/traders/`** - 交易执行框架：\n   - `__init__.py`：facade，统一 re-export `CzscSignals / CzscTrader / generate_czsc_signals / get_signals_config / get_signals_freqs / derive_signals_config / derive_signals_freqs / get_unique_signals / WeightBacktest`，全部来自 `czsc._native` 或 `wbt`\n   - `base.py` / `sig_parse.py` 纯透传文件已于 2026-05-17 PR-C 整文件 git rm，新代码请直接走 `czsc.traders` 或 `czsc._native`\n   - `optimize.py` 已于 2026-05-17 PR-C `git mv` 到 `czsc/utils/optimize.py`（职责更贴近 utils）；调用方请用 `from czsc.utils.optimize import OpensOptimize, ExitsOptimize, CzscOpenOptimStrategy, CzscExitOptimStrategy`\n\n4. **`czsc/_native.signals`** - 信号函数（Rust 实现，通过 PyO3 暴露）：\n   - Python 端暴露 7 个子模块（bar/cvolp/cxt/obv/pressure/tas/vol）；底层 `crates/czsc-signals/src/` 有 22 个 .rs 源文件，自查命令：`ls crates/czsc-signals/src/`\n   - 原 `czsc/signals/` Python 命名空间层已在 Phase J **彻底删除**\n   - 通过 `czsc.traders.generate_czsc_signals` 等接口调用信号\n   - 信号解析 API：`get_signals_config` / `get_signals_freqs`（`czsc.traders`）\n\n5. **`czsc/utils/`** - 工具模块（Phase J 精简后）：\n   - `data/cache.py` / `io.py` / `log.py` / `kline_quality.py`：缓存、IO、日志、K 线质量校验\n   - `analysis/corr.py`（仅剩 `cross_sectional_ic`；`stats.py` 与 `nmi_matrix` / `single_linear` 已于 2026-05-17 PR-A 删除，`daily_performance` / `top_drawdowns` 改由顶层 `czsc.*` 透传 wbt）\n   - `data/client.py`：统一数据客户端接口\n   - TA 算子由 Rust `czsc._native.ta` 提供（信号内部依赖），顶层别名 `czsc.{ema,sma,rolling_rank,boll_positions,ultimate_smoother}` 保留；仪表盘场景的 MACD（×2 约定）已下沉为 `czsc/utils/plotting/_macd.py` 私有辅助\n   - `trade.py`：交易工具\n   - `plotting/{kline,weight}.py` + `plotting/lightweight/`：plotly 单周期 K 线 + 权重时序图 / lightweight-charts 自包含 HTML\n   - 已删除：`bar_generator.py` / `bi_info.py`（Rust 已实现）、`st_components.py` / `echarts_*` / `pdf_report` / `html_report_builder` / `word_writer` / `signal_analyzer` / `crypto/` / `czsc/svc/` / `plotting/backtest.py` / `plotting/common.py`（本次清理 删除 Streamlit 组件库与回测可视化函数；迁移详见 `docs/migration/cleanup-non-czsc-core.md`）\n\n7. **`czsc/connectors/`** - 数据源连接器：\n   - 支持天勤、Tushare、CCXT 等多个数据源\n   - 统一的数据接口封装；`local_data.py`（原 `research.py`）提供 CZSC 投研共享数据的本地缓存读取入口\n\n### 信号-事件-交易体系\n\n项目实现了系统化的量化交易方法：\n- **信号（Signals）**: 基础技术指标和市场状态\n- **事件（Events）**: 信号的逻辑组合，通过 signals_all/signals_any/signals_not 实现 AND/OR/NOT 逻辑\n- **交易（Trading）**: 基于事件和风险管理的执行\n\n### 多级别联立分析\n\nCZSC 支持使用 `CzscTrader` 类进行多级别联立分析，可同时分析不同时间周期（如1分钟、5分钟、30分钟、日线）进行全面的市场决策。\n\n## 开发指南\n\n### 代码规范\n- 行长度：120字符（在 pyproject.toml 中配置）\n- 适当使用类型提示\n- 遵循代码库中现有的命名约定\n- 信号函数通过 `#[signal]` 宏在 Rust 端自动注册到 `SIGNAL_REGISTRY`，命名遵循 Rust 模块约定，不再使用历史上的 `V<yyMMdd>` 版本后缀\n- **代码质量原则**：\n  - **DRY（Don't Repeat Yourself）**: 提取重复代码为辅助函数\n  - **KISS（Keep It Simple）**: 保持函数简洁，职责单一\n  - **使用模块级常量**: 避免魔法值，集中管理配置\n  - **类型提示优先**: 使用 `Literal`、`Optional` 等提升代码可读性\n  - **向后兼容性**: 公共 API 修改需谨慎，避免破坏现有代码\n  - **文档完整**: 所有公共函数必须有完整的 docstring\n\n### 信号函数开发\n- 信号函数应遵循飞书文档中的规范说明\n- 信号函数由 Rust 实现，位于 `crates/czsc-signals/` 中\n- 原 Python 版 `czsc/signals/` 已彻底删除（Phase J）；新增信号需在 Rust 侧开发\n- 信号解析公共 API：`get_signals_config(signals_seq)` / `get_signals_freqs(signals_seq)`（来自 `czsc.traders`）\n- 直接使用上述两个函数解析信号配置。\n\n### 数据处理最佳实践\n- 测试数据统一通过 `czsc.mock.generate_symbol_kines` 生成\n- 使用 `format_standard_kline` 将DataFrame转换为RawBar对象列表\n- 使用 `BarGenerator` 进行K线合成和多级别分析\n- 通过 `DataClient` 统一访问不同数据源\n- 注意使用磁盘缓存提高重复计算效率\n\n### 数据格式转换\n```python\n# 从 mock 数据生成 CZSC 对象（全部走顶层 czsc 命名空间）\nfrom czsc import CZSC, Freq, format_standard_kline\nfrom czsc.mock import generate_symbol_kines\n\n# 生成K线数据\ndf = generate_symbol_kines('000001', '30分钟', '20240101', '20240105')\n\n# 转换为RawBar对象列表\nbars = format_standard_kline(df, freq=Freq.F30)\n\n# 创建CZSC分析对象\nczsc_obj = CZSC(bars)\n```\n\n### 回测可视化\n\n`czsc.utils.plotting.backtest` 模块已在二阶段清理 PR-C 删除。推荐做法：\n\n- **权重回测报告**：`wbt.generate_backtest_report(dfw, ...)` 生成自包含 HTML（参见 `docs/examples/13_event_weight_backtest.py`）\n- **缠论 + 多周期联立**：`czsc.utils.plotting.lightweight.plot_czsc{,_trader,_signals}` 输出 lightweight-charts HTML\n- **单周期 K 线 + 缠论结构**：`czsc.utils.plotting.kline.KlineChart` / `plot_czsc_chart`\n- **自定义统计图**：直接用 `plotly.express` / `plotly.graph_objects`，迁移示例见 `docs/migration/cleanup-non-czsc-core.md`\n\n### 依赖管理（UV配置）\n- 核心运行时依赖定义在 `pyproject.toml` 的 `[project.dependencies]` 中\n- 开发依赖在 `[project.optional-dependencies.dev]` 中\n- 测试依赖在 `[project.optional-dependencies.test]` 中\n- 使用 UV 进行依赖管理和虚拟环境控制\n- 项目使用 UV 管理 Python 依赖与虚拟环境（详见根目录 README \"开发环境\" 章节）\n\n## 关键环境变量和设置\n\n- `CZSC_VERBOSE` / `czsc_verbose`：是否打印详细日志（来自 `czsc.envs`）\n- `CZSC_MIN_BI_LEN` / `czsc_min_bi_len`：最小笔长度，默认 6（来自 `czsc.envs`）\n- `CZSC_MAX_BI_NUM` / `czsc_max_bi_num`：最大笔数量，默认 50（来自 `czsc.envs`）\n- 大小写两种写法都接受，大写优先；构造器显式参数优先级最高\n- 缓存目录自动管理，具备大小监控功能\n\n## 缓存管理\n\n项目大量使用磁盘缓存：\n- 缓存位置：`czsc.home_path`（顶层）或 `czsc.utils.data.cache.home_path`（实际定义处）\n- 清除缓存：`czsc.empty_cache_path()`\n- 监控大小：`czsc.get_dir_size(czsc.home_path)`\n- 当缓存超过1GB时 `czsc.welcome()` 会显示清理提示\n\n## 可视化（Plotly + HTML）\n\n所有可视化统一由 plotly 实现，输出方式：\n\n- `czsc.utils.plotting.kline.KlineChart` / `plot_czsc_chart`：单周期 K 线 + 缠论结构（plotly Figure，可 `fig.show()` 或写 HTML）\n- `czsc.utils.plotting.weight.*`：权重时序图（plotly）\n- `czsc.utils.plotting.lightweight.plot_czsc{,_trader,_signals}`：lightweight-charts 自包含 HTML，多周期联立 + 信号叠加\n\n使用 `plot_czsc`、`plot_czsc_trader` 或 `plot_czsc_signals` 生成自包含 HTML 后，可直接在浏览器中打开。\n\n## Rust/Python 混合架构\n\n项目核心算法用 Rust 实现，通过 PyO3 暴露给 Python：\n- **构建方式**：`maturin + Rust workspace`，扩展模块名 `czsc._native`\n- **唯一架构**：Rust 是缠论核心算法的唯一实现；Python 端不再保留任何回退（spec §3.1 / §3.4）\n- **API 暴露**：所有面向用户的 API 都通过 `czsc.xxx` 顶层命名空间暴露，禁止用户感知 `czsc._native`\n- **Python/Rust 分工**：见本文件顶部「🏛️ 开发宪法 · 第一条」。该条款是硬约束，与此冲突的任何\"局部例外\"都不成立。\n- **类型 stub**：`czsc/py.typed` 启用 inline 类型注解；扩展模块 stub 已生成于 `czsc/_native/__init__.pyi`，由 `pyo3-stub-gen` 自动维护\n- **构建环境约束**：使用 `pyo3-stub-gen` 0.23 与 `pyo3` 0.29；项目要求 Python ≥ 3.10，通过 `crates/czsc-python/build.rs` 在编译期校验 `PYO3_PYTHON`，低于 3.10 时直接报错\n- **版本号锁死**（PR-5）：crates.io 与 PyPI 必须使用同一版本号。**唯一版本源**是 `Cargo.toml [workspace.package].version`；`pyproject.toml` 用 `dynamic = [\"version\"]`，由 maturin 在打 wheel 时从 Cargo workspace 注入。`crates/czsc-python/build.rs` 会在编译期校验 pyproject.toml 仍然走 dynamic 路径，禁止硬编码 `version = \"...\"`\n- **发版流程**：bump `Cargo.toml [workspace.package].version` 后，同步 publish 到 crates.io（`cargo publish`）与 PyPI（`maturin publish`）；CHANGELOG 必须列出本次 release 的 breaking changes\n- **rs-czsc 关系**：czsc 一次性 fork rs-czsc 的 Rust 实现进本仓库，**不再做季度同步**；`tests/parity/` 目录已删除，不再保留 rs-czsc parity 比对测试\n\n## 数据连接器支持\n\n项目集成多个数据源连接器（见 `czsc/connectors/`）：\n- `tq_connector.py`: 天勤数据源\n- `ts_connector.py`: Tushare 数据源\n- `ccxt_connector.py`: 数字货币数据源\n- `local_data.py`: 投研数据本地缓存接口（原 `research.py`，已于评审决议中改名）\n\n## 回测和策略研究框架\n\n### 策略开发基础（`czsc/strategies.py`）\n- `CzscStrategyBase`: 策略开发的抽象基类\n- `CzscJsonStrategy`: JSON 配置化的策略实现\n- 策略要素：品种参数、K线周期、信号配置、持仓策略\n- 支持策略序列化和反序列化\n- 研究入口统一指向 `czsc.research.run_research / run_replay / run_optimize_batch`（Rust 后端）\n\n### 信号函数体系（`czsc._native.signals`）\n- 信号函数由 Rust 实现，通过 PyO3 暴露为 `czsc._native.signals.*`\n- Python 端暴露 7 个子模块（bar/cvolp/cxt/obv/pressure/tas/vol）；底层 `crates/czsc-signals/src/` 有 22 个 .rs 源文件，自查命令：`ls crates/czsc-signals/src/`\n- 注册机制：`#[signal]` 宏自动注册到 `SIGNAL_REGISTRY`，不再使用 `V<yyMMdd>` 版本后缀\n- 原 Python `czsc/signals/` 目录已彻底删除（Phase J）\n- 信号配置解析：`get_signals_config` / `get_signals_freqs`（`czsc.traders`），底层调用 Rust 端 `derive_signals_config` / `derive_signals_freqs`\n\n### 探索性数据分析（顶层 `czsc.*`，原 `czsc/eda.py` 已下线）\n- `monotonicity`: 单调性分析（PR-D 已下沉 Rust 实现）\n- `mark_cta_periods`: 标记 CTA 最易/最难赚钱时间段（PR-B 拆到 `czsc/utils/`）\n- `mark_volatility`: 标记高/低波动率时间段（PR-B 拆到 `czsc/utils/`）\n\n> 其余历史函数 `weights_simple_ensemble` / `cal_trade_price` / `cal_yearly_days` / `turnover_rate` 已于 PR-A 二阶段清理中删除；迁移说明见 [`docs/migration/cleanup-non-czsc-core.md`](docs/migration/cleanup-non-czsc-core.md)。\n\n## 重要文档和资源\n\n- [项目文档](https://s0cqcxuy3p.feishu.cn/wiki/wikcn3gB1MKl3ClpLnboHM1QgKf)\n- [信号函数编写规范](https://s0cqcxuy3p.feishu.cn/wiki/wikcnCFLLTNGbr2THqo7KtWfBkd)\n- [API文档](https://czsc.readthedocs.io/en/latest/modules.html)\n- [B站视频教程](https://space.bilibili.com/243682308/channel/series)\n\n## 示例代码和用例\n\n项目维护的示例代码集中在 `docs/examples/` 下（如 `08_weight_backtest.py`、`13_lightweight_charts_html.py`、`15_lightweight_signals_html.py` 等）；HTML 路径示例（13/15）完整保留。\n\n## 项目特色和最佳实践\n\n1. **混合架构设计**: Rust性能优化 + Python灵活性\n2. **多级别联立分析**: 支持多时间周期综合决策\n3. **系统化信号体系**: 信号→事件→交易的完整流程\n4. **丰富的数据源**: 支持A股、期货、数字货币等多市场\n5. **完善的测试框架**: 统一的模拟数据生成和测试规范\n6. **可视化工具**: Plotly + lightweight-charts HTML 输出\n7. **策略研究工具**: CTA框架、参数优化、回测分析一体化\n8. **代码质量优化**: 遵循 DRY、KISS、SOLID 原则\n   - 使用模块级常量消除魔法值\n   - 提取辅助函数减少代码重复\n   - 完善的类型提示（Type Hints）\n   - 清晰的函数职责分离\n   - 保持向后兼容性的 API 设计\n"},"files":{".claude/skills/czsc-release/SKILL.md":"---\nname: czsc-release\ndescription: 规范 czsc 库（混合 Rust + Python，PyO3 + maturin）的版本发布流程。当用户说\"发版/发布/release/publish czsc\"、\"bump 版本\"、\"出 rc.N+1\"、\"准备 1.0.0 stable\"、要把 Rust crate 推 crates.io 或 wheel 推 PyPI 时使用。本 skill 半自动执行预检 / bump / CHANGELOG / commit，遇 push tag / push master / 真 publish 等不可逆动作时停下来要授权。\n---\n\n# CZSC Release Workflow\n\n## 📋 Mandatory References（必读，且必须逐项核完才能进 Phase 3）\n\n| 文件 | 角色 | 何时读 |\n|---|---|---|\n| **`docs/release_checklist.md`**（项目根目录，权威 214 行清单） | 9 节硬性检查清单 —— 含代码/文档一致性、SemVer 决策、本地 Rust/Python/Wheel 三层验证、发布动作顺序、发布后验证、隐藏缺陷雷达、一键自检脚本 | **Phase 0 一次性 Read 全文**；Phase 2 按 §3/§4/§5/§9 跑命令 |\n| `references/release_checklist.md`（本目录） | 上述文件的 pointer（不存内容，避免漂移） | 仅供路径定位 |\n\n**ratchet 规则**：本 skill 的 Phase 2 预检是 `docs/release_checklist.md` 的最小子集。完整清单**必须全部 ✅ 通过**才能进 Phase 3 bump 版本。任何一项 fail / 跳过 → 停下问用户，不要自己决定\"这条不重要\"。\n\n## Overview\n\nczsc 是 **Rust + Python 混合包**：\n\n- crates.io 上发 6 个业务 crate（`czsc-derive`/`czsc-signal-macros` → `czsc-core` → `czsc-ta`/`czsc-utils` → `czsc-signals` → `czsc-trader` → `czsc` facade）\n- PyPI 上发 1 个 wheel（`czsc`，扩展模块 `czsc._native` 由 `crates/czsc-python` 通过 maturin 编译）\n\n两边**版本号必须严格一致**（宪法第一条 + PR-5）。**唯一版本源是 `Cargo.toml [workspace.package].version`**，pyproject.toml 用 `dynamic = [\"version\"]` 由 maturin 注入，`crates/czsc-python/build.rs` 在编译期 ratchet 禁止 pyproject.toml 硬编码 version。\n\n发版**完全靠 GitHub Actions 自动化**：\n\n| 触发 | Workflow | 行为 |\n|---|---|---|\n| `git push origin vX.Y.Z` | `.github/workflows/python-publish.yml` | 自动 build wheels + smoke + 推 PyPI（OIDC Trusted Publishing） |\n| `git push origin vX.Y.Z` | `.github/workflows/rust-publish.yml` | 默认 **dry-run**；真 publish 需 workflow_dispatch + `do_publish=true` |\n\n本 skill 的责任是**人手动做才不会错**的部分：版本决策、CHANGELOG 落档、预检、tag/push 时机、CI 监控、出错重发。\n\n## What this skill does / doesn't do\n\n| ✅ skill 替你做 | ❌ skill 不做 |\n|---|---|\n| 跑全套预检（fmt / clippy / pytest / maturin / stub） | 真按 PyPI 上传按钮（CI 干） |\n| 推下一版本号（基于 CHANGELOG 推 SemVer） | 真按 crates.io publish（CI workflow_dispatch 干） |\n| Bump `Cargo.toml` workspace version | 给 OIDC trusted publishing / CRATES_IO_TOKEN 配凭证（一次性人工事） |\n| 把 CHANGELOG `[Unreleased]` 落档成 `[X.Y.Z] — YYYY-MM-DD` | `git push origin master`、`git tag`、`git push --tags`——这些都要**先停下来明确征求授权**，不可逆 |\n| 提 `chore(release): bump X.Y.Z` commit | 跨语言 reviewer 工作（PR 评审走 requesting-code-review skill） |\n| 监控 publish workflow 跑完，失败时进入重发剧本 | |\n\n## Decision Tree\n\n```\n1. 当前在 master 上？working tree 干净？\n   └─ 否：先 commit 完手头改动，merge 进 master 再 release。\n        发版必须在 master 头部，避免分支漂移。\n\n2. 现在该发什么版本号？\n   ├─ 当前 rc 阶段（X.Y.Z-rc.N）\n   │   ├─ 上轮 RC 已经 publish 到 PyPI/crates.io？\n   │   │   ├─ 是：bump rc.N+1（哪怕只改了 docs，PyPI 版本号已占名不能复用）\n   │   │   └─ 否（rc.N wheel 未上传 / crate 未发）：可以在 rc.N 上修问题、复用 rc.N\n   │   └─ rc 期间累积满意，准备出第一个 stable：bump 到 X.Y.Z（去掉 -rc.N）\n   ├─ stable 阶段（X.Y.Z）\n   │   ├─ [Unreleased] 含 Breaking changes → bump X+1.0.0\n   │   ├─ 仅 Added/Changed（无 breaking） → bump X.Y+1.0\n   │   └─ 仅 Fixed/docs/internal     → bump X.Y.Z+1\n   └─ 不确定 → 让 skill 推荐并问用户确认（永远先问，别猜）\n\n3. 这次只发 Python 还是 Python + Rust 都发？\n   ├─ 改了 Rust crate 公共 API → 两边都发\n   ├─ 只改了 Python 端 facade / docs → 两边都发（版本号必须同步，不能 PyPI 走 1.0.1 而 crates.io 停 1.0.0）\n   └─ 默认：两边都发（除非用户明确说 \"skip rust\" / \"skip python\"）\n```\n\n## Workflow\n\n### Phase 0 — 准备（必做）\n\n**0.0 强制读 release checklist 全文**：\n\n```\nRead /Users/lifanngzhou/git-repo/czsc/docs/release_checklist.md\n```\n\n读完后**列出 9 节标题**给用户看，明确告知\"以下每一节都必须 ✅ 通过才能发版；本 skill 的 Phase 2 是 §3+§4+§5+§9 的最小子集，§1（代码/文档一致性）、§5（Linux aarch64/musllinux wheel 验证）、§7（发布后验证）等节本 skill 不能替代，你需要手动核完并告诉我结果\"。\n\n```bash\n# 0.1 切到 master + pull 最新\ngit checkout master\ngit pull --ff-only origin master\n\n# 0.2 working tree 干净\ngit status   # 必须 nothing to commit\n\n# 0.3 距上一个 tag 至少有 1 个 commit（否则没东西可发）\ngit describe --tags --abbrev=0\ngit log $(git describe --tags --abbrev=0)..HEAD --oneline | wc -l   # > 0\n\n# 0.4 CHANGELOG.md 的 [Unreleased] 非空\ngrep -A50 '^## \\[Unreleased\\]' CHANGELOG.md\n\n# 0.5 release_checklist.md §1 代码/文档一致性（含 3 段 rg 命令）\n#     —— 这一节本 skill 没复述，必须按 docs/release_checklist.md 跑\n```\n\n如果 [Unreleased] 是空的 → **停**，告诉用户：\"上一个 release 后没人写 CHANGELOG，发版前先补\"，让用户决定补还是放弃。\n\n如果 §1 的 `rg czsc.svc|czsc.signals.|streamlit|CZSC_USE_PYTHON|SignalsParser` 命中（说明 markdown 引用了已删除的 API）→ **停**，让用户先清理文档。\n\n### Phase 1 — 推荐下一版本号\n\n读 `Cargo.toml [workspace.package].version` 拿当前版本，读 CHANGELOG.md 的 `[Unreleased]` 块。\n\n按 [Decision Tree](#decision-tree) 第 2 步推荐下一个版本号，并**用 AskUserQuestion 让用户确认**，给出推荐理由：\n\n> 当前版本 1.0.0-rc.7。CHANGELOG [Unreleased] 含 Breaking changes（X 项）+ Added（Y 项）+ Fixed（Z 项）。\n> 推荐 bump 到 **1.0.0-rc.8**（仍在 rc 阶段，rc.7 已发 PyPI 不能复用号）。\n> 是否同意？\n\n### Phase 2 — Pre-flight 预检（必跑全套）\n\n这一节的 ratchet 都是 CHANGELOG 历史教训留下的，**不要跳任何一项**。\n\n> **本节与 `docs/release_checklist.md` 的对应关系**：\n> - 2.1 ↔ checklist §3（Rust 验证 + clippy）\n> - 2.2 ↔ checklist §3（cargo test 的 5 crate 子集）\n> - 2.3-2.4 ↔ checklist §3 最后一项（stub_gen + git diff ratchet）\n> - 2.5-2.6 ↔ checklist §4（Python 验证 + `--run-slow`）\n> - **未覆盖**：checklist §5（本地 wheel + Linux aarch64/musllinux docker 验证）—— 必须额外手跑\n>\n> 想一键跑完？用 checklist §9 的 bash 一键脚本（已串好 §3+§4 的全部命令）。\n\n```bash\n# 2.1 Rust 端格式 + clippy + 全 target typecheck（rc.3 教训：cargo check 不带 --all-targets 漏 test 模块）\ncargo fmt --all -- --check\ncargo clippy --workspace --all-targets -- -D warnings\ncargo check --workspace --all-targets\n\n# 2.2 Rust 单元测试（不带 python feature，绕开 pyo3-stub-gen 上游兼容性问题）\ncargo test --release -p czsc-core --lib\n\n# 2.3 重编 .so 与最新源对齐\nuv run --no-sync maturin develop --release\n\n# 2.4 重生成 stub 并校验无 drift\nPYO3_PYTHON=$(pwd)/.venv/bin/python3 cargo run --release --bin stub_gen -p czsc-python --no-default-features --features stub-gen\ngit diff --exit-code czsc/_native/__init__.pyi   # 必须 0 — stub 必须与 Rust 源一致\n\n# 2.5 Python 端测试 + lint\nuv run --no-sync pytest tests/unit tests/compat -q\nuv run --no-sync ruff format --check czsc tests\nuv run --no-sync ruff check czsc tests\n\n# 2.6 慢测试（发版必跑，平时不跑）\nuv run --no-sync pytest --run-slow -q\n```\n\n任何一步 fail → **停**，把失败摘要给用户，让用户决定修还是放弃发版。**不要在 fail 状态下继续 bump 版本号**——历史上 rc.2/3/4/5 重发都是因为预检不严，把已知错带上 CI。\n\n### Phase 3 — Bump 版本 + 落 CHANGELOG（可逆，skill 直接做）\n\n```bash\nNEW_VER=\"1.0.0-rc.8\"     # ← 来自 Phase 1 用户确认值\nTODAY=$(date +%Y-%m-%d)\n```\n\n1. **改 `Cargo.toml`** 的 `[workspace.package] version = \"...\"`，**同时**把 `[workspace.dependencies]` 里所有 `czsc-* = { path = \"...\", version = \"...\" }` 的 version 字段都同步成新值（grep 出来一并改，否则 `cargo publish` 会拒绝）。\n2. **跑一次 `cargo check --workspace`** 让 `crates/czsc-python/build.rs` 的 ratchet 重新校验 pyproject.toml 仍走 dynamic。\n3. **CHANGELOG.md**：把 `## [Unreleased]` 改成 `## [NEW_VER] — TODAY`，并在它**上方插一个新的空 `[Unreleased]`** 块，结构如下：\n   ```markdown\n   ## [Unreleased]\n\n   _（待填）_\n\n   ---\n\n   ## [1.0.0-rc.8] — 2026-05-29\n\n   ### Added\n   ...（搬下来的内容）\n   ```\n4. **再跑一次 maturin develop + 烟测**确认 bump 后 .so 还能装、`__version__` 正确：\n   ```bash\n   uv run --no-sync maturin develop --release\n   uv run --no-sync python -c \"import czsc; print(czsc.__version__)\"   # 必须等于 NEW_VER 的 PEP440 形式\n   ```\n5. **提 commit**：\n   ```bash\n   git add Cargo.toml CHANGELOG.md\n   # 如果 step 1 改到了 workspace.dependencies，那些也加\n   git commit -m \"chore(release): bump ${NEW_VER}\"\n   ```\n\n### Phase 4 — 打 tag + push（不可逆，**必须先停下来征求授权**）\n\n`git tag` 在本地是可逆的，但 `git push origin tag` **触发 CI** 是不可逆的（CI 会真上传 PyPI / 发 crates.io 真 publish）。所以：\n\n**先用 AskUserQuestion 确认**，比如：\n\n> Phase 3 完成。即将执行：\n> 1. `git tag v1.0.0-rc.8` （本地）\n> 2. `git push origin master` （推 release commit）\n> 3. `git push origin v1.0.0-rc.8` （触发 python-publish 真上传 PyPI；rust-publish 默认 dry-run）\n>\n> 一旦推 tag 就**不能撤回**：PyPI 上的版本号占名后永远不能复用，要修问题只能 bump rc.9。\n> 继续吗？\n\n用户确认后：\n\n```bash\ngit tag \"v${NEW_VER}\"           # SemVer 前缀必须是 v，CI 监听 v*\ngit push origin master           # 先推 commit 再推 tag，避免 CI checkout 不到 commit\ngit push origin \"v${NEW_VER}\"    # 这一行触发 python-publish + rust-publish\n```\n\n### Phase 4.5 — Push 之前最后一道 ratchet：checklist §1 / §5 / §6 是否手核完？\n\nPhase 0 强制读了 `docs/release_checklist.md`。Phase 2 自动跑了 §3/§4/§9。但下面这些**本 skill 不能替你自动核**，push tag 之前必须确认用户已经手动完成：\n\n- [ ] checklist **§1**（代码/文档一致性 —— 3 段 rg 命令均无输出 / `czsc.xxx` 引用都还存在 / 已退役关键字没残留）\n- [ ] checklist **§5**（本地 wheel 构建 + 用 docker `--platform linux/arm64` 或 alpine 镜像验证 ARM/musllinux 加载成功）\n- [ ] checklist **§6 step 1**（TestPyPI 演练 —— breaking 版本强烈建议）\n\n**用 AskUserQuestion 把这三项列出来，明确询问\"全部已完成？是 / 否 / 跳过 + 理由\"**。任一项\"否\" → 拦下，告诉用户先核完再回来；\"跳过\" → 把理由记录在 release commit message 的 trailer 里（`Skipped-checklist-items: §5 (理由)`），future 复盘时能 trace。\n\n### Phase 5 — 监控 CI（直到 publish 成功或失败）\n\n```bash\ngh run list --workflow=python-publish.yml --limit 3\ngh run watch <run-id>     # 跟到 publish-to-pypi job 跑完\ngh run list --workflow=rust-publish.yml --limit 3\n```\n\n需要看到：\n- ✅ `python-publish.yml` 全绿 → PyPI 已发\n- ✅ `rust-publish.yml` 在 tag push 触发下**只是 dry-run**（这是设计；要真 publish crates.io 需手动 workflow_dispatch）\n\n如果 python-publish 失败 → 进入 [Phase 6 重发剧本](#phase-6--重发剧本)。\n\n如果 python-publish 成功 → **告诉用户去手动触发 rust-publish.yml**：\n\n```bash\ngh workflow run rust-publish.yml -f do_publish=true -f start_layer=0 -f end_layer=5\ngh run watch <run-id>\n```\n\n注意 crates.io rate-limit ≈ 1 个新 crate / 10 分钟。第一次发 czsc 系列新 crate 时，常常 layer 0/1 成功、layer 2 后被 rate-limit 拒；用 `start_layer` 参数从失败 layer 续发。\n\n### Phase 5.5 — 发布后验证（checklist §7）\n\n发布成功后**必须按 `docs/release_checklist.md` §7 逐项核完**：\n\n- [ ] PyPI 页面 6 平台 + sdist 齐全\n- [ ] crates.io 6 个 crate 都 OK（czsc-derive / czsc-signal-macros / czsc-core / czsc-ta / czsc-utils / czsc-signals / czsc-trader / czsc）\n- [ ] GitHub Release 包含 wheel + sdist + sigstore 签名\n- [ ] **干净环境冒烟（Python）**：用 `uv venv --seed`（带 pip）创建 tmp venv 后 `pip install czsc==<X.Y.Z>` + `python -c \"import czsc; print(czsc.__version__)\"`。⚠️ 不要在 czsc 仓库根目录跑 —— python path 会优先加载本地 czsc/ 路径而不是 PyPI wheel，给假阳性\n- [ ] **`cargo add czsc@=<X.Y.Z>` 在干净项目 `cargo check` 真编通过**（不只是\"可解析\"！1.0.0-rc.8 实战教训：解析成功但 cargo check 失败）：\n  ```bash\n  TMPD=$(mktemp -d); cd \"$TMPD\"\n  cargo init --name release_smoke --quiet\n  cargo add 'czsc@=<X.Y.Z>' --quiet\n  cargo check 2>&1 | tail -20      # 必须无 error\n  cargo tree -i polars-core 2>&1   # 必须单一版本\n  cd - && rm -rf \"$TMPD\"\n  ```\n  常见两类失败 → 见 [Phase 6 重发剧本](#phase-6--重发剧本) 后两行\n- [ ] 至少跑一个 `docs/examples/` demo 确认无运行时回归\n\n任一项失败 → 立刻在 GitHub Issue 记录、按 [Phase 6 重发剧本](#phase-6--重发剧本) 处理。**不要 yank 已上传的 X.Y.Z 版本本身**——版本号永久占名，必须 bump 下一个 patch/rc 重发。但**误发的混淆版本可以也应该 yank**（如 1.0.0 stable 与 1.0.0-rc.* 并存时 yank stable，避免 SemVer 解析坑）。\n\n### Phase 6 — 重发剧本（出错后）\n\nCHANGELOG 里 rc.2 → rc.3 → rc.4 → rc.5 是连续 4 次重发，写得很细。**主要坑**：\n\n| 症状 | 根因 | 修法 |\n|---|---|---|\n| `python-publish` 在 \"Verify version consistency\" 失败 | SemVer 与 PEP440 不一致（如 `1.0.0-rc.4` ↔ `1.0.0rc4`），workflow 拿字符串硬比 | 这个 bug 已在 rc.5 修；新出现就检查 `packaging.version.canonicalize_version` 翻译是否还在 |\n| build-wheels macOS 卡 1h+ | `macos-13` Intel runner pool 紧张 | 已切到 `macos-latest` cross-compile；不要回退 |\n| aarch64 manylinux2014 编译 `ring` 失败 ARM assembler 报错 | manylinux 镜像 cross-gcc 没传 `__ARM_ARCH` | 已加 `CFLAGS_aarch64_unknown_linux_gnu=\"-D__ARM_ARCH=8\"`；不要回退 |\n| `cargo check` 本地过 CI 挂 | 本地没带 `--all-targets`，test 模块没被 typecheck | Phase 2.1 已强制 `--all-targets`；本地必跑 |\n| `rust-publish` 中途断（rate-limit） | crates.io 新 crate ≈ 1/10min | `gh workflow run rust-publish.yml -f start_layer=N`，N 是失败 layer |\n| **下游 `cargo add czsc@=<X.Y.Z>` 解析到错误 stable 版本**（rc.8 实战） | crates.io 同时有 `1.0.0` stable 与 `1.0.0-rc.*`；workspace.dependencies 写 `version = \"<X.Y.Z>\"` 不带 `=`，cargo 按 SemVer 选 stable（stable > prerelease） | (a) 紧急：`cargo yank --version 1.0.0 <crate>` × 8 个 czsc-* crate，强制下游解析跳过 stable；(b) 永久：把 workspace.dependencies 改 `version = \"=<X.Y.Z>\"` 严格匹配 + bump 下一个 rc 重发 |\n| **下游 `cargo add` 编不出来 — pyo3 / pyo3-stub-gen / numpy 无条件依赖**（rc.8 实战） | czsc-core / czsc-utils / czsc-signals / czsc-trader 把 pyo3 系列列成无条件 dep，纯 Rust 用户也被强制拉 PyO3 工具链 | 4 个 crate Cargo.toml 把 pyo3 系列改 `optional = true` + 加 `[features] python = [\"pyo3\", \"pyo3-stub-gen\", \"numpy\", ...]`；facade czsc 默认 features 为空（纯 Rust）；bump 下一个 rc 重发；本地 `cargo check --no-default-features` 验证纯 Rust 路径 |\n\n**安全 bump 规则**（rc.4 → rc.5 的教训）：\n\n- 如果 wheel **build 成功但 publish step 没跑/失败**（PyPI 上没出现这个版本号）→ 同号修 + force-push tag 是**不允许**的（tag 已推过、CI 已跑过、commit 已上 master）。**只能 bump 下一个 rc 号**，把修复打进新版本。\n- 检查 PyPI 是否已经收到：`pip index versions czsc` 或 https://pypi.org/project/czsc/#history\n- 检查 crates.io：`cargo search czsc-core --limit 1`\n\n## 关键文件参考\n\n| 文件 | 角色 |\n|---|---|\n| **`docs/release_checklist.md`** | **权威清单（必读）**，9 节 / 214 行，本 skill 是它的可执行子集；详见顶部 [Mandatory References](#-mandatory-references必读且必须逐项核完才能进-phase-3) |\n| `Cargo.toml` (workspace root) | 唯一版本源 `[workspace.package].version` |\n| `pyproject.toml` | 必须 `dynamic = [\"version\"]`，禁止硬编码版本（`build.rs` ratchet 拦） |\n| `CHANGELOG.md` | Keep a Changelog 格式，`[Unreleased]` → `[X.Y.Z] — YYYY-MM-DD` |\n| `.github/workflows/python-publish.yml` | tag `v*` 触发，wheels + smoke + PyPI |\n| `.github/workflows/rust-publish.yml` | tag `v*` 触发 dry-run；workflow_dispatch + `do_publish=true` 真发 |\n| `crates/czsc-python/build.rs` | 编译期 ratchet：pyproject.toml 不能硬编码 version |\n| `czsc/__init__.py` | `__version__ = importlib.metadata.version(\"czsc\")` 反查 |\n\n## 触发场景速查\n\n下面这些用户表达**都应该启用本 skill**：\n\n- \"发版 czsc rc.N\"、\"出 rc.N+1\"、\"准备 1.0.0 stable\"\n- \"bump 版本号\"、\"bump 到 X.Y.Z\"\n- \"release\"、\"publish czsc\"、\"推 PyPI\"、\"发 crates.io\"\n- \"CHANGELOG [Unreleased] 落档\"\n- \"tag vX.Y.Z\"、\"打 release tag\"\n- \"上次 publish 失败，重发\"、\"rc 重发\"\n\n## 不要做的事\n\n- ❌ **不要跳过 `docs/release_checklist.md` 的任何一节**——Phase 0 必须 Read 全文，Phase 2 跑 §3+§4+§9 子集，Phase 4.5 显式核 §1+§5+§6 step 1，Phase 5.5 核 §7。任一节\"省略\"都属违规\n- ❌ 不要在 fail 状态下跳过 Phase 2 预检——历史 4 次重发都是这么开始的\n- ❌ 不要替用户跑 `git push origin <tag>`——必须 AskUserQuestion 后再做\n- ❌ 不要为了\"快\"在 rc 期间 force-push 同号 tag——PyPI/crates.io 版本号占名后永久不能复用\n- ❌ 不要在 pyproject.toml 里写死 `version = \"X.Y.Z\"`——会被 build.rs 编译期拦下\n- ❌ 不要只 bump `[workspace.package].version` 而漏掉 `[workspace.dependencies]` 里 czsc-* 的 version 字段——`cargo publish` 会拒绝\n- ❌ 不要在 master 之外的分支打 release tag——CI checkout 的是 tag 指向的 commit，但 master 历史会缺失\n",".claude/skills/czsc-release/references/release_checklist.md":"# Release Checklist —— 权威版本指针\n\n> ⚠️ **不要在此处复制 checklist 内容** —— 会与项目根的权威版本漂移。\n>\n> 完整清单（9 节、214 行）保存在仓库根目录：\n>\n> 👉 **[`docs/release_checklist.md`](../../../../docs/release_checklist.md)**\n>\n> 维护者修改清单时**只改 `docs/release_checklist.md` 这一份**，本指针文件不需要同步更新。\n\n## 为什么本目录不放副本\n\n- **单源不漂移**：复制一份到 references/ 后，每次更新都得改两处；漂移后 LLM 不知道该信哪份。\n- **不用 symlink**：跨 OS（Windows）+ 某些 git 配置下软链接行为不一致；skill 可能被复制/分发到其他工作目录，断链后 silent 失败。\n- **保留 references/ 目录结构**：符合 Anthropic skill convention（references/ 承载参考材料），让 SKILL.md 的引用路径稳定。\n\n## SKILL.md 是怎么用这份清单的\n\n`../SKILL.md` 在 **Phase 0** 和 **Phase 2** 把这份清单作为 **ratchet** 强制引入：\n\n- **Phase 0**：用 `Read` 工具读 `docs/release_checklist.md` 全文（一次性，加载到上下文）。\n- **Phase 2 预检**：把 docs §3 / §4 / §5 / §9 的命令逐条跑完；任何一条 fail → 停。\n- **不许跳**：哪怕\"只是 docs 改动\"也要按 §1 跑代码/文档一致性检查（`czsc.xxx` 引用是否还存在、已退役关键字是否还有残留、文件路径是否还在）—— 历史教训里大量发版事故来自\"docs 改了但忘了 push、或 docs 引用了已删 API 让下游 demo 炸\"。\n\n## 9 节速览（详情看 docs）\n\n1. **代码冻结前**：所有 PR 已合 / CHANGELOG 已更 / 迁移说明已写；**代码 ↔ Markdown 文档一致性硬性检查**（含 3 段命令找漂移）\n2. **版本号**：SemVer 决策树、单一版本源、prerelease 规则\n3. **本地 Rust 验证**：cargo fmt / clippy / test / stub_gen + git diff 校验\n4. **本地 Python 验证**：`pytest --run-slow`、ruff、冒烟 import 链\n5. **本地 Wheel 验证**：含 Linux aarch64 / musllinux 的 docker 验证（CI 不覆盖）\n6. **发布动作**：TestPyPI 演练 → tag push 触发 PyPI 真发 → 手动 dispatch crates.io 真发\n7. **发布后验证**：PyPI / crates.io 页面、GitHub Release、干净环境冒烟\n8. **隐藏缺陷雷达**：按历史踩坑频度排序的 10 项风险表\n9. **一键自检脚本**：把 §3+§4+§5 串成可跑的 bash 一脚本\n",".claude/skills/czsc-write-signal-function/SKILL.md":"---\nname: czsc-write-signal-function\ndescription: 为 rs_czsc 编写或重构 Rust 信号函数（bar/tas/cxt/pos）并接入事件驱动链路（`#[signal]` 自动注册、SignalConfig、Event/Position 匹配）的工作流。遇到“新增信号函数”“修改信号模板”“注册信号函数”“排查信号不触发”时使用。\n---\n\n# CZSC Signal Authoring\n\n## Overview\n\n用这个技能在 `rs_czsc` 中稳定完成信号函数开发：\n1. 判断信号类型（K线级 / Trader级）\n2. 编写函数并保持 `Signal` 7段格式\n3. 注册到正确注册表\n4. 用 `SignalConfig` 和测试验证是否能触发 `Event -> Position`\n\n先读：\n- `references/event-driven-signal-pipeline.md`\n- `references/signal-function-patterns.md`\n\n需要快速起草函数时，先运行：\n- `scripts/new_signal_stub.py`\n\n## Decision Tree\n\n1. 需要访问仓位（`Position`）或策略状态吗？\n- 是：写 Trader 级信号（`pos.rs` 风格），用 `#[signal(category = \"trader\", ...)]` 自动注册。\n- 否：写 K线级信号（`bar/tas/cxt` 风格），用 `#[signal(category = \"kline\", ...)]` 自动注册。\n\n2. 需要技术指标缓存吗？\n- 是：使用 `TaCache`，优先走 `update_*_cache`。\n- 否：保留 `_cache` 参数但不使用。\n\n3. 需要多个输出信号吗？\n- 是：返回 `Vec<Signal>`，每个信号都保持 7 段格式。\n- 否：返回单元素 `Vec`。\n\n## Workflow\n\n1. 明确输入输出\n- 明确函数输入参数（`params`）和默认值。\n- 明确 `k1/k2/k3` 模板和 `v1/v2/v3` 语义。\n- 明确“数据不足时”返回策略：通常返回 `vec![]` 或 `其他` 信号。\n\n2. 实现函数\n- K线级函数签名：`fn(&CZSC, &ParamView, &mut TaCache) -> Vec<Signal>`。\n- Trader级函数签名：`fn(&dyn TraderState, &ParamView) -> Vec<Signal>`。\n- 参数解析优先复用工具：`get_usize_param` / `get_str_param`。\n- 必须写详细注释（硬性格式，不可省略小节）：\n  - 标题行：`/// <func_name>：<一句话功能>`\n  - `///`\n  - `/// 参数模板：\\`\"...\"\\``\n  - `///`\n  - `/// 信号逻辑：`\n  - `/// 1. ...`\n  - `/// 2. ...`\n  - `/// 3. ...`\n  - `///`\n  - `/// 信号列表示例：`\n  - `/// - Signal('...')`\n  - `/// - Signal('...')`\n  - `///`\n  - `/// 参数说明：`\n  - `/// - <param>: <含义与默认值>`\n  - `/// - <param>: <含义与默认值>`\n  - 与 Python 或历史版本对齐时，必须补一行：`/// 对齐说明：...`\n- 关键分支注释：说明为什么这么判定，而不是只写“做了什么”。\n- 用 `format!` 拼出完整字符串：`k1_k2_k3_v1_v2_v3_score`。\n- 用 `Signal::from_str(...)` 或 `parse::<Signal>()` 做最终构造。\n\n3. 接入注册表\n- 在函数上添加 `#[signal(...)]`，由 `inventory` 自动收集。\n- 注册名与函数名保持一一对应（注意 `_V` 与 `_v` 大小写风格）。\n- 在 `#[signal(...)]` 中给出 `template`，确保 `SignalConfig` 反解析和人类阅读一致。\n\n4. 接入调用侧\n- K线级：通过 `SignalConfig { name, freq: Some(...), params }` 在 `CzscSignals::update_signals` 中执行。\n- Trader级：通过 `SignalConfig { name, freq: None, params }` 在 `CzscTrader::update` 的 Trader 信号分支执行。\n\n5. 验证\n- 至少验证：\n  - 函数在样本上可运行，不 panic。\n  - 输出信号可被 `Signal` 正常解析（7段、score 0~100）。\n  - 注册后能被 `SignalConfig.name` 命中。\n  - 若用于交易事件，`Event.matches_signals*` 能按预期触发。\n  - 注释完整：他人仅看注释可理解参数、边界、输出语义和关键判定。\n- 优先补充/运行相关测试：`signal_compare_tests`、`trader_tests` 或新增针对性测试。\n- 注释格式校验（提交前必须人工检查）：\n  - 每个新/改信号函数都包含 `参数模板/信号逻辑/信号列表示例/参数说明` 四段。\n  - `信号列表示例` 至少 2 条，且与当前函数输出字段一致（`k1_k2_k3_v1_v2_v3_score`）。\n\n## Guardrails\n\n- 不要输出非 7 段信号；否则会在 `Signal::from_str` 失败。\n- 不要忽略大小写差异；注册表键是精确匹配。\n- 不要在数据长度不足时硬算；先做边界检查。\n- 不要绕过 `TaCache` 重复全量计算重指标。\n- 不要在函数里偷偷改全局状态；保持纯计算风格（Trader级仅读取状态）。\n- 不要写空洞注释（如“计算信号”）；注释要解释判定依据和业务语义。\n\n## Resources\n\n- 架构与触发链路：`references/event-driven-signal-pipeline.md`\n- 函数模板与常见坑：`references/signal-function-patterns.md`\n- 骨架生成器：`scripts/new_signal_stub.py`\n",".claude/skills/czsc-write-signal-function/agents/openai.yaml":"interface:\n  display_name: \"CZSC Signal Writer\"\n  short_description: \"Write Rust CZSC signal functions and wire registries\"\n  default_prompt: \"Use $czsc-write-signal-function to implement and register a new CZSC signal function.\"\n",".claude/skills/czsc-write-signal-function/references/event-driven-signal-pipeline.md":"# Event-Driven Signal Pipeline (rs_czsc)\n\n## 1. 总体调用链\n\n1. `CzscTrader::update` 接收一根 `RawBar`\n2. `CzscSignals::update_signals` 计算本根所有 K线级信号\n3. `CzscTrader::update` 额外执行 Trader 级信号（pos 系列）\n4. 合并信号后调用每个 `Position::update`\n5. `Position` 按 `opens + exits` 顺序匹配 `Event`\n6. `Event` 内部通过 `signals_not -> signals_all -> signals_any` 判定\n7. 匹配后产生命令（`LO/LE/SO/SE/...`）并更新持仓记录\n\n## 2. 关键文件\n\n- `crates/czsc-trader/src/trader.rs`\n  - 交易主入口；组织信号计算与仓位更新\n- `crates/czsc-trader/src/signals/czsc_signals.rs`\n  - K线级信号执行器；维护 `s` 与 `sigs`\n- `crates/czsc-signals/src/registry.rs`\n  - 汇总 `inventory` 自动收集的 `SignalDescriptor` 到运行时注册表\n- `crates/czsc-signals/src/types.rs`\n  - 信号函数签名类型定义\n- `crates/czsc-core/src/objects/signal.rs`\n  - `Signal` 7段格式、`is_match`\n- `crates/czsc-core/src/objects/event.rs`\n  - `Event` 匹配逻辑\n- `crates/czsc-core/src/objects/position.rs`\n  - `Position::update` 执行开平仓规则\n- `crates/czsc-core/src/objects/state.rs`\n  - `TraderState` trait（给 Trader 级信号读状态）\n\n## 3. 两类信号函数\n\n### K线级信号（bar / tas / cxt）\n\n- 签名：\n`fn(&CZSC, &ParamView, &mut TaCache) -> Vec<Signal>`\n- 注册方式：函数上 `#[signal(category = \"kline\", ...)]` 自动收集\n- 调用路径：`CzscSignals::update_signals`\n- 适用场景：仅依赖某个周期的 K 线结构和指标\n\n### Trader级信号（pos）\n\n- 签名：\n`fn(&dyn TraderState, &ParamView) -> Vec<Signal>`\n- 注册方式：函数上 `#[signal(category = \"trader\", ...)]` 自动收集\n- 调用路径：`CzscTrader::update` 中 `freq.is_none()` 分支\n- 适用场景：需要 `Position` + `CZSC` 联合状态\n\n## 4. 信号字符串规则\n\n`Signal` 必须满足：\n- 格式：`k1_k2_k3_v1_v2_v3_score`\n- 总段数：7 段\n- `score`：0~100\n\n`CzscSignals` 会把它拆成：\n- key：`k1_k2_k3`\n- value：`v1_v2_v3_score`\n\n`Event` 匹配时用 `Signal::is_match`：\n- `score >= 事件要求score`\n- `v1/v2/v3` 精确匹配或事件侧为 `任意`\n\n## 5. 开发时最常见断点\n\n- 注册表 name 与 `SignalConfig.name` 不一致（大小写、`_V`/`_v`）\n- 输出不是 7 段，导致 `Signal::from_str` 失败\n- `freq` 设置错误：\n  - K线级应为 `Some(freq)`\n  - Trader级应为 `None`\n- 数据不足未做边界检查，触发索引错误或无意义信号\n\n## 6. 最小联调路径\n\n1. 在 `czsc-signals` 实现函数并添加 `#[signal(...)]` 标注\n2. 构造 `SignalConfig`\n3. 用 `CzscTrader::update` 喂历史 bars\n4. 检查：\n   - `trader.signals.s` 中是否有目标 key\n   - `trader.signals.sigs` 中是否出现目标 `Signal`\n   - `position.operates` 是否按预期变化\n",".claude/skills/czsc-write-signal-function/references/signal-function-patterns.md":"# Signal Function Patterns\n\n## 0. 注释规范（必须）\n\n每个新信号函数都必须包含以下注释层级：\n\n- 函数文档注释（`///`）至少写清 4 件事：\n  - 信号在策略中的业务含义\n  - 参数模板字符串（`param_template`）\n  - 核心判定逻辑（触发条件）\n  - 边界行为（数据不足返回什么）\n- 关键分支前写“原因注释”，解释判定依据和设计意图。\n- 与 Python/旧版行为对齐时，标注“对齐对象”和“为何这样对齐”。\n\n## 1. K线级函数模板（bar/tas/cxt）\n\n```rust\nuse crate::params::ParamView;\nuse crate::types::TaCache;\nuse crate::utils::sig::{get_str_param, get_usize_param};\nuse czsc_core::analyze::CZSC;\nuse czsc_core::objects::signal::Signal;\nuse czsc_signal_macros::signal;\n\n/// xxx_v240101: 示例信号\n///\n/// 参数模板：\"{freq}_D{di}{key}_示例V240101\"\n/// 信号语义：当满足示例条件时输出目标状态，否则输出“其他”。\n/// 边界行为：当 bars 不足以支持 di 回看时，返回空信号。\n#[signal(\n    category = \"kline\",\n    name = \"xxx_V240101\",\n    template = \"{freq}_D{di}{key}_示例V240101\",\n    opcode = \"XxxV240101\",\n    param_kind = \"XxxV240101\"\n)]\npub fn xxx_v240101(\n    czsc: &CZSC,\n    params: &ParamView,\n    cache: &mut TaCache,\n) -> Vec<Signal> {\n    let di = get_usize_param(params, \"di\", 1);\n    let key = get_str_param(params, \"key\", \"DEFAULT\");\n\n    // 1) 边界检查：数据不足时不输出错误信号，直接返回空结果。\n    if czsc.bars_raw.len() < di + 2 {\n        return vec![];\n    }\n\n    // 2) 计算 k1/k2/k3 与 v1/v2/v3：\n    // k1/k2/k3 用于事件匹配 key，v1/v2/v3 承载状态值语义。\n    let k1 = czsc.freq.to_string();\n    let k2 = format!(\"D{}{}\", di, key);\n    let k3 = \"示例V240101\";\n    let v1 = \"其他\";\n    let v2 = \"任意\";\n    let v3 = \"任意\";\n\n    // 3) 严格 7 段\n    let sig_str = format!(\"{}_{}_{}_{}_{}_{}_0\", k1, k2, k3, v1, v2, v3);\n    Signal::from_str(&sig_str).map_or_else(|_| vec![], |s| vec![s])\n}\n```\n\n## 2. Trader级函数模板（pos）\n\n```rust\nuse crate::params::ParamView;\nuse crate::utils::sig::get_str_param;\nuse czsc_core::objects::signal::Signal;\nuse czsc_core::objects::state::TraderState;\nuse czsc_signal_macros::signal;\nuse std::str::FromStr;\n\n/// pos_xxx_v240101: 示例 Trader 级信号\n///\n/// 参数模板：\"{pos_name}_示例V240101\"\n/// 信号语义：根据仓位是否存在输出“有效/其他”。\n/// 边界行为：缺少 pos_name 或查询不到仓位时输出“其他”。\n#[signal(\n    category = \"trader\",\n    name = \"pos_xxx_V240101\",\n    template = \"{pos_name}_示例V240101\",\n    opcode = \"PosXxxV240101\",\n    param_kind = \"PosXxxV240101\"\n)]\npub fn pos_xxx_v240101(cat: &dyn TraderState, params: &ParamView) -> Vec<Signal> {\n    let pos_name = get_str_param(params, \"pos_name\", \"\").to_string();\n\n    let k1 = format!(\"{}_状态\", pos_name);\n    let k2 = \"其他\";\n    let k3 = \"示例V240101\";\n\n    // Trader 级信号必须解释“为何读取 trader 状态”，避免后续误改为纯 K线逻辑。\n    let v1 = if cat.get_position(&pos_name).is_some() {\n        \"有效\"\n    } else {\n        \"其他\"\n    };\n\n    let sig_str = format!(\"{}_{}_{}_{}_任意_任意_0\", k1, k2, k3, v1);\n    Signal::from_str(&sig_str).map_or_else(|_| vec![], |s| vec![s])\n}\n```\n\n## 3. 注册模板\n\n通过 `#[signal(...)]` 自动注册，无需手写 `registry.rs` 列表。\n关键字段：\n\n```rust\n#[signal(\n    category = \"kline|trader\",\n    name = \"..._Vxxxxxx\",\n    template = \"...\",\n    opcode = \"...\",\n    param_kind = \"...\"\n)]\n```\n\n## 4. 参数与模板约束\n\n- `params` key 名与模板占位符保持一致。\n- 模板中 `freq` 表示周期；Trader 级常常不用 `freq` 字段做路由，依赖 `freq1` 之类业务参数。\n- 维护 `k2/k3` 语义稳定，避免同名逻辑漂移。\n\n## 5. 事件触发兼容性检查\n\n新增信号用于事件时，先写出事件侧信号字符串，再倒推函数输出：\n\n1. 事件侧 `Signal` 是否 7 段且 score 合法\n2. 事件侧 `k1_k2_k3` 是否与函数输出完全一致\n3. 事件侧 `v1/v2/v3` 是否允许 `任意`\n4. 事件侧 score 是否不高于函数输出 score\n\n## 6. 常见坑\n\n- 在 `SignalConfig` 里用错注册名（尤其 `_V` 大写）\n- `freq: None` / `Some` 配置反了，导致函数完全不被调度\n- 直接 `unwrap` 导致边界数据 panic；优先 `map_or_else` 或早返回\n- 函数输出多信号时 key 冲突未预期，后写会覆盖 `s` 字典同 key 值\n",".claude/skills/signal-functions/SKILL.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2FSKILL.md -->",".claude/skills/signal-functions/references/signals-ang.md":"# ang 模块信号索引\n\n> 源码: `crates/czsc-signals/src/ang.rs`\n> 共 10 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `adtm_up_dw_line_V230603` | `\"{freq}_D{di}N{n}M{m}TH{th}_ADTMV230603` | ADTM 能量异动多空信号 | [详细文档](signals/adtm_up_dw_line_V230603.md) |\n| `amv_up_dw_line_V230603` | `\"{freq}_D{di}N{n}M{m}_AMV能量V230603` | AMV 能量多空信号 | [详细文档](signals/amv_up_dw_line_V230603.md) |\n| `asi_up_dw_line_V230603` | `\"{freq}_D{di}N{n}P{p}_ASI多空V230603` | ASI 多空信号 | [详细文档](signals/asi_up_dw_line_V230603.md) |\n| `bias_up_dw_line_V230618` | `\"{freq}_D{di}N{n}M{m}P{p}TH1{th1}TH2{th2}TH3{th3}_BIAS乖离率V230618` | BIAS 三周期共振信号 | [详细文档](signals/bias_up_dw_line_V230618.md) |\n| `cmo_up_dw_line_V230605` | `\"{freq}_D{di}N{n}M{m}_CMO能量V230605` | CMO 能量阈值信号 | [详细文档](signals/cmo_up_dw_line_V230605.md) |\n| `dema_up_dw_line_V230605` | `\"{freq}_D{di}N{n}_DEMA短线趋势V230605` | DEMA 短线趋势信号 | [详细文档](signals/dema_up_dw_line_V230605.md) |\n| `demakder_up_dw_line_V230605` | `\"{freq}_D{di}N{n}TH{th}TL{tl}_DEMAKER价格趋势V230605` | DEMAKER 价格趋势信号 | [详细文档](signals/demakder_up_dw_line_V230605.md) |\n| `emv_up_dw_line_V230605` | `\"{freq}_D{di}_EMV简易波动V230605` | EMV 简易波动多空信号 | [详细文档](signals/emv_up_dw_line_V230605.md) |\n| `er_up_dw_line_V230604` | `\"{freq}_D{di}W{w}N{n}_ER价格动量V230604` | ER 价格动量分层信号 | [详细文档](signals/er_up_dw_line_V230604.md) |\n| `skdj_up_dw_line_V230611` | `\"{freq}_D{di}N{n}M{m}UP{up}DW{dw}_SKDJ随机波动V230611` | SKDJ 随机波动信号 | [详细文档](signals/skdj_up_dw_line_V230611.md) |\n",".claude/skills/signal-functions/references/signals-bar.md":"# bar 模块信号索引\n\n> 源码: `crates/czsc-signals/src/bar.rs`\n> 共 46 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `bar_accelerate_V221110` | `\"{freq}_D{di}W{window}_加速V221110` | 区间加速走势判定 | [详细文档](signals/bar_accelerate_V221110.md) |\n| `bar_accelerate_V221118` | `\"{freq}_D{di}W{window}#{ma_type}#{timeperiod}_加速V221118` | 均线偏离加速判定 | [详细文档](signals/bar_accelerate_V221118.md) |\n| `bar_accelerate_V240428` | `\"{freq}_D{di}W{w}T{t}_加速V240428` | 滚动差分加速判定 | [详细文档](signals/bar_accelerate_V240428.md) |\n| `bar_amount_acc_V230214` | `\"{freq}_D{di}N{n}_累计超{t}千万` | 区间累计成交额信号 | [详细文档](signals/bar_amount_acc_V230214.md) |\n| `bar_big_solid_V230215` | `\"{freq}_D{di}N{n}_MIDV230215` | 窗口最大实体中位多空信号 | [详细文档](signals/bar_big_solid_V230215.md) |\n| `bar_bpm_V230227` | `\"{freq}_D{di}N{n}T{th}_绝对动量V230227` | 绝对动量分层 | [详细文档](signals/bar_bpm_V230227.md) |\n| `bar_break_V240428` | `\"{freq}_D{di}W{w}_事件V240428` | 收盘极值突破 | [详细文档](signals/bar_break_V240428.md) |\n| `bar_channel_V230508` | `\"{freq}_D{di}M{m}_通道V230507` | 窄幅通道方向判定 | [详细文档](signals/bar_channel_V230508.md) |\n| `bar_classify_V240606` | `\"{freq}_D{di}收盘位置_分类V240606` | 单根K线收盘位置分类 | [详细文档](signals/bar_classify_V240606.md) |\n| `bar_classify_V240607` | `\"{freq}_D{di}K2收盘位置_分类V240607` | 两根K线收盘位置分类 | [详细文档](signals/bar_classify_V240607.md) |\n| `bar_decision_V240608` | `\"{freq}_W{w}N{n}Q{q}放量_决策区域V240608` | 放量反向决策区 | [详细文档](signals/bar_decision_V240608.md) |\n| `bar_decision_V240616` | `\"{freq}_W{w}N{n}强弱_决策区域V240616` | 新高新低后的强弱决策 | [详细文档](signals/bar_decision_V240616.md) |\n| `bar_dual_thrust_V230403` | `\"{freq}_D{di}通道突破#{N}#{K1}#{K2}_BS辅助V230403` | Dual Thrust 通道突破 | [详细文档](signals/bar_dual_thrust_V230403.md) |\n| `bar_eight_V230702` | `\"{freq}_D{di}#8K_走势分类V230702` | 8K 走势分类 | [详细文档](signals/bar_eight_V230702.md) |\n| `bar_end_V221211` | `\"{freq}_{freq1}结束_BS辅助221211` | 判断大周期K线是否闭合 | [详细文档](signals/bar_end_V221211.md) |\n| `bar_fake_break_V230204` | `\"{freq}_D{di}N{n}M{m}_假突破V230204` | 区间假突破判定 | [详细文档](signals/bar_fake_break_V230204.md) |\n| `bar_fang_liang_break_V221216` | `\"{freq}_D{di}TH{th}#{ma_type}#{timeperiod}_突破V221216` | 放量突破与缩量回踩 | [详细文档](signals/bar_fang_liang_break_V221216.md) |\n| `bar_limit_down_V230525` | `\"{freq}_跌停后无下影线长实体阳线_短线V230525` | 跌停后反包阳线 | [详细文档](signals/bar_limit_down_V230525.md) |\n| `bar_mean_amount_V221112` | `\"{freq}_D{di}K{n}B均额_{th1}至{th2}千万` | 区间均额分类信号 | [详细文档](signals/bar_mean_amount_V221112.md) |\n| `bar_operate_span_V221111` | `\"{freq}_T{t1}#{t2}_时间区间V221111` | 日内时间区间过滤 | [详细文档](signals/bar_operate_span_V221111.md) |\n| `bar_plr_V240427` | `\"{freq}_D{di}W{w}T{t}M{m}_盈亏比V240427` | 盈亏比约束 | [详细文档](signals/bar_plr_V240427.md) |\n| `bar_polyfit_V240428` | `\"{freq}_D{di}W{w}_分类V240428` | 一阶二阶拟合分类 | [详细文档](signals/bar_polyfit_V240428.md) |\n| `bar_r_breaker_V230326` | `\"{freq}_RBreaker_BS辅助V230326` | RBreaker 价格位判定 | [详细文档](signals/bar_r_breaker_V230326.md) |\n| `bar_reversal_V230227` | `\"{freq}_D{di}A{avg_bp}_反转V230227` | 末根反转迹象判定 | [详细文档](signals/bar_reversal_V230227.md) |\n| `bar_section_momentum_V221112` | `\"{freq}_D{di}K{n}B_阈值{th}BPV221112` | 区间动量强弱与波动 | [详细文档](signals/bar_section_momentum_V221112.md) |\n| `bar_shuang_fei_V230507` | `\"{freq}_D{di}双飞_短线V230507` | 双飞涨停形态 | [详细文档](signals/bar_shuang_fei_V230507.md) |\n| `bar_single_V230214` | `\"{freq}_D{di}T{t}_状态V230214` | 单K状态信号 | [详细文档](signals/bar_single_V230214.md) |\n| `bar_single_V230506` | `\"{freq}_D{di}单K趋势N{n}_BS辅助V230506` | 单K趋势分层信号 | [详细文档](signals/bar_single_V230506.md) |\n| `bar_td9_V240616` | `\"{freq}_神奇九转N{n}_BS辅助V240616` | 神奇九转计数 | [详细文档](signals/bar_td9_V240616.md) |\n| `bar_time_V230327` | `\"{freq}_日内时间_分段V230327` | 日内时间分段信号 | [详细文档](signals/bar_time_V230327.md) |\n| `bar_tnr_V230629` | `\"{freq}_D{di}TNR{timeperiod}_趋势V230629` | TNR 分层信号 | [详细文档](signals/bar_tnr_V230629.md) |\n| `bar_tnr_V230630` | `\"{freq}_D{di}TNR{timeperiod}K{k}_趋势V230630` | TNR 噪音变化判定 | [详细文档](signals/bar_tnr_V230630.md) |\n| `bar_trend_V240209` | `\"{freq}_D{di}N{N}趋势跟踪_BS辅助V240209` | 趋势跟踪结构判定 | [详细文档](signals/bar_trend_V240209.md) |\n| `bar_triple_V230506` | `\"{freq}_D{di}三K加速_裸K形态V230506` | 三K加速形态信号 | [详细文档](signals/bar_triple_V230506.md) |\n| `bar_vol_bs1_V230224` | `\"{freq}_D{di}N{n}量价_BS1辅助V230224` | 量价高低点辅助 | [详细文档](signals/bar_vol_bs1_V230224.md) |\n| `bar_vol_grow_V221112` | `\"{freq}_D{di}K{n}B_放量V221112` | 成交量放大信号 | [详细文档](signals/bar_vol_grow_V221112.md) |\n| `bar_volatility_V241013` | `\"{freq}_波动率分层W{w}N{n}_完全分类V241013` | 波动率三层分类 | [详细文档](signals/bar_volatility_V241013.md) |\n| `bar_weekday_V230328` | `\"{freq}_周内时间_分段V230328` | 周内时间分段信号 | [详细文档](signals/bar_weekday_V230328.md) |\n| `bar_window_ps_V230731` | `\"{freq}_W{w}M{m}N{n}L{l}_支撑压力位V230731` | 支撑压力位分位特征 | [详细文档](signals/bar_window_ps_V230731.md) |\n| `bar_window_ps_V230801` | `\"{freq}_N{n}W{w}_支撑压力位V230801` | 支撑压力位窗口极值 | [详细文档](signals/bar_window_ps_V230801.md) |\n| `bar_window_std_V230731` | `\"{freq}_D{di}W{w}M{m}N{n}_窗口波动V230731` | 窗口波动分层特征 | [详细文档](signals/bar_window_std_V230731.md) |\n| `bar_zdf_V221203` | `\"{freq}_D{di}{mode}_{t1}至{t2}` | 单根涨跌幅区间信号 | [详细文档](signals/bar_zdf_V221203.md) |\n| `bar_zdt_V230331` | `\"{freq}_D{di}_涨跌停V230331` | 涨跌停识别信号 | [详细文档](signals/bar_zdt_V230331.md) |\n| `bar_zfzd_V241013` | `\"{freq}_窄幅震荡N{n}_形态V241013` | 窄幅震荡（全重叠） | [详细文档](signals/bar_zfzd_V241013.md) |\n| `bar_zfzd_V241014` | `\"{freq}_窄幅震荡N{n}_形态V241014` | 窄幅震荡（最大实体重叠） | [详细文档](signals/bar_zfzd_V241014.md) |\n| `bar_zt_count_V230504` | `\"{freq}_D{di}W{window}涨停计数_裸K形态V230504` | 窗口涨停计数 | [详细文档](signals/bar_zt_count_V230504.md) |\n",".claude/skills/signal-functions/references/signals-byi.md":"# byi 模块信号索引\n\n> 源码: `crates/czsc-signals/src/byi.rs`\n> 共 5 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `byi_bi_end_V230106` | `\"{freq}_D0停顿分型_BE辅助V230106` | 分型停顿辅助笔结束信号 | [详细文档](signals/byi_bi_end_V230106.md) |\n| `byi_bi_end_V230107` | `\"{freq}_D0验证分型_BE辅助V230107` | 验证分型辅助笔结束信号 | [详细文档](signals/byi_bi_end_V230107.md) |\n| `byi_fx_num_V230628` | `\"{freq}_D{di}笔分型数大于{num}_BE辅助V230628` | 前笔分型数量约束信号 | [详细文档](signals/byi_fx_num_V230628.md) |\n| `byi_second_bs_V230324` | `\"{freq}_D{di}MACD{fastperiod}#{slowperiod}#{signalperiod}回抽零轴_BS2辅助V230324` | 二类买卖点辅助信号 | [详细文档](signals/byi_second_bs_V230324.md) |\n| `byi_symmetry_zs_V221107` | `\"{freq}_D{di}B_对称中枢` | 对称中枢识别信号 | [详细文档](signals/byi_symmetry_zs_V221107.md) |\n",".claude/skills/signal-functions/references/signals-cat.md":"# cat 模块信号索引\n\n> 源码: `crates/czsc-signals/src/cat.rs`\n> 共 2 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `cat_macd_V230518` | `\"{freq1}#{freq2}_MACD交叉_联立V230518` | 高低级别 MACD 交叉联立信号 | [详细文档](signals/cat_macd_V230518.md) |\n| `cat_macd_V230520` | `\"{freq1}#{freq2}_MACD交叉_联立V230520` | 高低级别 MACD 缩柱联立信号 | [详细文档](signals/cat_macd_V230520.md) |\n",".claude/skills/signal-functions/references/signals-clv.md":"# clv 模块信号索引\n\n> 源码: `crates/czsc-signals/src/clv.rs`\n> 共 1 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `clv_up_dw_line_V230605` | `\"{freq}_D{di}N{n}_CLV多空V230605` | CLV 多空信号 | [详细文档](signals/clv_up_dw_line_V230605.md) |\n",".claude/skills/signal-functions/references/signals-coo.md":"# coo 模块信号索引\n\n> 源码: `crates/czsc-signals/src/coo.rs`\n> 共 5 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `coo_cci_V230323` | `\"{freq}_D{di}CCI{n}#{ma_type}#{m}_BS辅助V230323` | CCI 结合均线的多空与方向信号 | [详细文档](signals/coo_cci_V230323.md) |\n| `coo_kdj_V230322` | `\"{freq}_D{di}KDJ{fastk_period}#{slowk_period}#{slowd_period}#{ma_type}#{n}_BS辅助V230322` | 均线与 KDJ 配合多空信号 | [详细文档](signals/coo_kdj_V230322.md) |\n| `coo_sar_V230325` | `\"{freq}_D{di}N{n}SAR_BS辅助V230325` | SAR 与区间极值配合信号 | [详细文档](signals/coo_sar_V230325.md) |\n| `coo_td_V221110` | `\"{freq}_D{di}K_TD` | TD 神奇九转信号（旧版模板） | [详细文档](signals/coo_td_V221110.md) |\n| `coo_td_V221111` | `\"{freq}_D{di}TD_BS辅助V221111` | TD 神奇九转信号 | [详细文档](signals/coo_td_V221111.md) |\n",".claude/skills/signal-functions/references/signals-cvolp.md":"# cvolp 模块信号索引\n\n> 源码: `crates/czsc-signals/src/cvolp.rs`\n> 共 1 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `cvolp_up_dw_line_V230612` | `\"{freq}_D{di}N{n}M{m}UP{up}DW{dw}_CVOLP动量变化率V230612` | CVOLP 动量变化率信号 | [详细文档](signals/cvolp_up_dw_line_V230612.md) |\n",".claude/skills/signal-functions/references/signals-cxt.md":"# cxt 模块信号索引\n\n> 源码: `crates/czsc-signals/src/cxt.rs`\n> 共 41 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `cxt_bi_base_V230228` | `\"{freq}_D0BL{bi_init_length}_V230228` | 笔基础状态信号 | [详细文档](signals/cxt_bi_base_V230228.md) |\n| `cxt_bi_end_V230104` | `\"{freq}_D0{ma_type}#{timeperiod}T{th}_BE辅助V230104` | 单均线辅助判断笔结束 | [详细文档](signals/cxt_bi_end_V230104.md) |\n| `cxt_bi_end_V230105` | `\"{freq}_D0{ma_type}#{timeperiod}T{th}_BE辅助V230105` | K线形态+均线辅助判断笔结束 | [详细文档](signals/cxt_bi_end_V230105.md) |\n| `cxt_bi_end_V230222` | `\"{freq}_D1MO{max_overlap}_BE辅助V230222` | 未完成笔分型新高新低次数 | [详细文档](signals/cxt_bi_end_V230222.md) |\n| `cxt_bi_end_V230224` | `\"{freq}_D1_BE辅助V230224` | 量价配合笔结束辅助 | [详细文档](signals/cxt_bi_end_V230224.md) |\n| `cxt_bi_end_V230312` | `\"{freq}_D0MACD{fastperiod}#{slowperiod}#{signalperiod}_BE辅助V230312` | MACD辅助判断笔结束 | [详细文档](signals/cxt_bi_end_V230312.md) |\n| `cxt_bi_end_V230320` | `\"{freq}_D0质数窗口MO{max_overlap}_BE辅助V230320` | 质数窗口笔结束辅助 | [详细文档](signals/cxt_bi_end_V230320.md) |\n| `cxt_bi_end_V230322` | `\"{freq}_D0分型配合{ma_type}#{timeperiod}_BE辅助V230322` | 分型配合均线的笔结束辅助 | [详细文档](signals/cxt_bi_end_V230322.md) |\n| `cxt_bi_end_V230324` | `\"{freq}_D0{ma_type}#{timeperiod}均线突破_BE辅助V230324` | 笔结束分型均线突破 | [详细文档](signals/cxt_bi_end_V230324.md) |\n| `cxt_bi_end_V230618` | `\"{freq}_D{di}MO{max_overlap}_BE辅助V230618` | 笔结束小中枢辅助 | [详细文档](signals/cxt_bi_end_V230618.md) |\n| `cxt_bi_end_V230815` | `\"{freq}_快速突破_BE辅助V230815` | 快速突破反向笔 | [详细文档](signals/cxt_bi_end_V230815.md) |\n| `cxt_bi_status_V230101` | `\"{freq}_D1_表里关系V230101` | 笔表里关系信号 | [详细文档](signals/cxt_bi_status_V230101.md) |\n| `cxt_bi_status_V230102` | `\"{freq}_D1_表里关系V230102` | 笔表里关系信号 | [详细文档](signals/cxt_bi_status_V230102.md) |\n| `cxt_bi_stop_V230815` | `\"{freq}_距离{th}BP_止损V230815` | 笔止损距离状态 | [详细文档](signals/cxt_bi_stop_V230815.md) |\n| `cxt_bi_trend_V230824` | `\"{freq}_D{di}N{n}TH{th}_形态V230824` | N笔形态判断 | [详细文档](signals/cxt_bi_trend_V230824.md) |\n| `cxt_bi_trend_V230913` | `\"{freq}_D{di}N{n}笔趋势_高低点辅助判断V230913` | 笔趋势高低点回归信号 | [详细文档](signals/cxt_bi_trend_V230913.md) |\n| `cxt_bi_zdf_V230601` | `\"{freq}_D{di}N{n}_分层V230601` | BI涨跌幅分层 | [详细文档](signals/cxt_bi_zdf_V230601.md) |\n| `cxt_bs_V240526` | `\"{freq}_趋势跟随_BS辅助V240526` | 趋势跟随 BS 辅助 | [详细文档](signals/cxt_bs_V240526.md) |\n| `cxt_bs_V240527` | `\"{freq}_趋势跟随_BS辅助V240527` | 未完成笔上的趋势跟随 BS 辅助 | [详细文档](signals/cxt_bs_V240527.md) |\n| `cxt_decision_V240526` | `\"{freq}_分型区域N{n}_决策区域V240526` | 分型区域决策 | [详细文档](signals/cxt_decision_V240526.md) |\n| `cxt_decision_V240612` | `\"{freq}_W{w}N{n}高低点_决策区域V240612` | 高低点N档决策区间 | [详细文档](signals/cxt_decision_V240612.md) |\n| `cxt_decision_V240613` | `\"{freq}_放量笔N{n}BS2_决策区域V240613` | 放量笔N4BS2决策区 | [详细文档](signals/cxt_decision_V240613.md) |\n| `cxt_decision_V240614` | `\"{freq}_放量笔N{n}_决策区域V240614` | 放量新高/新低决策区 | [详细文档](signals/cxt_decision_V240614.md) |\n| `cxt_double_zs_V230311` | `\"{freq}_D{di}双中枢_BS1辅助V230311` | 双中枢 BS1 辅助 | [详细文档](signals/cxt_double_zs_V230311.md) |\n| `cxt_eleven_bi_V230622` | `\"{freq}_D{di}十一笔_形态V230622` | 十一笔形态分类信号 | [详细文档](signals/cxt_eleven_bi_V230622.md) |\n| `cxt_first_buy_V221126` | `\"{freq}_D{di}B_BUY1V221126` | 一买信号 | [详细文档](signals/cxt_first_buy_V221126.md) |\n| `cxt_first_sell_V221126` | `\"{freq}_D{di}B_SELL1V221126` | 一卖信号 | [详细文档](signals/cxt_first_sell_V221126.md) |\n| `cxt_five_bi_V230619` | `\"{freq}_D{di}五笔_形态V230619` | 五笔形态分类信号 | [详细文档](signals/cxt_five_bi_V230619.md) |\n| `cxt_fx_power_V221107` | `\"{freq}_D{di}F_分型强弱V221107` | 倒数分型强弱 | [详细文档](signals/cxt_fx_power_V221107.md) |\n| `cxt_nine_bi_V230621` | `\"{freq}_D{di}九笔_形态V230621` | 九笔形态分类信号 | [详细文档](signals/cxt_nine_bi_V230621.md) |\n| `cxt_overlap_V240526` | `\"{freq}_顶底重合_支撑压力V240526` | 收盘价与最近分型区间重合次数 | [详细文档](signals/cxt_overlap_V240526.md) |\n| `cxt_overlap_V240612` | `\"{freq}_SNR顺畅N{n}_支撑压力V240612` | 顺畅笔分型支撑压力信号 | [详细文档](signals/cxt_overlap_V240612.md) |\n| `cxt_range_oscillation_V230620` | `\"{freq}_D{di}TH{th}_区间震荡V230620` | 区间震荡笔数统计 | [详细文档](signals/cxt_range_oscillation_V230620.md) |\n| `cxt_second_bs_V230320` | `\"{freq}_D{di}#{ma_type}#{timeperiod}_BS2辅助V230320` | 均线辅助识别第二类买卖点 | [详细文档](signals/cxt_second_bs_V230320.md) |\n| `cxt_second_bs_V240524` | `\"{freq}_D{di}W{w}T{t}_第二买卖点V240524` | 第二买卖点重叠计数信号 | [详细文档](signals/cxt_second_bs_V240524.md) |\n| `cxt_seven_bi_V230620` | `\"{freq}_D{di}七笔_形态V230620` | 七笔形态分类信号 | [详细文档](signals/cxt_seven_bi_V230620.md) |\n| `cxt_third_bs_V230318` | `\"{freq}_D{di}#{ma_type}#{timeperiod}_BS3辅助V230318` | 均线辅助识别第三类买卖点 | [详细文档](signals/cxt_third_bs_V230318.md) |\n| `cxt_third_bs_V230319` | `\"{freq}_D{di}#{ma_type}#{timeperiod}_BS3辅助V230319` | 带均线形态的第三类买卖点辅助 | [详细文档](signals/cxt_third_bs_V230319.md) |\n| `cxt_third_buy_V230228` | `\"{freq}_D{di}_三买辅助V230228` | 笔三买辅助 | [详细文档](signals/cxt_third_buy_V230228.md) |\n| `cxt_three_bi_V230618` | `\"{freq}_D{di}三笔_形态V230618` | 三笔形态分类信号 | [详细文档](signals/cxt_three_bi_V230618.md) |\n| `cxt_ubi_end_V230816` | `\"{freq}_UBI_BE辅助V230816` | UBI 新高新低次数信号 | [详细文档](signals/cxt_ubi_end_V230816.md) |\n",".claude/skills/signal-functions/references/signals-cxt_trader.md":"# cxt_trader 模块信号索引\n\n> 源码: `crates/czsc-signals/src/cxt_trader.rs`\n> 共 2 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `cxt_intraday_V230701` | `\"{freq1}#{freq2}_D{di}日_走势分类V230701` | 30分钟日内走势分类 | [详细文档](signals/cxt_intraday_V230701.md) |\n| `cxt_zhong_shu_gong_zhen_V221221` | `\"{freq1}_{freq2}_中枢共振V221221` | 大小级别中枢共振 | [详细文档](signals/cxt_zhong_shu_gong_zhen_V221221.md) |\n",".claude/skills/signal-functions/references/signals-jcc.md":"# jcc 模块信号索引\n\n> 源码: `crates/czsc-signals/src/jcc.rs`\n> 共 19 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `jcc_ci_tou_V221101` | `\"{freq}_D{di}Z{z}TH{th}_刺透形态` | 刺透形态 | [详细文档](signals/jcc_ci_tou_V221101.md) |\n| `jcc_fan_ji_xian_V221121` | `\"{freq}_D{di}_反击线` | 反击线 | [详细文档](signals/jcc_fan_ji_xian_V221121.md) |\n| `jcc_fen_shou_xian_V20221113` | `\"{freq}_D{di}K_分手线` | 分手线 | [详细文档](signals/jcc_fen_shou_xian_V20221113.md) |\n| `jcc_gap_yin_yang_V221121` | `\"{freq}_D{di}K_并列阴阳` | 跳空并列阴阳 | [详细文档](signals/jcc_gap_yin_yang_V221121.md) |\n| `jcc_ping_tou_V221113` | `\"{freq}_D{di}TH{th}_平头形态` | 平头形态 | [详细文档](signals/jcc_ping_tou_V221113.md) |\n| `jcc_san_fa_V20221115` | `\"{freq}_D{di}K_三法` | 三法形态 | [详细文档](signals/jcc_san_fa_V20221115.md) |\n| `jcc_san_fa_V20221118` | `\"{freq}_D{di}K_三法A` | 三法形态A | [详细文档](signals/jcc_san_fa_V20221118.md) |\n| `jcc_san_szx_V221122` | `\"{freq}_D{di}T{th}_三星` | 三星形态 | [详细文档](signals/jcc_san_szx_V221122.md) |\n| `jcc_san_xing_xian_V221023` | `\"{freq}_D{di}TH{th}_伞形线` | 伞形线形态信号 | [详细文档](signals/jcc_san_xing_xian_V221023.md) |\n| `jcc_shan_chun_V221121` | `\"{freq}_D{di}B_山川形态` | 山川形态 | [详细文档](signals/jcc_shan_chun_V221121.md) |\n| `jcc_szx_V221111` | `\"{freq}_D{di}TH{th}_十字线` | 十字线 | [详细文档](signals/jcc_szx_V221111.md) |\n| `jcc_ta_xing_V221124` | `\"{freq}_D{di}K_塔形` | 塔形顶底 | [详细文档](signals/jcc_ta_xing_V221124.md) |\n| `jcc_ten_mo_V221028` | `\"{freq}_D{di}_吞没形态` | 吞没形态 | [详细文档](signals/jcc_ten_mo_V221028.md) |\n| `jcc_three_crow_V221108` | `\"{freq}_D{di}_三只乌鸦` | 三只乌鸦 | [详细文档](signals/jcc_three_crow_V221108.md) |\n| `jcc_two_crow_V221108` | `\"{freq}_D{di}K_两只乌鸦` | 两只乌鸦 | [详细文档](signals/jcc_two_crow_V221108.md) |\n| `jcc_wu_yun_gai_ding_V221101` | `\"{freq}_D{di}Z{z}TH{th}_乌云盖顶` | 乌云盖顶 | [详细文档](signals/jcc_wu_yun_gai_ding_V221101.md) |\n| `jcc_xing_xian_V221118` | `\"{freq}_D{di}TH{th}_星形线` | 星形线 | [详细文档](signals/jcc_xing_xian_V221118.md) |\n| `jcc_yun_xian_V221118` | `\"{freq}_D{di}_孕线` | 孕线形态 | [详细文档](signals/jcc_yun_xian_V221118.md) |\n| `jcc_zhu_huo_xian_V221027` | `\"{freq}_D{di}T{th}F{zf}_烛火线` | 烛火线 | [详细文档](signals/jcc_zhu_huo_xian_V221027.md) |\n",".claude/skills/signal-functions/references/signals-kcatr.md":"# kcatr 模块信号索引\n\n> 源码: `crates/czsc-signals/src/kcatr.rs`\n> 共 1 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `kcatr_up_dw_line_V230823` | `\"{freq}_D{di}N{n}M{m}T{th}_KCATR多空V230823` | ATR 通道突破多空 | [详细文档](signals/kcatr_up_dw_line_V230823.md) |\n",".claude/skills/signal-functions/references/signals-ntmdk.md":"# ntmdk 模块信号索引\n\n> 源码: `crates/czsc-signals/src/ntmdk.rs`\n> 共 1 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `ntmdk_V230824` | `\"{freq}_D{di}M{m}_NTMDK多空V230824` | M 日前收盘价对比多空 | [详细文档](signals/ntmdk_V230824.md) |\n",".claude/skills/signal-functions/references/signals-obv.md":"# obv 模块信号索引\n\n> 源码: `crates/czsc-signals/src/obv.rs`\n> 共 2 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `obv_up_dw_line_V230719` | `\"{freq}_D{di}N{n}M{m}MO{max_overlap}_OBV能量V230719` | OBV 交叉信号 | [详细文档](signals/obv_up_dw_line_V230719.md) |\n| `obvm_line_V230610` | `\"{freq}_D{di}N{n}M{m}_OBV能量V230610` | OBV 双 EMA 能量信号 | [详细文档](signals/obvm_line_V230610.md) |\n",".claude/skills/signal-functions/references/signals-pos.md":"# pos 模块信号索引\n\n> 源码: `crates/czsc-signals/src/pos.rs`\n> 共 16 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `pos_bar_stop_V230524` | `\"{pos_name}_{freq1}N{n}K_止损V230524` | 按开仓点附近N根K线极值止损 | [详细文档](signals/pos_bar_stop_V230524.md) |\n| `pos_fix_exit_V230624` | `\"{pos_name}_固定{th}BP止盈止损_出场V230624` | 固定 BP 止盈止损 | [详细文档](signals/pos_fix_exit_V230624.md) |\n| `pos_fx_stop_V230414` | `\"{freq1}_{pos_name}N{n}_止损V230414` | 按开仓点附近分型止损 | [详细文档](signals/pos_fx_stop_V230414.md) |\n| `pos_holds_V230414` | `\"{pos_name}_{freq1}N{n}M{m}_趋势判断V230414` | 开仓后 N 根K线收益与阈值比较 | [详细文档](signals/pos_holds_V230414.md) |\n| `pos_holds_V230807` | `\"{pos_name}_{freq1}N{n}M{m}T{t}_BS辅助V230807` | 开仓后收益在 (t, m) 之间触发保本 | [详细文档](signals/pos_holds_V230807.md) |\n| `pos_holds_V240428` | `\"{pos_name}_{freq1}H{h}T{t}N{n}_保本V240428` | 最大盈利回撤比例保本 | [详细文档](signals/pos_holds_V240428.md) |\n| `pos_holds_V240608` | `\"{pos_name}_{freq1}W{w}N{n}_保本V240608` | 跌破/升破开仓前窗口极值后，回到成本价指定档位保本 | [详细文档](signals/pos_holds_V240608.md) |\n| `pos_ma_V230414` | `\"{pos_name}_{freq1}#{ma_type}#{timeperiod}_持有状态V230414` | 判断开仓后是否升破/跌破均线 | [详细文档](signals/pos_ma_V230414.md) |\n| `pos_profit_loss_V230624` | `\"{pos_name}_{freq1}YKB{ykb}N{n}_盈亏比判断V230624` | 盈亏比阈值判断 | [详细文档](signals/pos_profit_loss_V230624.md) |\n| `pos_status_V230808` | `\"{pos_name}_持仓状态_BS辅助V230808` | 持仓状态 | [详细文档](signals/pos_status_V230808.md) |\n| `pos_stop_V240331` | `\"{pos_name}_{freq1}#{n}_止损V240331` | 最近 N 根K线追踪止损 | [详细文档](signals/pos_stop_V240331.md) |\n| `pos_stop_V240428` | `\"{pos_name}_{freq1}T{t}N{n}_止损V240428` | 按开仓前离散价位跳数止损 | [详细文档](signals/pos_stop_V240428.md) |\n| `pos_stop_V240608` | `\"{pos_name}_{freq1}W{w}N{n}_止损V240608` | 开仓后突破开仓前窗口极值 N 档止损 | [详细文档](signals/pos_stop_V240608.md) |\n| `pos_stop_V240614` | `\"{pos_name}_{freq1}N{n}_止损V240614` | 开仓后低于/高于成本价的 K线数量计数止损 | [详细文档](signals/pos_stop_V240614.md) |\n| `pos_stop_V240717` | `\"{pos_name}_{freq1}N{n}T{timeperiod}_止损V240717` | 基于开仓时 ATR 的计数止损 | [详细文档](signals/pos_stop_V240717.md) |\n| `pos_take_V240428` | `\"{pos_name}_{freq1}T{t}N{n}_止盈V240428` | 倍量阳/阴线计数止盈 | [详细文档](signals/pos_take_V240428.md) |\n",".claude/skills/signal-functions/references/signals-pressure.md":"# pressure 模块信号索引\n\n> 源码: `crates/czsc-signals/src/pressure.rs`\n> 共 4 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `pressure_support_V240222` | `\"{freq}_D{di}W{w}高低点验证_支撑压力V240222` | 高低点验证支撑压力位 | [详细文档](signals/pressure_support_V240222.md) |\n| `pressure_support_V240402` | `\"{freq}_D{di}W{w}_支撑压力V240402` | 分型区间支撑压力位 | [详细文档](signals/pressure_support_V240402.md) |\n| `pressure_support_V240406` | `\"{freq}_D{di}W{w}_支撑压力V240406` | 分型密集支撑压力位 | [详细文档](signals/pressure_support_V240406.md) |\n| `pressure_support_V240530` | `\"{freq}_D{di}W{w}N{n}_支撑压力V240530` | 关键重叠K线支撑压力位 | [详细文档](signals/pressure_support_V240530.md) |\n",".claude/skills/signal-functions/references/signals-tas.md":"# tas 模块信号索引\n\n> 源码: `crates/czsc-signals/src/tas.rs`\n> 共 59 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `cci_decision_V240620` | `\"{freq}_N{n}CCI_决策区域V240620` | CCI 逆势决策区域 | [详细文档](signals/cci_decision_V240620.md) |\n| `tas_accelerate_V230531` | `\"{freq}_D{di}N{n}T{t}_BOLL加速V230531` | BOLL 通道加速信号 | [详细文档](signals/tas_accelerate_V230531.md) |\n| `tas_angle_V230802` | `\"{freq}_D{di}N{n}T{th}_笔角度V230802` | 笔角度偏离信号 | [详细文档](signals/tas_angle_V230802.md) |\n| `tas_atr_V230630` | `\"{freq}_D{di}ATR{timeperiod}_波动V230630` | ATR 波动分层信号 | [详细文档](signals/tas_atr_V230630.md) |\n| `tas_atr_break_V230424` | `\"{freq}_D{di}ATR{timeperiod}T{th}突破_BS辅助V230424` | ATR 通道突破 | [详细文档](signals/tas_atr_break_V230424.md) |\n| `tas_boll_bc_V221118` | `\"{freq}_D{di}N{n}M{m}L{line}#BOLL{timeperiod}_背驰V221118` | BOLL背驰辅助信号 | [详细文档](signals/tas_boll_bc_V221118.md) |\n| `tas_boll_cc_V230312` | `\"{freq}_D{di}BOLL{timeperiod}S{nbdev}SP{sp}_BS辅助V230312` | 布林进出场信号 | [详细文档](signals/tas_boll_cc_V230312.md) |\n| `tas_boll_power_V221112` | `\"{freq}_D{di}BOLL{timeperiod}_强弱V221112` | BOLL强弱分层信号 | [详细文档](signals/tas_boll_power_V221112.md) |\n| `tas_boll_vt_V230212` | `\"{freq}_D{di}BOLL{timeperiod}S{nbdev}MO{max_overlap}_BS辅助V230212` | BOLL 通道突破进出场信号 | [详细文档](signals/tas_boll_vt_V230212.md) |\n| `tas_cci_base_V230402` | `\"{freq}_D{di}CCI{timeperiod}#{min_count}#{max_count}_BS辅助V230402` | CCI 极值连续计数信号 | [详细文档](signals/tas_cci_base_V230402.md) |\n| `tas_cross_status_V230619` | `\"{freq}_D{di}MACD{fastperiod}#{slowperiod}#{signalperiod}_金死叉V230619` | 0轴上下金死叉次数 | [详细文档](signals/tas_cross_status_V230619.md) |\n| `tas_cross_status_V230624` | `\"{freq}_D{di}N{n}MD{md}_MACD交叉数量V230624` | 指定金死叉数值 | [详细文档](signals/tas_cross_status_V230624.md) |\n| `tas_cross_status_V230625` | `\"{freq}_D{di}N{n}MD{md}J{j}S{s}_MACD交叉数量V230625` | 指定金叉/死叉次数后状态 | [详细文档](signals/tas_cross_status_V230625.md) |\n| `tas_dif_layer_V241010` | `\"{freq}_DIF分层W{w}T{t}_完全分类V241010` | DIF 三层分类 | [详细文档](signals/tas_dif_layer_V241010.md) |\n| `tas_dif_zero_V240612` | `\"{freq}_DIF靠近零轴T{t}_BS辅助V240612` | DIF靠近零轴买卖点信号（基于最近一笔） | [详细文档](signals/tas_dif_zero_V240612.md) |\n| `tas_dif_zero_V240614` | `\"{freq}_DIF靠近零轴W{w}T{t}_BS辅助V240614` | DIF靠近零轴买卖点信号 | [详细文档](signals/tas_dif_zero_V240614.md) |\n| `tas_dma_bs_V240608` | `\"{freq}_N{n}双均线{t1}#{t2}顺势_BS辅助V240608` | 双均线顺势回调买卖点 | [详细文档](signals/tas_dma_bs_V240608.md) |\n| `tas_double_ma_V221203` | `\"{freq}_D{di}T{th}#{ma_type}#{timeperiod1}#{timeperiod2}_JX辅助V221203` | 双均线多空强弱信号 | [详细文档](signals/tas_double_ma_V221203.md) |\n| `tas_double_ma_V230511` | `\"{freq}_D{di}#{ma_type}#{t1}#{t2}_BS辅助V230511` | 双均线反向信号 | [详细文档](signals/tas_double_ma_V230511.md) |\n| `tas_double_ma_V240208` | `\"{freq}_D{di}N{N}M{M}双均线_BS辅助V240208` | 双均线交叉结构信号 | [详细文档](signals/tas_double_ma_V240208.md) |\n| `tas_first_bs_V230217` | `\"{freq}_D{di}N{n}#{ma_type}#{timeperiod}_BS1辅助V230217` | 均线结合K线形态的一买一卖辅助 | [详细文档](signals/tas_first_bs_V230217.md) |\n| `tas_hlma_V230301` | `\"{freq}_D{di}#{ma_type}#{timeperiod}HLMA_BS辅助V230301` | HMA/LMA 多空信号 | [详细文档](signals/tas_hlma_V230301.md) |\n| `tas_kdj_base_V221101` | `\"{freq}_D{di}K#KDJ{fastk_period}#{slowk_period}#{slowd_period}_KDJ辅助V221101` | KDJ基础辅助信号 | [详细文档](signals/tas_kdj_base_V221101.md) |\n| `tas_kdj_evc_V221201` | `\"{freq}_D{di}T{th}KDJ{fastk_period}#{slowk_period}#{slowd_period}#{key}值突破{c1}#{c2}_KDJ极值V221201` | KDJ 极值计数信号 | [详细文档](signals/tas_kdj_evc_V221201.md) |\n| `tas_kdj_evc_V230401` | `\"{freq}_D{di}T{th}KDJ{fastk_period}#{slowk_period}#{slowd_period}#{key}值突破{min_count}#{max_count}_BS辅助V230401` | KDJ 极值计数信号 | [详细文档](signals/tas_kdj_evc_V230401.md) |\n| `tas_low_trend_V230627` | `\"{freq}_D{di}N{n}TH{th}_趋势230627` | 阴跌/小阳趋势信号 | [详细文档](signals/tas_low_trend_V230627.md) |\n| `tas_ma_base_V221101` | `\"{freq}_D{di}{ma_type}#{timeperiod}_分类V221101` | 单均线多空与方向信号 | [详细文档](signals/tas_ma_base_V221101.md) |\n| `tas_ma_base_V221203` | `\"{freq}_D{di}{ma_type}#{timeperiod}T{th}_分类V221203` | 单均线多空与距离分层信号 | [详细文档](signals/tas_ma_base_V221203.md) |\n| `tas_ma_base_V230313` | `\"{freq}_D{di}#{ma_type}#{timeperiod}MO{max_overlap}_BS辅助V230313` | 单均线开平仓辅助信号（带重叠约束） | [详细文档](signals/tas_ma_base_V230313.md) |\n| `tas_ma_cohere_V230512` | `\"{freq}_D{di}SMA{ma_seq}_均线系统V230512` | 均线系统粘合/扩散状态 | [详细文档](signals/tas_ma_cohere_V230512.md) |\n| `tas_ma_round_V221206` | `\"{freq}_D{di}TH{th}#碰{ma_type}#{timeperiod}_BE辅助V221206` | 笔端点触碰均线信号 | [详细文档](signals/tas_ma_round_V221206.md) |\n| `tas_ma_system_V230513` | `\"{freq}_D{di}SMA{ma_seq}_均线系统V230513` | 均线系统多空排列 | [详细文档](signals/tas_ma_system_V230513.md) |\n| `tas_macd_base_V221028` | `\"{freq}_D{di}MACD{fastperiod}#{slowperiod}#{signalperiod}#{key}_BS辅助V221028` | MACD/DIF/DEA 多空与方向信号 | [详细文档](signals/tas_macd_base_V221028.md) |\n| `tas_macd_base_V230320` | `\"{freq}_D{di}MACD{fastperiod}#{slowperiod}#{signalperiod}MO{max_overlap}#{key}_BS辅助V230320` | MACD/DIF/DEA 多空与方向信号（含重叠约束） | [详细文档](signals/tas_macd_base_V230320.md) |\n| `tas_macd_bc_V221201` | `\"{freq}_D{di}N{n}M{m}#MACD{fastperiod}#{slowperiod}#{signalperiod}_BCV221201` | MACD背驰辅助信号 | [详细文档](signals/tas_macd_bc_V221201.md) |\n| `tas_macd_bc_V230803` | `\"{freq}_MACD双分型背驰_BS辅助V230803` | 双分型 MACD 背驰信号 | [详细文档](signals/tas_macd_bc_V230803.md) |\n| `tas_macd_bc_V230804` | `\"{freq}_D{di}MACD背驰_BS辅助V230804` | MACD 黄白线背驰信号 | [详细文档](signals/tas_macd_bc_V230804.md) |\n| `tas_macd_bc_V240307` | `\"{freq}_D{di}N{n}柱子背驰_BS辅助V240307` | MACD 柱背驰计次信号 | [详细文档](signals/tas_macd_bc_V240307.md) |\n| `tas_macd_bc_ubi_V230804` | `\"{freq}_MACD背驰_UBI观察V230804` | 未完成笔 MACD 背驰观察 | [详细文档](signals/tas_macd_bc_ubi_V230804.md) |\n| `tas_macd_bs1_V230312` | `\"{freq}_D{di}MACD{fastperiod}#{slowperiod}#{signalperiod}_BS1辅助V230312` | MACD 辅助一买一卖（笔结构） | [详细文档](signals/tas_macd_bs1_V230312.md) |\n| `tas_macd_bs1_V230313` | `\"{freq}_D{di}MACD{fastperiod}#{slowperiod}#{signalperiod}_BS1辅助V230313` | MACD 红绿柱第一买卖点 | [详细文档](signals/tas_macd_bs1_V230313.md) |\n| `tas_macd_bs1_V230411` | `\"{freq}_D{di}T{tha}#{thb}#{thc}_BS1辅助V230411` | MACD DIF 五笔背驰信号 | [详细文档](signals/tas_macd_bs1_V230411.md) |\n| `tas_macd_bs1_V230412` | `\"{freq}_D{di}T{tha}#{thb}_BS1辅助V230412` | MACD DIF 五笔背驰简化信号 | [详细文档](signals/tas_macd_bs1_V230412.md) |\n| `tas_macd_change_V221105` | `\"{freq}_D{di}K{n}#MACD{fastperiod}#{slowperiod}#{signalperiod}变色次数_BS辅助V221105` | MACD变色次数信号 | [详细文档](signals/tas_macd_change_V221105.md) |\n| `tas_macd_direct_V221106` | `\"{freq}_D{di}K#MACD{fastperiod}#{slowperiod}#{signalperiod}方向_BS辅助V221106` | MACD柱方向信号 | [详细文档](signals/tas_macd_direct_V221106.md) |\n| `tas_macd_dist_V230408` | `\"{freq}_{key}分层W{w}N{n}_BS辅助V230408` | DIF/DEA/MACD等宽分层信号 | [详细文档](signals/tas_macd_dist_V230408.md) |\n| `tas_macd_dist_V230409` | `\"{freq}_{key}远离W{w}N{n}T{t}_BS辅助V230409` | DIF/DEA/MACD远离零轴信号 | [详细文档](signals/tas_macd_dist_V230409.md) |\n| `tas_macd_dist_V230410` | `\"{freq}_{key}多空分层W{w}N{n}_BS辅助V230410` | DIF/DEA/MACD多空分层信号 | [详细文档](signals/tas_macd_dist_V230410.md) |\n| `tas_macd_first_bs_V221201` | `\"{freq}_D{di}MACD{fastperiod}#{slowperiod}#{signalperiod}_BS1辅助V221201` | MACD一买一卖辅助信号 | [详细文档](signals/tas_macd_first_bs_V221201.md) |\n| `tas_macd_first_bs_V221216` | `\"{freq}_D{di}MACD{fastperiod}#{slowperiod}#{signalperiod}_BS1辅助V221216` | MACD 第一买卖点（扩展版） | [详细文档](signals/tas_macd_first_bs_V221216.md) |\n| `tas_macd_power_V221108` | `\"{freq}_D{di}K#MACD{fastperiod}#{slowperiod}#{signalperiod}强弱_BS辅助V221108` | MACD强弱分层信号 | [详细文档](signals/tas_macd_power_V221108.md) |\n| `tas_macd_second_bs_V221201` | `\"{freq}_D{di}MACD{fastperiod}#{slowperiod}#{signalperiod}_BS2辅助V221201` | MACD 第二买卖点 | [详细文档](signals/tas_macd_second_bs_V221201.md) |\n| `tas_macd_xt_V221208` | `\"{freq}_D{di}K#MACD{fastperiod}#{slowperiod}#{signalperiod}形态_BS辅助V221208` | MACD 柱形态信号 | [详细文档](signals/tas_macd_xt_V221208.md) |\n| `tas_rsi_base_V230227` | `\"{freq}_D{di}T{th}RSI{timeperiod}_RSI辅助V230227` | RSI超买超卖与方向信号 | [详细文档](signals/tas_rsi_base_V230227.md) |\n| `tas_rumi_V230704` | `\"{freq}_D{di}F{timeperiod1}S{timeperiod2}R{rumi_window}_BS辅助V230704` | RUMI 零轴切换信号 | [详细文档](signals/tas_rumi_V230704.md) |\n| `tas_sar_base_V230425` | `\"{freq}_D{di}MO{max_overlap}SAR_BS辅助V230425` | SAR 基础多空信号 | [详细文档](signals/tas_sar_base_V230425.md) |\n| `tas_second_bs_V230228` | `\"{freq}_D{di}N{n}#{ma_type}#{timeperiod}_BS2辅助V230228` | 均线结合K线形态的二买二卖辅助 | [详细文档](signals/tas_second_bs_V230228.md) |\n| `tas_second_bs_V230303` | `\"{freq}_D{di}{ma_type}#{timeperiod}_BS2辅助V230303` | 利用笔和均线辅助二买二卖 | [详细文档](signals/tas_second_bs_V230303.md) |\n| `tas_slope_V231019` | `\"{freq}_D{di}DIF{n}斜率T{th}_BS辅助V231019` | DIF 斜率分位多空 | [详细文档](signals/tas_slope_V231019.md) |\n",".claude/skills/signal-functions/references/signals-vol.md":"# vol 模块信号索引\n\n> 源码: `crates/czsc-signals/src/vol.rs`\n> 共 6 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `vol_double_ma_V230214` | `\"{freq}_D{di}VOL双均线{ma_type}#{t1}#{t2}_BS辅助V230214` | 成交量双均线多空信号 | [详细文档](signals/vol_double_ma_V230214.md) |\n| `vol_gao_di_V221218` | `\"{freq}_D{di}K_量柱V221218` | 高量柱与低量柱信号 | [详细文档](signals/vol_gao_di_V221218.md) |\n| `vol_single_ma_V230214` | `\"{freq}_D{di}VOL#{ma_type}#{timeperiod}_分类V230214` | 单成交量均线多空与方向信号 | [详细文档](signals/vol_single_ma_V230214.md) |\n| `vol_ti_suo_V221216` | `\"{freq}_D{di}K_量柱V221216` | 梯量与缩量柱信号 | [详细文档](signals/vol_ti_suo_V221216.md) |\n| `vol_window_V230731` | `\"{freq}_D{di}W{w}M{m}N{n}_窗口能量V230731` | 窗口成交量分层特征 | [详细文档](signals/vol_window_V230731.md) |\n| `vol_window_V230801` | `\"{freq}_D{di}W{w}_窗口能量V230801` | 窗口成交量先后顺序特征 | [详细文档](signals/vol_window_V230801.md) |\n",".claude/skills/signal-functions/references/signals-xl.md":"# xl 模块信号索引\n\n> 源码: `crates/czsc-signals/src/xl.rs`\n> 共 7 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `xl_bar_basis_V240411` | `\"{freq}_N{n}_形态V240411` | 吞没形态信号 | [详细文档](signals/xl_bar_basis_V240411.md) |\n| `xl_bar_basis_V240412` | `\"{freq}_N{n}#TH{th}_形态V240412` | 长蜡烛形态信号 | [详细文档](signals/xl_bar_basis_V240412.md) |\n| `xl_bar_position_V240328` | `\"{freq}_N{n}_BS辅助V240328` | 相对高低位置识别信号 | [详细文档](signals/xl_bar_position_V240328.md) |\n| `xl_bar_trend_V240329` | `\"{freq}_N{n}M{m}_十字线反转V240329` | 十字孕线反转信号 | [详细文档](signals/xl_bar_trend_V240329.md) |\n| `xl_bar_trend_V240330` | `\"{freq}_N{n}M{m}#{ma_type}_双均线过滤V240330` | 双均线过滤信号 | [详细文档](signals/xl_bar_trend_V240330.md) |\n| `xl_bar_trend_V240331` | `\"{freq}_N{n}_突破信号V240331` | 通道突破信号 | [详细文档](signals/xl_bar_trend_V240331.md) |\n| `xl_bar_trend_V240623` | `\"{freq}_N{n}通道_突破信号V240623` | 通道突破连续信号 | [详细文档](signals/xl_bar_trend_V240623.md) |\n",".claude/skills/signal-functions/references/signals-zdy_trader.md":"# zdy_trader 模块信号索引\n\n> 源码: `crates/czsc-signals/src/zdy_trader.rs`\n> 共 4 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `zdy_stop_loss_V230406` | `` | 笔操作止损逻辑 | [详细文档](signals/zdy_stop_loss_V230406.md) |\n| `zdy_take_profit_V230406` | `` | 笔操作止盈逻辑 | [详细文档](signals/zdy_take_profit_V230406.md) |\n| `zdy_take_profit_V230407` | `` | 按力度提前止盈 | [详细文档](signals/zdy_take_profit_V230407.md) |\n| `zdy_vibrate_V230406` | `` | 中枢震荡短差辅助 | [详细文档](signals/zdy_vibrate_V230406.md) |\n",".claude/skills/signal-functions/references/signals/adtm_up_dw_line_V230603.md":"# adtm_up_dw_line_V230603：ADTM 能量异动多空信号\n\n> 模块: `ang.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}N{n}M{m}TH{th}_ADTMV230603`\n\n## 信号逻辑\n\n1. 计算 `N` 窗口 `up_sum` 与 `M` 窗口 `dw_sum`；\n2. 计算 `adtm = (up_sum - dw_sum) / max(up_sum, dw_sum)`；\n3. `up_sum > dw_sum` 或 `adtm > th/10` 判 `看多`；\n4. `up_sum < dw_sum` 或 `adtm < th/10` 判 `看空`，否则 `其他`。\n\n## 信号列表示例\n\n- `Signal('60分钟_D1N30M20TH5_ADTMV230603_看多_任意_任意_0')`\n- `Signal('60分钟_D1N30M20TH5_ADTMV230603_看空_任意_任意_0')`\n\n## 参数说明\n\n- `di`：信号计算截止在倒数第 `di` 根K线，默认 `1`；\n- `n`：`up_sum` 窗口，默认 `30`；\n- `m`：`dw_sum` 窗口，默认 `20`；\n- `th`：阈值（除以 10 使用），默认 `5`。\n\n## 对齐说明\n\n与 Python `adtm_up_dw_line_V230603` 的条件优先级与阈值口径一致。\n",".claude/skills/signal-functions/references/signals/amv_up_dw_line_V230603.md":"# amv_up_dw_line_V230603：AMV 能量多空信号\n\n> 模块: `ang.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}N{n}M{m}_AMV能量V230603`\n\n## 信号逻辑\n\n1. 计算 `N` 与 `M` 窗口成交额加权均价；\n2. 形成 `amv1` 与 `amv2`；\n3. `amv1 > amv2` 判 `看多`，否则 `看空`。\n\n## 信号列表示例\n\n- `Signal('60分钟_D1N30M120_AMV能量V230603_看多_任意_任意_0')`\n- `Signal('60分钟_D1N30M120_AMV能量V230603_看空_任意_任意_0')`\n\n## 参数说明\n\n- `di`：信号计算截止在倒数第 `di` 根K线，默认 `1`；\n- `n`：短窗口，默认 `30`；\n- `m`：长窗口，默认 `120`。\n\n## 对齐说明\n\n与 Python `amv_up_dw_line_V230603` 的加权均价公式一致。\n",".claude/skills/signal-functions/references/signals/asi_up_dw_line_V230603.md":"# asi_up_dw_line_V230603：ASI 多空信号\n\n> 模块: `ang.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}N{n}P{p}_ASI多空V230603`\n\n## 信号逻辑\n\n1. 基于最近 `p` 根K线计算 SI 序列并累加得 ASI；\n2. 将最新 ASI 与 `p` 窗口 ASI 均值比较；\n3. `asi_last > asi_mean` 判 `看多`，否则 `看空`。\n\n## 信号列表示例\n\n- `Signal('60分钟_D1N30P120_ASI多空V230603_看多_任意_任意_0')`\n- `Signal('60分钟_D1N30P120_ASI多空V230603_看空_任意_任意_0')`\n\n## 参数说明\n\n- `di`：信号计算截止在倒数第 `di` 根K线，默认 `1`；\n- `n`：SI 公式中的常数项，默认 `30`；\n- `p`：窗口长度，默认 `120`。\n\n## 对齐说明\n\n按 Python `asi_up_dw_line_V230603` 的原始向量公式逐项对齐实现。\n",".claude/skills/signal-functions/references/signals/bar_accelerate_V221110.md":"# bar_accelerate_V221110：区间加速走势判定\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}W{window}_加速V221110`\n\n## 信号逻辑\n\n1. 取倒数第 `di` 根截止的最近 `window` 根K线，计算区间最高/最低；\n2. 若末根收盘位于区间上20%且阳线占比>=80%，判 `上涨`；\n3. 若末根收盘位于区间下20%且阴线占比>=80%，判 `下跌`，否则 `其他`。\n\n## 信号列表示例\n\n- `Signal('60分钟_D1W13_加速V221110_上涨_任意_任意_0')`\n- `Signal('60分钟_D1W13_加速V221110_下跌_任意_任意_0')`\n\n## 参数说明\n\n- `di`：倒数第 `di` 根K线，默认 `1`；\n- `window`：观察窗口长度，默认 `10`。\n\n## 对齐说明\n\n收盘位置与阳阴占比阈值对齐 Python `bar_accelerate_V221110`。\n",".claude/skills/signal-functions/references/signals/bar_accelerate_V221118.md":"# bar_accelerate_V221118：均线偏离加速判定\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}W{window}#{ma_type}#{timeperiod}_加速V221118`\n\n## 信号逻辑\n\n1. 计算窗口内每根 `close - ma` 偏离值；\n2. 全部偏离为正，且最后三根偏离值递增，判 `上涨`；\n3. 全部偏离为负，且最后三根偏离值递减，判 `下跌`，否则 `其他`。\n\n## 信号列表示例\n\n- `Signal('日线_D1W13#SMA#10_加速V221118_上涨_任意_任意_0')`\n- `Signal('日线_D1W13#SMA#10_加速V221118_下跌_任意_任意_0')`\n\n## 参数说明\n\n- `di`：倒数第 `di` 根K线，默认 `1`；\n- `window`：观察窗口，默认 `13`；\n- `ma_type`：均线类型，默认 `SMA`；\n- `timeperiod`：均线周期，默认 `10`。\n\n## 对齐说明\n\n偏离序列与三根单调条件对齐 Python `bar_accelerate_V221118`。\n",".claude/skills/signal-functions/references/signals/bar_accelerate_V240428.md":"# bar_accelerate_V240428：滚动差分加速判定\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}W{w}T{t}_加速V240428`\n\n## 信号逻辑\n\n1. 计算 `diff = close - close[w]`，取最近300根 `|diff|` 的75分位阈值；\n2. 若最新 `|diff|` 超阈且 `diff>0`，窗口内倍量阳线数>=`t` 判 `上涨`；\n3. 若最新 `|diff|` 超阈且 `diff<0`，窗口内倍量阴线数>=`t` 判 `下跌`，否则 `其他`。\n\n## 信号列表示例\n\n- `Signal('日线_D1W21T2_加速V240428_上涨_任意_任意_0')`\n- `Signal('日线_D1W21T2_加速V240428_下跌_任意_任意_0')`\n\n## 参数说明\n\n- `di`：倒数第 `di` 根K线，默认 `1`；\n- `w`：差分窗口，默认 `21`；\n- `t`：倍量同向K线最小数量，默认 `1`。\n\n## 对齐说明\n\n阈值分位与倍量计数口径对齐 Python `bar_accelerate_V240428`。\n",".claude/skills/signal-functions/references/signals/bar_amount_acc_V230214.md":"# bar_amount_acc_V230214：区间累计成交额信号\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}N{n}_累计超{t}千万`\n\n## 信号逻辑\n\n1. 取倒数第 `di` 根截止的最近 `n` 根K线；\n2. 计算累计成交额 `sum(amount)`；\n3. 若大于 `t * 1e7` 判 `是`，否则 `否`。\n\n## 信号列表示例\n\n- `Signal('日线_D2N5_累计超10千万_是_任意_任意_0')`\n- `Signal('日线_D2N5_累计超10千万_否_任意_任意_0')`\n\n## 参数说明\n\n- `di`：倒数第 `di` 根K线，默认 `2`；\n- `n`：回看K线数，默认 `5`；\n- `t`：阈值（千万），默认 `10`。\n\n## 对齐说明\n\n累计金额阈值判断与 Python `bar_amount_acc_V230214` 一致。\n",".claude/skills/signal-functions/references/signals/bar_big_solid_V230215.md":"# bar_big_solid_V230215：窗口最大实体中位多空信号\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}N{n}_MIDV230215`\n\n## 信号逻辑\n\n1. 在窗口内找到实体最大K线；\n2. 取该K线实体中位价 `mid`；\n3. 最新收盘价高于 `mid` 判 `看多`，否则 `看空`；\n4. 最大实体K线按方向标注 `大阳/大阴`。\n\n## 信号列表示例\n\n- `Signal('日线_D1N20_MIDV230215_看多_大阳_任意_0')`\n- `Signal('日线_D1N20_MIDV230215_看空_大阴_任意_0')`\n\n## 参数说明\n\n- `di`：倒数第 `di` 根K线，默认 `1`；\n- `n`：窗口长度，默认 `20`。\n\n## 对齐说明\n\n最大实体与中位价定义对齐 Python `bar_big_solid_V230215`。\n",".claude/skills/signal-functions/references/signals/bar_bpm_V230227.md":"# bar_bpm_V230227：绝对动量分层\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}N{n}T{th}_绝对动量V230227`\n\n## 信号逻辑\n\n1. 取最近 `n` 根，计算区间 BP：`(last_close/first_open-1)*10000`；\n2. `bp>0` 时，`bp>th` 判 `超强` 否则 `强势`；\n3. `bp<=0` 时，`|bp|>th` 判 `超弱` 否则 `弱势`。\n\n## 信号列表示例\n\n- `Signal('60分钟_D1N20T1000_绝对动量V230227_强势_任意_任意_0')`\n- `Signal('60分钟_D1N20T1000_绝对动量V230227_超弱_任意_任意_0')`\n\n## 参数说明\n\n- `di`：倒数第 `di` 根K线，默认 `1`；\n- `n`：窗口长度，默认 `20`；\n- `th`：强弱阈值（BP），默认 `1000`。\n\n## 对齐说明\n\n分层规则与 Python `bar_bpm_V230227` 保持一致。\n",".claude/skills/signal-functions/references/signals/bar_break_V240428.md":"# bar_break_V240428：收盘极值突破\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}W{w}_事件V240428`\n\n## 信号逻辑\n\n1. 在窗口内比较末根收盘与前序最高/最低；\n2. 收盘高于前序最高判 `收盘新高`；\n3. 收盘低于前序最低判 `收盘新低`，否则 `其他`。\n\n## 信号列表示例\n\n- `Signal('60分钟_D1W20_事件V240428_收盘新高_任意_任意_0')`\n- `Signal('60分钟_D1W20_事件V240428_收盘新低_任意_任意_0')`\n\n## 参数说明\n\n- `di`：倒数第 `di` 根K线，默认 `1`；\n- `w`：窗口长度，默认 `20`。\n\n## 对齐说明\n\n极值比较区间与 Python `bar_break_V240428` 一致。\n",".claude/skills/signal-functions/references/signals/bar_channel_V230508.md":"# bar_channel_V230508：窄幅通道方向判定\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}M{m}_通道V230507`\n\n## 信号逻辑\n\n1. 窗口内每根K线涨跌幅需不超过 `m` BP；\n2. 对高点和低点分别做一元线性拟合，要求 `r2 > 0.8`；\n3. 双斜率同向且右侧极值确认，判 `看多/看空`，否则 `其他`。\n\n## 信号列表示例\n\n- `Signal('日线_D1M600_通道V230507_看多_任意_任意_0')`\n- `Signal('日线_D1M600_通道V230507_看空_任意_任意_0')`\n\n## 参数说明\n\n- `di`：倒数第 `di` 根K线，默认 `1`；\n- `n`：窗口长度，默认 `20`；\n- `m`：单根波动阈值（BP），默认 `600`。\n\n## 对齐说明\n\n拟合阈值和右侧极值规则对齐 Python `bar_channel_V230508`。\n",".claude/skills/signal-functions/references/signals/bar_classify_V240606.md":"# bar_classify_V240606：单根K线收盘位置分类\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}收盘位置_分类V240606`\n\n## 信号逻辑\n\n1. 将K线高低区间三等分；\n2. 收盘落在上三分之一判 `高位`；\n3. 收盘落在下三分之一判 `低位`，否则 `中间`。\n\n## 信号列表示例\n\n- `Signal('60分钟_D1收盘位置_分类V240606_高位_任意_任意_0')`\n- `Signal('60分钟_D1收盘位置_分类V240606_中间_任意_任意_0')`\n\n## 参数说明\n\n- `di`：倒数第 `di` 根K线，默认 `1`。\n\n## 对齐说明\n\n三分位阈值与 Python `bar_classify_V240606` 一致。\n",".claude/skills/signal-functions/references/signals/bar_classify_V240607.md":"# bar_classify_V240607：两根K线收盘位置分类\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}K2收盘位置_分类V240607`\n\n## 信号逻辑\n\n1. 取最近两根K线（截至 `di`）；\n2. 第二根收盘高于第一根最高判 `看多`；\n3. 第二根收盘低于第一根最低判 `看空`，否则 `中性`。\n\n## 信号列表示例\n\n- `Signal('60分钟_D1K2收盘位置_分类V240607_看多_任意_任意_0')`\n- `Signal('60分钟_D1K2收盘位置_分类V240607_中性_任意_任意_0')`\n\n## 参数说明\n\n- `di`：倒数第 `di` 根K线，默认 `1`。\n\n## 对齐说明\n\n两根K线比较规则与 Python `bar_classify_V240607` 一致。\n",".claude/skills/signal-functions/references/signals/bar_decision_V240608.md":"# bar_decision_V240608：放量反向决策区\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_W{w}N{n}Q{q}放量_决策区域V240608`\n\n## 信号逻辑\n\n1. 在最近 `n` 根中取成交量最大的3根；\n2. 若三者成交量都大于最近 `w` 根的 `q` 分位；\n3. 且 `n` 窗口净涨则 `看空`，净跌则 `看多`。\n\n## 信号列表示例\n\n- `Signal('60分钟_W300N10Q80放量_决策区域V240608_看空_任意_任意_0')`\n- `Signal('60分钟_W300N10Q80放量_决策区域V240608_看多_任意_任意_0')`\n\n## 参数说明\n\n- `w`：长窗口，默认 `300`；\n- `n`：短窗口，默认 `10`；\n- `q`：成交量分位阈值（0-100），默认 `80`。\n\n## 对齐说明\n\n分位阈值与反向判定对齐 Python `bar_decision_V240608`。\n",".claude/skills/signal-functions/references/signals/bar_decision_V240616.md":"# bar_decision_V240616：新高新低后的强弱决策\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_W{w}N{n}强弱_决策区域V240616`\n\n## 信号逻辑\n\n1. 用 `di=n` 的 `w` 窗口给出历史新高/新低参考；\n2. 在最近 `n` 根中过滤出大实体K线并按顺序检查其右侧K线；\n3. 新高后转弱判 `看空`，新低后转强判 `看多`。\n\n## 信号列表示例\n\n- `Signal('60分钟_W100N5强弱_决策区域V240616_看空_任意_任意_0')`\n- `Signal('60分钟_W100N5强弱_决策区域V240616_看多_任意_任意_0')`\n\n## 参数说明\n\n- `w`：参考窗口，默认 `100`；\n- `n`：决策窗口，默认 `5`。\n\n## 对齐说明\n\n候选筛选与右侧确认流程对齐 Python `bar_decision_V240616`。\n",".claude/skills/signal-functions/references/signals/bar_dual_thrust_V230403.md":"# bar_dual_thrust_V230403：Dual Thrust 通道突破\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}通道突破#{N}#{K1}#{K2}_BS辅助V230403`\n\n## 信号逻辑\n\n1. 用前 `N+1` 根计算 `HH/HC/LC/LL` 与 `Range=max(HH-LC, HC-LL)`；\n2. 构造当根上/下轨：`open + Range*K1%`、`open - Range*K2%`；\n3. 收盘上破判 `看多`，下破判 `看空`，否则 `其他`。\n\n## 信号列表示例\n\n- `Signal('日线_D1通道突破#5#20#20_BS辅助V230403_看多_任意_任意_0')`\n- `Signal('日线_D1通道突破#5#20#20_BS辅助V230403_看空_任意_任意_0')`\n\n## 参数说明\n\n- `di`：倒数第 `di` 根K线，默认 `1`；\n- `N`：回看天数，默认 `5`；\n- `K1`：上轨系数（百分比），默认 `20`；\n- `K2`：下轨系数（百分比），默认 `20`。\n\n## 对齐说明\n\n通道计算与突破判断对齐 Python `bar_dual_thrust_V230403`。\n",".claude/skills/signal-functions/references/signals/bar_eight_V230702.md":"# bar_eight_V230702：8K 走势分类\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}#8K_走势分类V230702`\n\n## 信号逻辑\n\n1. 统计8K中的三连K重叠中枢；\n2. 无中枢时输出 `无中枢上涨/无中枢下跌`；\n3. 双中枢满足不重叠时输出 `双中枢上涨/双中枢下跌`；\n4. 其余按前三根是否出现极值分为 `强平衡/弱平衡/转折平衡`。\n\n## 信号列表示例\n\n- `Signal('30分钟_D1#8K_走势分类V230702_双中枢上涨_任意_任意_0')`\n- `Signal('30分钟_D1#8K_走势分类V230702_转折平衡市_任意_任意_0')`\n\n## 参数说明\n\n- `di`：倒数第 `di` 根K线，默认 `1`。\n\n## 对齐说明\n\n中枢判定与分类分支顺序对齐 Python `bar_eight_V230702`。\n",".claude/skills/signal-functions/references/signals/bar_end_V221211.md":"# bar_end_V221211：判断大周期K线是否闭合\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_{freq1}结束_BS辅助221211`\n\n## 信号逻辑\n\n1. 以当前基础周期 `freq` 与目标分钟周期 `freq1` 计算当前K线对应结束时间；\n2. 从最新K线向前统计同属该结束时间的连续数量 `i`；\n3. 若 `end_time == last_dt` 判定 `闭合`，否则判定 `未闭{i}`。\n\n## 信号列表示例\n\n- `Signal('15分钟_60分钟结束_BS辅助221211_闭合_任意_任意_0')`\n- `Signal('15分钟_60分钟结束_BS辅助221211_未闭2_任意_任意_0')`\n\n## 参数说明\n\n- `freq1`：目标分钟周期，默认 `60分钟`。\n\n## 对齐说明\n\n闭合/未闭计数语义与 Python `bar_end_V221211` 保持一致。\n",".claude/skills/signal-functions/references/signals/bar_fake_break_V230204.md":"# bar_fake_break_V230204：区间假突破判定\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}N{n}M{m}_假突破V230204`\n\n## 信号逻辑\n\n1. 在最近 `N` 根内寻找滑动 `M` 窗口重叠中枢；\n2. 阳线末根创新高且“跌破DD后拉回”，判 `看多`；\n3. 阴线末根创新低且“突破GG后回落”，判 `看空`，否则 `其他`。\n\n## 信号列表示例\n\n- `Signal('15分钟_D1N20M5_假突破_看多_任意_任意_0')`\n- `Signal('15分钟_D1N20M5_假突破_看空_任意_任意_0')`\n\n## 参数说明\n\n- `di`：倒数第 `di` 根K线，默认 `1`；\n- `n`：观察窗口，默认 `20`；\n- `m`：中枢滑窗，默认 `5`。\n\n## 对齐说明\n\n中枢重叠与真假突破条件对齐 Python `bar_fake_break_V230204`。\n",".claude/skills/signal-functions/references/signals/bar_fang_liang_break_V221216.md":"# bar_fang_liang_break_V221216：放量突破与缩量回踩\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}TH{th}#{ma_type}#{timeperiod}_突破V221216`\n\n## 信号逻辑\n\n1. 计算指定均线，检查末根是否放量且站上均线，判 `放量突破`；\n2. 检查末根是否缩量且收盘不破均线，且前序收盘与均线距离在阈值内，判 `缩量回踩`；\n3. 在窗口长度 `5~9` 中依次尝试，首次出现突破即返回。\n\n## 信号列表示例\n\n- `Signal('15分钟_D1TH300#SMA#233_突破V221216_放量突破_缩量回踩_任意_0')`\n- `Signal('15分钟_D1TH300#SMA#233_突破V221216_其他_其他_任意_0')`\n\n## 参数说明\n\n- `di`：倒数第 `di` 根K线，默认 `1`；\n- `th`：回踩距离阈值（BP），默认 `300`；\n- `ma_type`：均线类型，默认 `SMA`；\n- `timeperiod`：均线周期，默认 `233`。\n\n## 对齐说明\n\n窗口扫描与两阶段条件对齐 Python `bar_fang_liang_break_V221216`。\n",".claude/skills/signal-functions/references/signals/bar_limit_down_V230525.md":"# bar_limit_down_V230525：跌停后反包阳线\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_跌停后无下影线长实体阳线_短线V230525`\n\n## 信号逻辑\n\n1. 仅日线级别；\n2. 前一日近似跌停：`low==close<prev_close && close/prev_close<0.95`；\n3. 当日无下影长阳：`low==open && close>open && solid>2*upper && close/open>1.07`；\n4. 且当日最低低于前日最低，判 `满足`。\n\n## 信号列表示例\n\n- `Signal('日线_跌停后无下影线长实体阳线_短线V230525_满足_任意_任意_0')`\n- `Signal('日线_跌停后无下影线长实体阳线_短线V230525_其他_任意_任意_0')`\n\n## 参数说明\n\n- 无额外参数。\n\n## 对齐说明\n\n条件组合与 Python `bar_limit_down_V230525` 保持一致。\n",".claude/skills/signal-functions/references/signals/bar_mean_amount_V221112.md":"# bar_mean_amount_V221112：区间均额分类信号\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}K{n}B均额_{th1}至{th2}千万`\n\n## 信号逻辑\n\n1. 取倒数第 `di` 根截止的最近 `n` 根K线；\n2. 计算平均成交额 `m`；\n3. 若 `m/1e7` 在 `[th1, th2]` 判 `是`，否则判 `否`。\n\n## 信号列表示例\n\n- `Signal('60分钟_D1K10B均额_1至4千万_是_任意_任意_0')`\n- `Signal('60分钟_D1K10B均额_1至4千万_否_任意_任意_0')`\n\n## 参数说明\n\n- `di`：倒数第 `di` 根K线，默认 `1`；\n- `n`：样本长度，默认 `10`；\n- `th1`：下限（千万），默认 `1`；\n- `th2`：上限（千万），默认 `4`。\n\n## 对齐说明\n\n均额口径与 Python `bar_mean_amount_V221112` 保持一致。\n",".claude/skills/signal-functions/references/signals/bar_operate_span_V221111.md":"# bar_operate_span_V221111：日内时间区间过滤\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_T{t1}#{t2}_时间区间V221111`\n\n## 信号逻辑\n\n1. 读取最新K线时间 `HHMM`；\n2. 若 `t1 <= HHMM <= t2` 判定 `是`，否则判定 `否`。\n\n## 信号列表示例\n\n- `Signal('60分钟_T0935#1450_时间区间_是_任意_任意_0')`\n- `Signal('60分钟_T0935#1450_时间区间_否_任意_任意_0')`\n\n## 参数说明\n\n- `t1`：起始时间（`HHMM`），默认 `0935`；\n- `t2`：结束时间（`HHMM`），默认 `1450`。\n\n## 对齐说明\n\n边界包含比较与 Python `bar_operate_span_V221111` 一致。\n",".claude/skills/signal-functions/references/signals/bar_plr_V240427.md":"# bar_plr_V240427：盈亏比约束\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}W{w}T{t}M{m}_盈亏比V240427`\n\n## 信号逻辑\n\n1. `多头`：以窗口最低点前的最高点与当前收盘计算盈亏比；\n2. `空头`：以窗口最高点前的最低点与当前收盘计算盈亏比；\n3. `plr > t/10` 判 `满足`，否则 `不满足`。\n\n## 信号列表示例\n\n- `Signal('60分钟_D1W60T20M多头_盈亏比V240427_满足_任意_任意_0')`\n- `Signal('60分钟_D1W60T20M空头_盈亏比V240427_不满足_任意_任意_0')`\n\n## 参数说明\n\n- `di`：倒数第 `di` 根K线，默认 `1`；\n- `w`：窗口长度，默认 `60`；\n- `t`：阈值（`t/10`），默认 `20`；\n- `m`：方向，`多头/空头`，默认 `多头`。\n\n## 对齐说明\n\n盈亏比定义与阈值比较对齐 Python `bar_plr_V240427`。\n",".claude/skills/signal-functions/references/signals/bar_polyfit_V240428.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_polyfit_V240428.md -->",".claude/skills/signal-functions/references/signals/bar_r_breaker_V230326.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_r_breaker_V230326.md -->",".claude/skills/signal-functions/references/signals/bar_reversal_V230227.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_reversal_V230227.md -->",".claude/skills/signal-functions/references/signals/bar_section_momentum_V221112.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_section_momentum_V221112.md -->",".claude/skills/signal-functions/references/signals/bar_shuang_fei_V230507.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_shuang_fei_V230507.md -->",".claude/skills/signal-functions/references/signals/bar_single_V230214.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_single_V230214.md -->",".claude/skills/signal-functions/references/signals/bar_single_V230506.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_single_V230506.md -->",".claude/skills/signal-functions/references/signals/bar_td9_V240616.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_td9_V240616.md -->",".claude/skills/signal-functions/references/signals/bar_time_V230327.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_time_V230327.md -->",".claude/skills/signal-functions/references/signals/bar_tnr_V230629.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_tnr_V230629.md -->",".claude/skills/signal-functions/references/signals/bar_tnr_V230630.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_tnr_V230630.md -->",".claude/skills/signal-functions/references/signals/bar_trend_V240209.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_trend_V240209.md -->",".claude/skills/signal-functions/references/signals/bar_triple_V230506.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_triple_V230506.md -->",".claude/skills/signal-functions/references/signals/bar_vol_bs1_V230224.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_vol_bs1_V230224.md -->",".claude/skills/signal-functions/references/signals/bar_vol_grow_V221112.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_vol_grow_V221112.md -->",".claude/skills/signal-functions/references/signals/bar_volatility_V241013.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_volatility_V241013.md -->",".claude/skills/signal-functions/references/signals/bar_weekday_V230328.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_weekday_V230328.md -->",".claude/skills/signal-functions/references/signals/bar_window_ps_V230731.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_window_ps_V230731.md -->",".claude/skills/signal-functions/references/signals/bar_window_ps_V230801.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_window_ps_V230801.md -->",".claude/skills/signal-functions/references/signals/bar_window_std_V230731.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_window_std_V230731.md -->",".claude/skills/signal-functions/references/signals/bar_zdf_V221203.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_zdf_V221203.md -->",".claude/skills/signal-functions/references/signals/bar_zdt_V230331.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_zdt_V230331.md -->",".claude/skills/signal-functions/references/signals/bar_zfzd_V241013.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_zfzd_V241013.md -->",".claude/skills/signal-functions/references/signals/bar_zfzd_V241014.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_zfzd_V241014.md -->",".claude/skills/signal-functions/references/signals/bar_zt_count_V230504.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_zt_count_V230504.md -->",".claude/skills/signal-functions/references/signals/bias_up_dw_line_V230618.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbias_up_dw_line_V230618.md -->",".claude/skills/signal-functions/references/signals/byi_bi_end_V230106.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbyi_bi_end_V230106.md -->",".claude/skills/signal-functions/references/signals/byi_bi_end_V230107.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbyi_bi_end_V230107.md -->",".claude/skills/signal-functions/references/signals/byi_fx_num_V230628.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbyi_fx_num_V230628.md -->",".claude/skills/signal-functions/references/signals/byi_second_bs_V230324.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbyi_second_bs_V230324.md -->",".claude/skills/signal-functions/references/signals/byi_symmetry_zs_V221107.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbyi_symmetry_zs_V221107.md -->",".claude/skills/signal-functions/references/signals/cat_macd_V230518.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcat_macd_V230518.md -->",".claude/skills/signal-functions/references/signals/cat_macd_V230520.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcat_macd_V230520.md -->",".claude/skills/signal-functions/references/signals/cci_decision_V240620.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcci_decision_V240620.md -->",".claude/skills/signal-functions/references/signals/clv_up_dw_line_V230605.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fclv_up_dw_line_V230605.md -->",".claude/skills/signal-functions/references/signals/cmo_up_dw_line_V230605.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcmo_up_dw_line_V230605.md -->",".claude/skills/signal-functions/references/signals/coo_cci_V230323.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcoo_cci_V230323.md -->",".claude/skills/signal-functions/references/signals/coo_kdj_V230322.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcoo_kdj_V230322.md -->",".claude/skills/signal-functions/references/signals/coo_sar_V230325.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcoo_sar_V230325.md -->",".claude/skills/signal-functions/references/signals/coo_td_V221110.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcoo_td_V221110.md -->",".claude/skills/signal-functions/references/signals/coo_td_V221111.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcoo_td_V221111.md -->",".claude/skills/signal-functions/references/signals/cvolp_up_dw_line_V230612.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcvolp_up_dw_line_V230612.md -->",".claude/skills/signal-functions/references/signals/cxt_bi_base_V230228.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_bi_base_V230228.md -->",".claude/skills/signal-functions/references/signals/cxt_bi_end_V230104.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_bi_end_V230104.md -->",".claude/skills/signal-functions/references/signals/cxt_bi_end_V230105.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_bi_end_V230105.md -->",".claude/skills/signal-functions/references/signals/cxt_bi_end_V230222.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_bi_end_V230222.md -->",".claude/skills/signal-functions/references/signals/cxt_bi_end_V230224.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_bi_end_V230224.md -->",".claude/skills/signal-functions/references/signals/cxt_bi_end_V230312.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_bi_end_V230312.md -->",".claude/skills/signal-functions/references/signals/cxt_bi_end_V230320.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_bi_end_V230320.md -->",".claude/skills/signal-functions/references/signals/cxt_bi_end_V230322.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_bi_end_V230322.md -->",".claude/skills/signal-functions/references/signals/cxt_bi_end_V230324.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_bi_end_V230324.md -->",".claude/skills/signal-functions/references/signals/cxt_bi_end_V230618.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_bi_end_V230618.md -->",".claude/skills/signal-functions/references/signals/cxt_bi_end_V230815.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_bi_end_V230815.md -->",".claude/skills/signal-functions/references/signals/cxt_bi_status_V230101.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_bi_status_V230101.md -->",".claude/skills/signal-functions/references/signals/cxt_bi_status_V230102.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_bi_status_V230102.md -->",".claude/skills/signal-functions/references/signals/cxt_bi_stop_V230815.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_bi_stop_V230815.md -->",".claude/skills/signal-functions/references/signals/cxt_bi_trend_V230824.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_bi_trend_V230824.md -->",".claude/skills/signal-functions/references/signals/cxt_bi_trend_V230913.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_bi_trend_V230913.md -->",".claude/skills/signal-functions/references/signals/cxt_bi_zdf_V230601.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_bi_zdf_V230601.md -->",".claude/skills/signal-functions/references/signals/cxt_bs_V240526.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_bs_V240526.md -->",".claude/skills/signal-functions/references/signals/cxt_bs_V240527.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_bs_V240527.md -->",".claude/skills/signal-functions/references/signals/cxt_decision_V240526.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_decision_V240526.md -->",".claude/skills/signal-functions/references/signals/cxt_decision_V240612.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_decision_V240612.md -->",".claude/skills/signal-functions/references/signals/cxt_decision_V240613.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_decision_V240613.md -->",".claude/skills/signal-functions/references/signals/cxt_decision_V240614.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_decision_V240614.md -->",".claude/skills/signal-functions/references/signals/cxt_double_zs_V230311.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_double_zs_V230311.md -->",".claude/skills/signal-functions/references/signals/cxt_eleven_bi_V230622.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_eleven_bi_V230622.md -->",".claude/skills/signal-functions/references/signals/cxt_first_buy_V221126.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_first_buy_V221126.md -->",".claude/skills/signal-functions/references/signals/cxt_first_sell_V221126.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_first_sell_V221126.md -->",".claude/skills/signal-functions/references/signals/cxt_five_bi_V230619.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_five_bi_V230619.md -->",".claude/skills/signal-functions/references/signals/cxt_fx_power_V221107.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_fx_power_V221107.md -->",".claude/skills/signal-functions/references/signals/cxt_intraday_V230701.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_intraday_V230701.md -->",".claude/skills/signal-functions/references/signals/cxt_nine_bi_V230621.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_nine_bi_V230621.md -->",".claude/skills/signal-functions/references/signals/cxt_overlap_V240526.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_overlap_V240526.md -->",".claude/skills/signal-functions/references/signals/cxt_overlap_V240612.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_overlap_V240612.md -->",".claude/skills/signal-functions/references/signals/cxt_range_oscillation_V230620.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_range_oscillation_V230620.md -->",".claude/skills/signal-functions/references/signals/cxt_second_bs_V230320.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_second_bs_V230320.md -->",".claude/skills/signal-functions/references/signals/cxt_second_bs_V240524.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_second_bs_V240524.md -->",".claude/skills/signal-functions/references/signals/cxt_seven_bi_V230620.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_seven_bi_V230620.md -->",".claude/skills/signal-functions/references/signals/cxt_third_bs_V230318.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_third_bs_V230318.md -->",".claude/skills/signal-functions/references/signals/cxt_third_bs_V230319.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_third_bs_V230319.md -->",".claude/skills/signal-functions/references/signals/cxt_third_buy_V230228.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_third_buy_V230228.md -->",".claude/skills/signal-functions/references/signals/cxt_three_bi_V230618.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_three_bi_V230618.md -->",".claude/skills/signal-functions/references/signals/cxt_ubi_end_V230816.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_ubi_end_V230816.md -->",".claude/skills/signal-functions/references/signals/cxt_zhong_shu_gong_zhen_V221221.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_zhong_shu_gong_zhen_V221221.md -->",".claude/skills/signal-functions/references/signals/dema_up_dw_line_V230605.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fdema_up_dw_line_V230605.md -->",".claude/skills/signal-functions/references/signals/demakder_up_dw_line_V230605.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fdemakder_up_dw_line_V230605.md -->",".claude/skills/signal-functions/references/signals/emv_up_dw_line_V230605.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Femv_up_dw_line_V230605.md -->",".claude/skills/signal-functions/references/signals/er_up_dw_line_V230604.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fer_up_dw_line_V230604.md -->",".claude/skills/signal-functions/references/signals/jcc_ci_tou_V221101.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fjcc_ci_tou_V221101.md -->",".claude/skills/signal-functions/references/signals/jcc_fan_ji_xian_V221121.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fjcc_fan_ji_xian_V221121.md -->",".claude/skills/signal-functions/references/signals/jcc_fen_shou_xian_V20221113.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fjcc_fen_shou_xian_V20221113.md -->",".claude/skills/signal-functions/references/signals/jcc_gap_yin_yang_V221121.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fjcc_gap_yin_yang_V221121.md -->",".claude/skills/signal-functions/references/signals/jcc_ping_tou_V221113.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fjcc_ping_tou_V221113.md -->",".claude/skills/signal-functions/references/signals/jcc_san_fa_V20221115.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fjcc_san_fa_V20221115.md -->",".claude/skills/signal-functions/references/signals/jcc_san_fa_V20221118.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fjcc_san_fa_V20221118.md -->",".claude/skills/signal-functions/references/signals/jcc_san_szx_V221122.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fjcc_san_szx_V221122.md -->",".claude/skills/signal-functions/references/signals/jcc_san_xing_xian_V221023.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fjcc_san_xing_xian_V221023.md -->",".claude/skills/signal-functions/references/signals/jcc_shan_chun_V221121.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fjcc_shan_chun_V221121.md -->",".claude/skills/signal-functions/references/signals/jcc_szx_V221111.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fjcc_szx_V221111.md -->",".claude/skills/signal-functions/references/signals/jcc_ta_xing_V221124.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fjcc_ta_xing_V221124.md -->",".claude/skills/signal-functions/references/signals/jcc_ten_mo_V221028.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fjcc_ten_mo_V221028.md -->",".claude/skills/signal-functions/references/signals/jcc_three_crow_V221108.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fjcc_three_crow_V221108.md -->",".claude/skills/signal-functions/references/signals/jcc_two_crow_V221108.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fjcc_two_crow_V221108.md -->",".claude/skills/signal-functions/references/signals/jcc_wu_yun_gai_ding_V221101.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fjcc_wu_yun_gai_ding_V221101.md -->",".claude/skills/signal-functions/references/signals/jcc_xing_xian_V221118.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fjcc_xing_xian_V221118.md -->",".claude/skills/signal-functions/references/signals/jcc_yun_xian_V221118.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fjcc_yun_xian_V221118.md -->",".claude/skills/signal-functions/references/signals/jcc_zhu_huo_xian_V221027.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fjcc_zhu_huo_xian_V221027.md -->",".claude/skills/signal-functions/references/signals/kcatr_up_dw_line_V230823.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fkcatr_up_dw_line_V230823.md -->",".claude/skills/signal-functions/references/signals/ntmdk_V230824.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fntmdk_V230824.md -->",".claude/skills/signal-functions/references/signals/obv_up_dw_line_V230719.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fobv_up_dw_line_V230719.md -->",".claude/skills/signal-functions/references/signals/obvm_line_V230610.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fobvm_line_V230610.md -->",".claude/skills/signal-functions/references/signals/pos_bar_stop_V230524.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fpos_bar_stop_V230524.md -->",".claude/skills/signal-functions/references/signals/pos_fix_exit_V230624.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fpos_fix_exit_V230624.md -->",".claude/skills/signal-functions/references/signals/pos_fx_stop_V230414.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fpos_fx_stop_V230414.md -->",".claude/skills/signal-functions/references/signals/pos_holds_V230414.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fpos_holds_V230414.md -->",".claude/skills/signal-functions/references/signals/pos_holds_V230807.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fpos_holds_V230807.md -->",".claude/skills/signal-functions/references/signals/pos_holds_V240428.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fpos_holds_V240428.md -->",".claude/skills/signal-functions/references/signals/pos_holds_V240608.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fpos_holds_V240608.md -->",".claude/skills/signal-functions/references/signals/pos_ma_V230414.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fpos_ma_V230414.md -->",".claude/skills/signal-functions/references/signals/pos_profit_loss_V230624.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fpos_profit_loss_V230624.md -->",".claude/skills/signal-functions/references/signals/pos_status_V230808.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fpos_status_V230808.md -->",".claude/skills/signal-functions/references/signals/pos_stop_V240331.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fpos_stop_V240331.md -->",".claude/skills/signal-functions/references/signals/pos_stop_V240428.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fpos_stop_V240428.md -->",".claude/skills/signal-functions/references/signals/pos_stop_V240608.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fpos_stop_V240608.md -->",".claude/skills/signal-functions/references/signals/pos_stop_V240614.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fpos_stop_V240614.md -->",".claude/skills/signal-functions/references/signals/pos_stop_V240717.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fpos_stop_V240717.md -->",".claude/skills/signal-functions/references/signals/pos_take_V240428.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fpos_take_V240428.md -->",".claude/skills/signal-functions/references/signals/pressure_support_V240222.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fpressure_support_V240222.md -->",".claude/skills/signal-functions/references/signals/pressure_support_V240402.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fpressure_support_V240402.md -->",".claude/skills/signal-functions/references/signals/pressure_support_V240406.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fpressure_support_V240406.md -->",".claude/skills/signal-functions/references/signals/pressure_support_V240530.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fpressure_support_V240530.md -->",".claude/skills/signal-functions/references/signals/skdj_up_dw_line_V230611.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fskdj_up_dw_line_V230611.md -->",".claude/skills/signal-functions/references/signals/tas_accelerate_V230531.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_accelerate_V230531.md -->",".claude/skills/signal-functions/references/signals/tas_angle_V230802.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_angle_V230802.md -->",".claude/skills/signal-functions/references/signals/tas_atr_V230630.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_atr_V230630.md -->",".claude/skills/signal-functions/references/signals/tas_atr_break_V230424.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_atr_break_V230424.md -->",".claude/skills/signal-functions/references/signals/tas_boll_bc_V221118.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_boll_bc_V221118.md -->",".claude/skills/signal-functions/references/signals/tas_boll_cc_V230312.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_boll_cc_V230312.md -->",".claude/skills/signal-functions/references/signals/tas_boll_power_V221112.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_boll_power_V221112.md -->",".claude/skills/signal-functions/references/signals/tas_boll_vt_V230212.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_boll_vt_V230212.md -->",".claude/skills/signal-functions/references/signals/tas_cci_base_V230402.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_cci_base_V230402.md -->",".claude/skills/signal-functions/references/signals/tas_cross_status_V230619.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_cross_status_V230619.md -->",".claude/skills/signal-functions/references/signals/tas_cross_status_V230624.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_cross_status_V230624.md -->",".claude/skills/signal-functions/references/signals/tas_cross_status_V230625.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_cross_status_V230625.md -->",".claude/skills/signal-functions/references/signals/tas_dif_layer_V241010.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_dif_layer_V241010.md -->",".claude/skills/signal-functions/references/signals/tas_dif_zero_V240612.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_dif_zero_V240612.md -->",".claude/skills/signal-functions/references/signals/tas_dif_zero_V240614.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_dif_zero_V240614.md -->",".claude/skills/signal-functions/references/signals/tas_dma_bs_V240608.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_dma_bs_V240608.md -->",".claude/skills/signal-functions/references/signals/tas_double_ma_V221203.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_double_ma_V221203.md -->",".claude/skills/signal-functions/references/signals/tas_double_ma_V230511.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_double_ma_V230511.md -->",".claude/skills/signal-functions/references/signals/tas_double_ma_V240208.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_double_ma_V240208.md -->",".claude/skills/signal-functions/references/signals/tas_first_bs_V230217.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_first_bs_V230217.md -->",".claude/skills/signal-functions/references/signals/tas_hlma_V230301.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_hlma_V230301.md -->",".claude/skills/signal-functions/references/signals/tas_kdj_base_V221101.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_kdj_base_V221101.md -->",".claude/skills/signal-functions/references/signals/tas_kdj_evc_V221201.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_kdj_evc_V221201.md -->",".claude/skills/signal-functions/references/signals/tas_kdj_evc_V230401.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_kdj_evc_V230401.md -->",".claude/skills/signal-functions/references/signals/tas_low_trend_V230627.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_low_trend_V230627.md -->",".claude/skills/signal-functions/references/signals/tas_ma_base_V221101.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_ma_base_V221101.md -->",".claude/skills/signal-functions/references/signals/tas_ma_base_V221203.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_ma_base_V221203.md -->",".claude/skills/signal-functions/references/signals/tas_ma_base_V230313.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_ma_base_V230313.md -->",".claude/skills/signal-functions/references/signals/tas_ma_cohere_V230512.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_ma_cohere_V230512.md -->",".claude/skills/signal-functions/references/signals/tas_ma_round_V221206.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_ma_round_V221206.md -->",".claude/skills/signal-functions/references/signals/tas_ma_system_V230513.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_ma_system_V230513.md -->",".claude/skills/signal-functions/references/signals/tas_macd_base_V221028.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_base_V221028.md -->",".claude/skills/signal-functions/references/signals/tas_macd_base_V230320.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_base_V230320.md -->",".claude/skills/signal-functions/references/signals/tas_macd_bc_V221201.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_bc_V221201.md -->",".claude/skills/signal-functions/references/signals/tas_macd_bc_V230803.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_bc_V230803.md -->",".claude/skills/signal-functions/references/signals/tas_macd_bc_V230804.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_bc_V230804.md -->",".claude/skills/signal-functions/references/signals/tas_macd_bc_V240307.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_bc_V240307.md -->",".claude/skills/signal-functions/references/signals/tas_macd_bc_ubi_V230804.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_bc_ubi_V230804.md -->",".claude/skills/signal-functions/references/signals/tas_macd_bs1_V230312.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_bs1_V230312.md -->",".claude/skills/signal-functions/references/signals/tas_macd_bs1_V230313.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_bs1_V230313.md -->",".claude/skills/signal-functions/references/signals/tas_macd_bs1_V230411.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_bs1_V230411.md -->",".claude/skills/signal-functions/references/signals/tas_macd_bs1_V230412.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_bs1_V230412.md -->",".claude/skills/signal-functions/references/signals/tas_macd_change_V221105.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_change_V221105.md -->",".claude/skills/signal-functions/references/signals/tas_macd_direct_V221106.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_direct_V221106.md -->",".claude/skills/signal-functions/references/signals/tas_macd_dist_V230408.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_dist_V230408.md -->",".claude/skills/signal-functions/references/signals/tas_macd_dist_V230409.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_dist_V230409.md -->",".claude/skills/signal-functions/references/signals/tas_macd_dist_V230410.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_dist_V230410.md -->",".claude/skills/signal-functions/references/signals/tas_macd_first_bs_V221201.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_first_bs_V221201.md -->",".claude/skills/signal-functions/references/signals/tas_macd_first_bs_V221216.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_first_bs_V221216.md -->",".claude/skills/signal-functions/references/signals/tas_macd_power_V221108.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_power_V221108.md -->",".claude/skills/signal-functions/references/signals/tas_macd_second_bs_V221201.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_second_bs_V221201.md -->",".claude/skills/signal-functions/references/signals/tas_macd_xt_V221208.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_xt_V221208.md -->",".claude/skills/signal-functions/references/signals/tas_rsi_base_V230227.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_rsi_base_V230227.md -->",".claude/skills/signal-functions/references/signals/tas_rumi_V230704.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_rumi_V230704.md -->",".claude/skills/signal-functions/references/signals/tas_sar_base_V230425.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_sar_base_V230425.md -->",".claude/skills/signal-functions/references/signals/tas_second_bs_V230228.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_second_bs_V230228.md -->",".claude/skills/signal-functions/references/signals/tas_second_bs_V230303.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_second_bs_V230303.md -->",".claude/skills/signal-functions/references/signals/tas_slope_V231019.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_slope_V231019.md -->",".claude/skills/signal-functions/references/signals/vol_double_ma_V230214.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fvol_double_ma_V230214.md -->",".claude/skills/signal-functions/references/signals/vol_gao_di_V221218.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fvol_gao_di_V221218.md -->",".claude/skills/signal-functions/references/signals/vol_single_ma_V230214.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fvol_single_ma_V230214.md -->",".claude/skills/signal-functions/references/signals/vol_ti_suo_V221216.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fvol_ti_suo_V221216.md -->",".claude/skills/signal-functions/references/signals/vol_window_V230731.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fvol_window_V230731.md -->",".claude/skills/signal-functions/references/signals/vol_window_V230801.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fvol_window_V230801.md -->",".claude/skills/signal-functions/references/signals/xl_bar_basis_V240411.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fxl_bar_basis_V240411.md -->",".claude/skills/signal-functions/references/signals/xl_bar_basis_V240412.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fxl_bar_basis_V240412.md -->",".claude/skills/signal-functions/references/signals/xl_bar_position_V240328.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fxl_bar_position_V240328.md -->",".claude/skills/signal-functions/references/signals/xl_bar_trend_V240329.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fxl_bar_trend_V240329.md -->",".claude/skills/signal-functions/references/signals/xl_bar_trend_V240330.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fxl_bar_trend_V240330.md -->",".claude/skills/signal-functions/references/signals/xl_bar_trend_V240331.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fxl_bar_trend_V240331.md -->",".claude/skills/signal-functions/references/signals/xl_bar_trend_V240623.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fxl_bar_trend_V240623.md -->",".claude/skills/signal-functions/references/signals/zdy_stop_loss_V230406.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fzdy_stop_loss_V230406.md -->",".claude/skills/signal-functions/references/signals/zdy_take_profit_V230406.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fzdy_take_profit_V230406.md -->",".claude/skills/signal-functions/references/signals/zdy_take_profit_V230407.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fzdy_take_profit_V230407.md -->",".claude/skills/signal-functions/references/signals/zdy_vibrate_V230406.md":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fzdy_vibrate_V230406.md -->","CLAUDE.md":"# CLAUDE.md\n\nThis file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.\n\n## 项目概述\n\nCZSC（缠中说禅技术分析工具）是基于缠中说禅理论的综合性量化交易Python库，提供技术分析、信号生成、回测和市场分析等功能。本项目专注于实现缠论的分型、笔、线段等核心概念的自动识别，以及基于此的多级别量化交易策略。\n\n## 🏛️ 开发宪法（Constitution）\n\n以下规则是本项目长期演进的**硬约束**，任何 PR、任何重构、任何\"为了赶进度的临时变通\"都不得违反。与此冲突的代码审查意见、个人偏好、历史代码一律以本节为准；违反本节的代码即便已合入，也按 bug 处理、必须回滚或修复。\n\n### 第一条 · Rust ↔ Python 行为一致\n\n**需要 Rust 实现的部分必须同时满足 Rust crate 与 Python wheel 行为一致（Python 端纯透传，禁止再写适配层）。**\n\n> 落地参考（2026-05-17）：策略门面 `CzscStrategyBase` 的 `unique_signals` / `save_positions` / `load_positions` 已全部下沉到 `crates/czsc-trader/src/strategy.rs`，Python 端只剩 1 行 `_native.*` 透传；新增的文件完整性校验改用 `sha256(canonical JSON)`，可在 Rust / Python 端 byte-for-byte 一致复现。任何违反本条的新 PR 都会被 `tests/unit/test_strategy_save_load_parity.py::test_strategies_module_no_longer_uses_hashlib_or_json` 等源码级 ratchet 拦下。\n\n具体含义：\n\n- 同一个名字（如 `monotonicity` / `CzscStrategyBase` / `generate_czsc_signals` / `CZSC`），`cargo add czsc` 的 Rust 用户与 `pip install czsc` 的 Python 用户调用后**行为必须一致**——同样的输入产生同样的输出，默认参数、错误处理、边界条件、字段命名都一致。\n- Python 侧**只允许**做下面两类工作：\n  1. **纯透传**：`from czsc._native import xxx` 后直接 re-export，不做任何包装；\n  2. **不可避免的 PyO3 边界胶水**：DataFrame ↔ Arrow IPC 序列化、`pathlib.Path` ↔ `String` 转换等，PyO3 类型系统无法跨越的边界处理。\n- **禁止**在 Python 侧做参数归一化、默认值补齐、返回值字段重命名、错误码翻译、`isinstance` 多态分支等\"适配层\"工作——这类逻辑必须下沉到 Rust 端实现（修改现有 API 或新增 API）。\n- 新增 Python wrapper 之前，PR 描述里必须先回答\"为什么不能改成 Rust 实现\"，并经过 reviewer 显式批准。\n\n**违反本条的常见信号（在 review 中视为红线）**：\n\n- Python 函数体内出现 `if isinstance(bars, pd.DataFrame): ... elif isinstance(bars, list): ...` 等多态分支；\n- Python 函数返回的 dict 字段顺序 / 命名与 Rust 端 `serde` 输出不一致；\n- 同一份功能在 Python 测试覆盖完整，但 `cargo test` 没有等价用例；\n- CHANGELOG 写 \"Python 端默认参数从 X 改为 Y\"，但 Rust 端无对应改动；\n- `czsc/_runtime_adapters.py` 等\"适配层\"文件持续膨胀，而不是被逐步搬空到 Rust。\n\n## 常用开发命令\n\n### UV 包管理 (项目使用UV管理依赖)\n```bash\n# 同步依赖并安装开发工具（仅在 pyproject.toml / uv.lock 变更时跑）\nuv sync --extra dev\n\n# 安装所有依赖组合\nuv sync --extra all\n\n# 运行测试（日常默认 --no-sync，省去每次 4-5s 的 lockfile/venv 一致性检查）\nuv run --no-sync pytest\n\n# 运行指定测试文件\nuv run --no-sync pytest tests/test_analyze.py -v\n\n# 运行单个测试函数\nuv run --no-sync pytest tests/test_analyze.py::test_czsc_basic -v\n\n# 带覆盖率的测试\nuv run --no-sync pytest --cov=czsc\n\n# 跑全套（含 @pytest.mark.slow 标记的耗时测试，CI / 发布前用）\nuv run --no-sync pytest --run-slow\n\n# 代码格式化和检查（项目使用 ruff，不使用 black/isort/flake8）\nuv run --no-sync ruff format czsc/ tests/\nuv run --no-sync ruff check czsc/ tests/\n```\n\n> **`--no-sync` 约定**：`uv run` 默认会做 lockfile 解析 + venv 一致性检查（本地稳定 4-5s 固定开销）。日常开发循环里依赖很少变，统一用 `--no-sync` 跳过；仅在 `pyproject.toml` / `uv.lock` 改动后显式跑一次 `uv sync` 即可。\n\n### 测试规范\n- 所有测试文件位于 `tests/` 目录，使用 pytest 格式\n- **关键原则**：测试数据统一通过 `czsc.mock` 模块获取，不要在测试中硬编码模拟数据\n- 测试文件命名模式：`test_*.py`\n- 模拟数据使用 `generate_symbol_kines` 函数生成，支持多品种、多频率、可重现的随机数据\n- **慢测试约定**：依赖 `time.sleep` 或子进程冷启动的测试加 `@pytest.mark.slow`，默认跳过；CI / 发布前用 `pytest --run-slow` 跑全套。注册逻辑见 `tests/conftest.py`。\n\n\n## 代码架构\n\n### 核心组件\n\n1. **`czsc._native`** - PyO3 编译产生的 Rust 扩展模块（缠论核心）：\n   - 由 `crates/czsc-python` 通过 `maturin` 打包，扩展模块名 `czsc._native`\n   - 暴露 `CZSC / FX / BI / ZS / RawBar / NewBar / Freq / Mark / Direction / Operate / Signal / Event / Position / BarGenerator` 等核心类型\n   - 暴露 `check_bi / check_fx / check_fxs / remove_include / freq_end_time / is_trading_time` 等工具函数\n   - 暴露 220+ 信号函数（Python 端 7 个子模块：bar/cvolp/cxt/obv/pressure/tas/vol；底层 `crates/czsc-signals/src/` 有 22 个 .rs 源文件，可用 `ls crates/czsc-signals/src/` 自查最新清单）\n   - 暴露 `czsc._native.ta.*`（Rust TA 算子，供信号函数内部使用；本次清理 起 Python 端不再暴露 `czsc.ta` 顶层 alias）\n   - **不存在 Python 回退**：核心分析统一由 Rust 实现。\n\n2. **`crates/`** - Rust workspace（9 个 crate）：\n   - `czsc` / `czsc-core` / `czsc-derive` / `czsc-signals` / `czsc-trader` / `czsc-utils` / `czsc-ta`\n   - `czsc-signal-macros`（proc-macro，`#[signal]` 注册宏）\n   - `czsc-python`（PyO3 binding 总入口，唯一启用 `pyo3/extension-module` 的 crate）\n\n3. **`czsc/traders/`** - 交易执行框架：\n   - `__init__.py`：facade，统一 re-export `CzscSignals / CzscTrader / generate_czsc_signals / get_signals_config / get_signals_freqs / derive_signals_config / derive_signals_freqs / get_unique_signals / WeightBacktest`，全部来自 `czsc._native` 或 `wbt`\n   - `base.py` / `sig_parse.py` 纯透传文件已于 2026-05-17 PR-C 整文件 git rm，新代码请直接走 `czsc.traders` 或 `czsc._native`\n   - `optimize.py` 已于 2026-05-17 PR-C `git mv` 到 `czsc/utils/optimize.py`（职责更贴近 utils）；调用方请用 `from czsc.utils.optimize import OpensOptimize, ExitsOptimize, CzscOpenOptimStrategy, CzscExitOptimStrategy`\n\n4. **`czsc/_native.signals`** - 信号函数（Rust 实现，通过 PyO3 暴露）：\n   - Python 端暴露 7 个子模块（bar/cvolp/cxt/obv/pressure/tas/vol）；底层 `crates/czsc-signals/src/` 有 22 个 .rs 源文件，自查命令：`ls crates/czsc-signals/src/`\n   - 原 `czsc/signals/` Python 命名空间层已在 Phase J **彻底删除**\n   - 通过 `czsc.traders.generate_czsc_signals` 等接口调用信号\n   - 信号解析 API：`get_signals_config` / `get_signals_freqs`（`czsc.traders`）\n\n5. **`czsc/utils/`** - 工具模块（Phase J 精简后）：\n   - `data/cache.py` / `io.py` / `log.py` / `kline_quality.py`：缓存、IO、日志、K 线质量校验\n   - `analysis/corr.py`（仅剩 `cross_sectional_ic`；`stats.py` 与 `nmi_matrix` / `single_linear` 已于 2026-05-17 PR-A 删除，`daily_performance` / `top_drawdowns` 改由顶层 `czsc.*` 透传 wbt）\n   - `data/client.py`：统一数据客户端接口\n   - TA 算子由 Rust `czsc._native.ta` 提供（信号内部依赖），顶层别名 `czsc.{ema,sma,rolling_rank,boll_positions,ultimate_smoother}` 保留；仪表盘场景的 MACD（×2 约定）已下沉为 `czsc/utils/plotting/_macd.py` 私有辅助\n   - `trade.py`：交易工具\n   - `plotting/{kline,weight}.py` + `plotting/lightweight/`：plotly 单周期 K 线 + 权重时序图 / lightweight-charts 自包含 HTML\n   - 已删除：`bar_generator.py` / `bi_info.py`（Rust 已实现）、`st_components.py` / `echarts_*` / `pdf_report` / `html_report_builder` / `word_writer` / `signal_analyzer` / `crypto/` / `czsc/svc/` / `plotting/backtest.py` / `plotting/common.py`（本次清理 删除 Streamlit 组件库与回测可视化函数；迁移详见 `docs/migration/cleanup-non-czsc-core.md`）\n\n7. **`czsc/connectors/`** - 数据源连接器：\n   - 支持天勤、Tushare、CCXT 等多个数据源\n   - 统一的数据接口封装；`local_data.py`（原 `research.py`）提供 CZSC 投研共享数据的本地缓存读取入口\n\n### 信号-事件-交易体系\n\n项目实现了系统化的量化交易方法：\n- **信号（Signals）**: 基础技术指标和市场状态\n- **事件（Events）**: 信号的逻辑组合，通过 signals_all/signals_any/signals_not 实现 AND/OR/NOT 逻辑\n- **交易（Trading）**: 基于事件和风险管理的执行\n\n### 多级别联立分析\n\nCZSC 支持使用 `CzscTrader` 类进行多级别联立分析，可同时分析不同时间周期（如1分钟、5分钟、30分钟、日线）进行全面的市场决策。\n\n## 开发指南\n\n### 代码规范\n- 行长度：120字符（在 pyproject.toml 中配置）\n- 适当使用类型提示\n- 遵循代码库中现有的命名约定\n- 信号函数通过 `#[signal]` 宏在 Rust 端自动注册到 `SIGNAL_REGISTRY`，命名遵循 Rust 模块约定，不再使用历史上的 `V<yyMMdd>` 版本后缀\n- **代码质量原则**：\n  - **DRY（Don't Repeat Yourself）**: 提取重复代码为辅助函数\n  - **KISS（Keep It Simple）**: 保持函数简洁，职责单一\n  - **使用模块级常量**: 避免魔法值，集中管理配置\n  - **类型提示优先**: 使用 `Literal`、`Optional` 等提升代码可读性\n  - **向后兼容性**: 公共 API 修改需谨慎，避免破坏现有代码\n  - **文档完整**: 所有公共函数必须有完整的 docstring\n\n### 信号函数开发\n- 信号函数应遵循飞书文档中的规范说明\n- 信号函数由 Rust 实现，位于 `crates/czsc-signals/` 中\n- 原 Python 版 `czsc/signals/` 已彻底删除（Phase J）；新增信号需在 Rust 侧开发\n- 信号解析公共 API：`get_signals_config(signals_seq)` / `get_signals_freqs(signals_seq)`（来自 `czsc.traders`）\n- 直接使用上述两个函数解析信号配置。\n\n### 数据处理最佳实践\n- 测试数据统一通过 `czsc.mock.generate_symbol_kines` 生成\n- 使用 `format_standard_kline` 将DataFrame转换为RawBar对象列表\n- 使用 `BarGenerator` 进行K线合成和多级别分析\n- 通过 `DataClient` 统一访问不同数据源\n- 注意使用磁盘缓存提高重复计算效率\n\n### 数据格式转换\n```python\n# 从 mock 数据生成 CZSC 对象（全部走顶层 czsc 命名空间）\nfrom czsc import CZSC, Freq, format_standard_kline\nfrom czsc.mock import generate_symbol_kines\n\n# 生成K线数据\ndf = generate_symbol_kines('000001', '30分钟', '20240101', '20240105')\n\n# 转换为RawBar对象列表\nbars = format_standard_kline(df, freq=Freq.F30)\n\n# 创建CZSC分析对象\nczsc_obj = CZSC(bars)\n```\n\n### 回测可视化\n\n`czsc.utils.plotting.backtest` 模块已在二阶段清理 PR-C 删除。推荐做法：\n\n- **权重回测报告**：`wbt.generate_backtest_report(dfw, ...)` 生成自包含 HTML（参见 `docs/examples/13_event_weight_backtest.py`）\n- **缠论 + 多周期联立**：`czsc.utils.plotting.lightweight.plot_czsc{,_trader,_signals}` 输出 lightweight-charts HTML\n- **单周期 K 线 + 缠论结构**：`czsc.utils.plotting.kline.KlineChart` / `plot_czsc_chart`\n- **自定义统计图**：直接用 `plotly.express` / `plotly.graph_objects`，迁移示例见 `docs/migration/cleanup-non-czsc-core.md`\n\n### 依赖管理（UV配置）\n- 核心运行时依赖定义在 `pyproject.toml` 的 `[project.dependencies]` 中\n- 开发依赖在 `[project.optional-dependencies.dev]` 中\n- 测试依赖在 `[project.optional-dependencies.test]` 中\n- 使用 UV 进行依赖管理和虚拟环境控制\n- 项目使用 UV 管理 Python 依赖与虚拟环境（详见根目录 README \"开发环境\" 章节）\n\n## 关键环境变量和设置\n\n- `CZSC_VERBOSE` / `czsc_verbose`：是否打印详细日志（来自 `czsc.envs`）\n- `CZSC_MIN_BI_LEN` / `czsc_min_bi_len`：最小笔长度，默认 6（来自 `czsc.envs`）\n- `CZSC_MAX_BI_NUM` / `czsc_max_bi_num`：最大笔数量，默认 50（来自 `czsc.envs`）\n- 大小写两种写法都接受，大写优先；构造器显式参数优先级最高\n- 缓存目录自动管理，具备大小监控功能\n\n## 缓存管理\n\n项目大量使用磁盘缓存：\n- 缓存位置：`czsc.home_path`（顶层）或 `czsc.utils.data.cache.home_path`（实际定义处）\n- 清除缓存：`czsc.empty_cache_path()`\n- 监控大小：`czsc.get_dir_size(czsc.home_path)`\n- 当缓存超过1GB时 `czsc.welcome()` 会显示清理提示\n\n## 可视化（Plotly + HTML）\n\n所有可视化统一由 plotly 实现，输出方式：\n\n- `czsc.utils.plotting.kline.KlineChart` / `plot_czsc_chart`：单周期 K 线 + 缠论结构（plotly Figure，可 `fig.show()` 或写 HTML）\n- `czsc.utils.plotting.weight.*`：权重时序图（plotly）\n- `czsc.utils.plotting.lightweight.plot_czsc{,_trader,_signals}`：lightweight-charts 自包含 HTML，多周期联立 + 信号叠加\n\n使用 `plot_czsc`、`plot_czsc_trader` 或 `plot_czsc_signals` 生成自包含 HTML 后，可直接在浏览器中打开。\n\n## Rust/Python 混合架构\n\n项目核心算法用 Rust 实现，通过 PyO3 暴露给 Python：\n- **构建方式**：`maturin + Rust workspace`，扩展模块名 `czsc._native`\n- **唯一架构**：Rust 是缠论核心算法的唯一实现；Python 端不再保留任何回退（spec §3.1 / §3.4）\n- **API 暴露**：所有面向用户的 API 都通过 `czsc.xxx` 顶层命名空间暴露，禁止用户感知 `czsc._native`\n- **Python/Rust 分工**：见本文件顶部「🏛️ 开发宪法 · 第一条」。该条款是硬约束，与此冲突的任何\"局部例外\"都不成立。\n- **类型 stub**：`czsc/py.typed` 启用 inline 类型注解；扩展模块 stub 已生成于 `czsc/_native/__init__.pyi`，由 `pyo3-stub-gen` 自动维护\n- **构建环境约束**：使用 `pyo3-stub-gen` 0.23 与 `pyo3` 0.29；项目要求 Python ≥ 3.10，通过 `crates/czsc-python/build.rs` 在编译期校验 `PYO3_PYTHON`，低于 3.10 时直接报错\n- **版本号锁死**（PR-5）：crates.io 与 PyPI 必须使用同一版本号。**唯一版本源**是 `Cargo.toml [workspace.package].version`；`pyproject.toml` 用 `dynamic = [\"version\"]`，由 maturin 在打 wheel 时从 Cargo workspace 注入。`crates/czsc-python/build.rs` 会在编译期校验 pyproject.toml 仍然走 dynamic 路径，禁止硬编码 `version = \"...\"`\n- **发版流程**：bump `Cargo.toml [workspace.package].version` 后，同步 publish 到 crates.io（`cargo publish`）与 PyPI（`maturin publish`）；CHANGELOG 必须列出本次 release 的 breaking changes\n- **rs-czsc 关系**：czsc 一次性 fork rs-czsc 的 Rust 实现进本仓库，**不再做季度同步**；`tests/parity/` 目录已删除，不再保留 rs-czsc parity 比对测试\n\n## 数据连接器支持\n\n项目集成多个数据源连接器（见 `czsc/connectors/`）：\n- `tq_connector.py`: 天勤数据源\n- `ts_connector.py`: Tushare 数据源\n- `ccxt_connector.py`: 数字货币数据源\n- `local_data.py`: 投研数据本地缓存接口（原 `research.py`，已于评审决议中改名）\n\n## 回测和策略研究框架\n\n### 策略开发基础（`czsc/strategies.py`）\n- `CzscStrategyBase`: 策略开发的抽象基类\n- `CzscJsonStrategy`: JSON 配置化的策略实现\n- 策略要素：品种参数、K线周期、信号配置、持仓策略\n- 支持策略序列化和反序列化\n- 研究入口统一指向 `czsc.research.run_research / run_replay / run_optimize_batch`（Rust 后端）\n\n### 信号函数体系（`czsc._native.signals`）\n- 信号函数由 Rust 实现，通过 PyO3 暴露为 `czsc._native.signals.*`\n- Python 端暴露 7 个子模块（bar/cvolp/cxt/obv/pressure/tas/vol）；底层 `crates/czsc-signals/src/` 有 22 个 .rs 源文件，自查命令：`ls crates/czsc-signals/src/`\n- 注册机制：`#[signal]` 宏自动注册到 `SIGNAL_REGISTRY`，不再使用 `V<yyMMdd>` 版本后缀\n- 原 Python `czsc/signals/` 目录已彻底删除（Phase J）\n- 信号配置解析：`get_signals_config` / `get_signals_freqs`（`czsc.traders`），底层调用 Rust 端 `derive_signals_config` / `derive_signals_freqs`\n\n### 探索性数据分析（顶层 `czsc.*`，原 `czsc/eda.py` 已下线）\n- `monotonicity`: 单调性分析（PR-D 已下沉 Rust 实现）\n- `mark_cta_periods`: 标记 CTA 最易/最难赚钱时间段（PR-B 拆到 `czsc/utils/`）\n- `mark_volatility`: 标记高/低波动率时间段（PR-B 拆到 `czsc/utils/`）\n\n> 其余历史函数 `weights_simple_ensemble` / `cal_trade_price` / `cal_yearly_days` / `turnover_rate` 已于 PR-A 二阶段清理中删除；迁移说明见 [`docs/migration/cleanup-non-czsc-core.md`](docs/migration/cleanup-non-czsc-core.md)。\n\n## 重要文档和资源\n\n- [项目文档](https://s0cqcxuy3p.feishu.cn/wiki/wikcn3gB1MKl3ClpLnboHM1QgKf)\n- [信号函数编写规范](https://s0cqcxuy3p.feishu.cn/wiki/wikcnCFLLTNGbr2THqo7KtWfBkd)\n- [API文档](https://czsc.readthedocs.io/en/latest/modules.html)\n- [B站视频教程](https://space.bilibili.com/243682308/channel/series)\n\n## 示例代码和用例\n\n项目维护的示例代码集中在 `docs/examples/` 下（如 `08_weight_backtest.py`、`13_lightweight_charts_html.py`、`15_lightweight_signals_html.py` 等）；HTML 路径示例（13/15）完整保留。\n\n## 项目特色和最佳实践\n\n1. **混合架构设计**: Rust性能优化 + Python灵活性\n2. **多级别联立分析**: 支持多时间周期综合决策\n3. **系统化信号体系**: 信号→事件→交易的完整流程\n4. **丰富的数据源**: 支持A股、期货、数字货币等多市场\n5. **完善的测试框架**: 统一的模拟数据生成和测试规范\n6. **可视化工具**: Plotly + lightweight-charts HTML 输出\n7. **策略研究工具**: CTA框架、参数优化、回测分析一体化\n8. **代码质量优化**: 遵循 DRY、KISS、SOLID 原则\n   - 使用模块级常量消除魔法值\n   - 提取辅助函数减少代码重复\n   - 完善的类型提示（Type Hints）\n   - 清晰的函数职责分离\n   - 保持向后兼容性的 API 设计\n"},"items":[{"name":"CLAUDE.md","path":"CLAUDE.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/CLAUDE.md","title":"Claude Agent Guidelines & System Prompt","category":"claude-rule","format":"markdown","content":"# CLAUDE.md\n\nThis file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.\n\n## 项目概述\n\nCZSC（缠中说禅技术分析工具）是基于缠中说禅理论的综合性量化交易Python库，提供技术分析、信号生成、回测和市场分析等功能。本项目专注于实现缠论的分型、笔、线段等核心概念的自动识别，以及基于此的多级别量化交易策略。\n\n## 🏛️ 开发宪法（Constitution）\n\n以下规则是本项目长期演进的**硬约束**，任何 PR、任何重构、任何\"为了赶进度的临时变通\"都不得违反。与此冲突的代码审查意见、个人偏好、历史代码一律以本节为准；违反本节的代码即便已合入，也按 bug 处理、必须回滚或修复。\n\n### 第一条 · Rust ↔ Python 行为一致\n\n**需要 Rust 实现的部分必须同时满足 Rust crate 与 Python wheel 行为一致（Python 端纯透传，禁止再写适配层）。**\n\n> 落地参考（2026-05-17）：策略门面 `CzscStrategyBase` 的 `unique_signals` / `save_positions` / `load_positions` 已全部下沉到 `crates/czsc-trader/src/strategy.rs`，Python 端只剩 1 行 `_native.*` 透传；新增的文件完整性校验改用 `sha256(canonical JSON)`，可在 Rust / Python 端 byte-for-byte 一致复现。任何违反本条的新 PR 都会被 `tests/unit/test_strategy_save_load_parity.py::test_strategies_module_no_longer_uses_hashlib_or_json` 等源码级 ratchet 拦下。\n\n具体含义：\n\n- 同一个名字（如 `monotonicity` / `CzscStrategyBase` / `generate_czsc_signals` / `CZSC`），`cargo add czsc` 的 Rust 用户与 `pip install czsc` 的 Python 用户调用后**行为必须一致**——同样的输入产生同样的输出，默认参数、错误处理、边界条件、字段命名都一致。\n- Python 侧**只允许**做下面两类工作：\n  1. **纯透传**：`from czsc._native import xxx` 后直接 re-export，不做任何包装；\n  2. **不可避免的 PyO3 边界胶水**：DataFrame ↔ Arrow IPC 序列化、`pathlib.Path` ↔ `String` 转换等，PyO3 类型系统无法跨越的边界处理。\n- **禁止**在 Python 侧做参数归一化、默认值补齐、返回值字段重命名、错误码翻译、`isinstance` 多态分支等\"适配层\"工作——这类逻辑必须下沉到 Rust 端实现（修改现有 API 或新增 API）。\n- 新增 Python wrapper 之前，PR 描述里必须先回答\"为什么不能改成 Rust 实现\"，并经过 reviewer 显式批准。\n\n**违反本条的常见信号（在 review 中视为红线）**：\n\n- Python 函数体内出现 `if isinstance(bars, pd.DataFrame): ... elif isinstance(bars, list): ...` 等多态分支；\n- Python 函数返回的 dict 字段顺序 / 命名与 Rust 端 `serde` 输出不一致；\n- 同一份功能在 Python 测试覆盖完整，但 `cargo test` 没有等价用例；\n- CHANGELOG 写 \"Python 端默认参数从 X 改为 Y\"，但 Rust 端无对应改动；\n- `czsc/_runtime_adapters.py` 等\"适配层\"文件持续膨胀，而不是被逐步搬空到 Rust。\n\n## 常用开发命令\n\n### UV 包管理 (项目使用UV管理依赖)\n```bash\n# 同步依赖并安装开发工具（仅在 pyproject.toml / uv.lock 变更时跑）\nuv sync --extra dev\n\n# 安装所有依赖组合\nuv sync --extra all\n\n# 运行测试（日常默认 --no-sync，省去每次 4-5s 的 lockfile/venv 一致性检查）\nuv run --no-sync pytest\n\n# 运行指定测试文件\nuv run --no-sync pytest tests/test_analyze.py -v\n\n# 运行单个测试函数\nuv run --no-sync pytest tests/test_analyze.py::test_czsc_basic -v\n\n# 带覆盖率的测试\nuv run --no-sync pytest --cov=czsc\n\n# 跑全套（含 @pytest.mark.slow 标记的耗时测试，CI / 发布前用）\nuv run --no-sync pytest --run-slow\n\n# 代码格式化和检查（项目使用 ruff，不使用 black/isort/flake8）\nuv run --no-sync ruff format czsc/ tests/\nuv run --no-sync ruff check czsc/ tests/\n```\n\n> **`--no-sync` 约定**：`uv run` 默认会做 lockfile 解析 + venv 一致性检查（本地稳定 4-5s 固定开销）。日常开发循环里依赖很少变，统一用 `--no-sync` 跳过；仅在 `pyproject.toml` / `uv.lock` 改动后显式跑一次 `uv sync` 即可。\n\n### 测试规范\n- 所有测试文件位于 `tests/` 目录，使用 pytest 格式\n- **关键原则**：测试数据统一通过 `czsc.mock` 模块获取，不要在测试中硬编码模拟数据\n- 测试文件命名模式：`test_*.py`\n- 模拟数据使用 `generate_symbol_kines` 函数生成，支持多品种、多频率、可重现的随机数据\n- **慢测试约定**：依赖 `time.sleep` 或子进程冷启动的测试加 `@pytest.mark.slow`，默认跳过；CI / 发布前用 `pytest --run-slow` 跑全套。注册逻辑见 `tests/conftest.py`。\n\n\n## 代码架构\n\n### 核心组件\n\n1. **`czsc._native`** - PyO3 编译产生的 Rust 扩展模块（缠论核心）：\n   - 由 `crates/czsc-python` 通过 `maturin` 打包，扩展模块名 `czsc._native`\n   - 暴露 `CZSC / FX / BI / ZS / RawBar / NewBar / Freq / Mark / Direction / Operate / Signal / Event / Position / BarGenerator` 等核心类型\n   - 暴露 `check_bi / check_fx / check_fxs / remove_include / freq_end_time / is_trading_time` 等工具函数\n   - 暴露 220+ 信号函数（Python 端 7 个子模块：bar/cvolp/cxt/obv/pressure/tas/vol；底层 `crates/czsc-signals/src/` 有 22 个 .rs 源文件，可用 `ls crates/czsc-signals/src/` 自查最新清单）\n   - 暴露 `czsc._native.ta.*`（Rust TA 算子，供信号函数内部使用；本次清理 起 Python 端不再暴露 `czsc.ta` 顶层 alias）\n   - **不存在 Python 回退**：核心分析统一由 Rust 实现。\n\n2. **`crates/`** - Rust workspace（9 个 crate）：\n   - `czsc` / `czsc-core` / `czsc-derive` / `czsc-signals` / `czsc-trader` / `czsc-utils` / `czsc-ta`\n   - `czsc-signal-macros`（proc-macro，`#[signal]` 注册宏）\n   - `czsc-python`（PyO3 binding 总入口，唯一启用 `pyo3/extension-module` 的 crate）\n\n3. **`czsc/traders/`** - 交易执行框架：\n   - `__init__.py`：facade，统一 re-export `CzscSignals / CzscTrader / generate_czsc_signals / get_signals_config / get_signals_freqs / derive_signals_config / derive_signals_freqs / get_unique_signals / WeightBacktest`，全部来自 `czsc._native` 或 `wbt`\n   - `base.py` / `sig_parse.py` 纯透传文件已于 2026-05-17 PR-C 整文件 git rm，新代码请直接走 `czsc.traders` 或 `czsc._native`\n   - `optimize.py` 已于 2026-05-17 PR-C `git mv` 到 `czsc/utils/optimize.py`（职责更贴近 utils）；调用方请用 `from czsc.utils.optimize import OpensOptimize, ExitsOptimize, CzscOpenOptimStrategy, CzscExitOptimStrategy`\n\n4. **`czsc/_native.signals`** - 信号函数（Rust 实现，通过 PyO3 暴露）：\n   - Python 端暴露 7 个子模块（bar/cvolp/cxt/obv/pressure/tas/vol）；底层 `crates/czsc-signals/src/` 有 22 个 .rs 源文件，自查命令：`ls crates/czsc-signals/src/`\n   - 原 `czsc/signals/` Python 命名空间层已在 Phase J **彻底删除**\n   - 通过 `czsc.traders.generate_czsc_signals` 等接口调用信号\n   - 信号解析 API：`get_signals_config` / `get_signals_freqs`（`czsc.traders`）\n\n5. **`czsc/utils/`** - 工具模块（Phase J 精简后）：\n   - `data/cache.py` / `io.py` / `log.py` / `kline_quality.py`：缓存、IO、日志、K 线质量校验\n   - `analysis/corr.py`（仅剩 `cross_sectional_ic`；`stats.py` 与 `nmi_matrix` / `single_linear` 已于 2026-05-17 PR-A 删除，`daily_performance` / `top_drawdowns` 改由顶层 `czsc.*` 透传 wbt）\n   - `data/client.py`：统一数据客户端接口\n   - TA 算子由 Rust `czsc._native.ta` 提供（信号内部依赖），顶层别名 `czsc.{ema,sma,rolling_rank,boll_positions,ultimate_smoother}` 保留；仪表盘场景的 MACD（×2 约定）已下沉为 `czsc/utils/plotting/_macd.py` 私有辅助\n   - `trade.py`：交易工具\n   - `plotting/{kline,weight}.py` + `plotting/lightweight/`：plotly 单周期 K 线 + 权重时序图 / lightweight-charts 自包含 HTML\n   - 已删除：`bar_generator.py` / `bi_info.py`（Rust 已实现）、`st_components.py` / `echarts_*` / `pdf_report` / `html_report_builder` / `word_writer` / `signal_analyzer` / `crypto/` / `czsc/svc/` / `plotting/backtest.py` / `plotting/common.py`（本次清理 删除 Streamlit 组件库与回测可视化函数；迁移详见 `docs/migration/cleanup-non-czsc-core.md`）\n\n7. **`czsc/connectors/`** - 数据源连接器：\n   - 支持天勤、Tushare、CCXT 等多个数据源\n   - 统一的数据接口封装；`local_data.py`（原 `research.py`）提供 CZSC 投研共享数据的本地缓存读取入口\n\n### 信号-事件-交易体系\n\n项目实现了系统化的量化交易方法：\n- **信号（Signals）**: 基础技术指标和市场状态\n- **事件（Events）**: 信号的逻辑组合，通过 signals_all/signals_any/signals_not 实现 AND/OR/NOT 逻辑\n- **交易（Trading）**: 基于事件和风险管理的执行\n\n### 多级别联立分析\n\nCZSC 支持使用 `CzscTrader` 类进行多级别联立分析，可同时分析不同时间周期（如1分钟、5分钟、30分钟、日线）进行全面的市场决策。\n\n## 开发指南\n\n### 代码规范\n- 行长度：120字符（在 pyproject.toml 中配置）\n- 适当使用类型提示\n- 遵循代码库中现有的命名约定\n- 信号函数通过 `#[signal]` 宏在 Rust 端自动注册到 `SIGNAL_REGISTRY`，命名遵循 Rust 模块约定，不再使用历史上的 `V<yyMMdd>` 版本后缀\n- **代码质量原则**：\n  - **DRY（Don't Repeat Yourself）**: 提取重复代码为辅助函数\n  - **KISS（Keep It Simple）**: 保持函数简洁，职责单一\n  - **使用模块级常量**: 避免魔法值，集中管理配置\n  - **类型提示优先**: 使用 `Literal`、`Optional` 等提升代码可读性\n  - **向后兼容性**: 公共 API 修改需谨慎，避免破坏现有代码\n  - **文档完整**: 所有公共函数必须有完整的 docstring\n\n### 信号函数开发\n- 信号函数应遵循飞书文档中的规范说明\n- 信号函数由 Rust 实现，位于 `crates/czsc-signals/` 中\n- 原 Python 版 `czsc/signals/` 已彻底删除（Phase J）；新增信号需在 Rust 侧开发\n- 信号解析公共 API：`get_signals_config(signals_seq)` / `get_signals_freqs(signals_seq)`（来自 `czsc.traders`）\n- 直接使用上述两个函数解析信号配置。\n\n### 数据处理最佳实践\n- 测试数据统一通过 `czsc.mock.generate_symbol_kines` 生成\n- 使用 `format_standard_kline` 将DataFrame转换为RawBar对象列表\n- 使用 `BarGenerator` 进行K线合成和多级别分析\n- 通过 `DataClient` 统一访问不同数据源\n- 注意使用磁盘缓存提高重复计算效率\n\n### 数据格式转换\n```python\n# 从 mock 数据生成 CZSC 对象（全部走顶层 czsc 命名空间）\nfrom czsc import CZSC, Freq, format_standard_kline\nfrom czsc.mock import generate_symbol_kines\n\n# 生成K线数据\ndf = generate_symbol_kines('000001', '30分钟', '20240101', '20240105')\n\n# 转换为RawBar对象列表\nbars = format_standard_kline(df, freq=Freq.F30)\n\n# 创建CZSC分析对象\nczsc_obj = CZSC(bars)\n```\n\n### 回测可视化\n\n`czsc.utils.plotting.backtest` 模块已在二阶段清理 PR-C 删除。推荐做法：\n\n- **权重回测报告**：`wbt.generate_backtest_report(dfw, ...)` 生成自包含 HTML（参见 `docs/examples/13_event_weight_backtest.py`）\n- **缠论 + 多周期联立**：`czsc.utils.plotting.lightweight.plot_czsc{,_trader,_signals}` 输出 lightweight-charts HTML\n- **单周期 K 线 + 缠论结构**：`czsc.utils.plotting.kline.KlineChart` / `plot_czsc_chart`\n- **自定义统计图**：直接用 `plotly.express` / `plotly.graph_objects`，迁移示例见 `docs/migration/cleanup-non-czsc-core.md`\n\n### 依赖管理（UV配置）\n- 核心运行时依赖定义在 `pyproject.toml` 的 `[project.dependencies]` 中\n- 开发依赖在 `[project.optional-dependencies.dev]` 中\n- 测试依赖在 `[project.optional-dependencies.test]` 中\n- 使用 UV 进行依赖管理和虚拟环境控制\n- 项目使用 UV 管理 Python 依赖与虚拟环境（详见根目录 README \"开发环境\" 章节）\n\n## 关键环境变量和设置\n\n- `CZSC_VERBOSE` / `czsc_verbose`：是否打印详细日志（来自 `czsc.envs`）\n- `CZSC_MIN_BI_LEN` / `czsc_min_bi_len`：最小笔长度，默认 6（来自 `czsc.envs`）\n- `CZSC_MAX_BI_NUM` / `czsc_max_bi_num`：最大笔数量，默认 50（来自 `czsc.envs`）\n- 大小写两种写法都接受，大写优先；构造器显式参数优先级最高\n- 缓存目录自动管理，具备大小监控功能\n\n## 缓存管理\n\n项目大量使用磁盘缓存：\n- 缓存位置：`czsc.home_path`（顶层）或 `czsc.utils.data.cache.home_path`（实际定义处）\n- 清除缓存：`czsc.empty_cache_path()`\n- 监控大小：`czsc.get_dir_size(czsc.home_path)`\n- 当缓存超过1GB时 `czsc.welcome()` 会显示清理提示\n\n## 可视化（Plotly + HTML）\n\n所有可视化统一由 plotly 实现，输出方式：\n\n- `czsc.utils.plotting.kline.KlineChart` / `plot_czsc_chart`：单周期 K 线 + 缠论结构（plotly Figure，可 `fig.show()` 或写 HTML）\n- `czsc.utils.plotting.weight.*`：权重时序图（plotly）\n- `czsc.utils.plotting.lightweight.plot_czsc{,_trader,_signals}`：lightweight-charts 自包含 HTML，多周期联立 + 信号叠加\n\n使用 `plot_czsc`、`plot_czsc_trader` 或 `plot_czsc_signals` 生成自包含 HTML 后，可直接在浏览器中打开。\n\n## Rust/Python 混合架构\n\n项目核心算法用 Rust 实现，通过 PyO3 暴露给 Python：\n- **构建方式**：`maturin + Rust workspace`，扩展模块名 `czsc._native`\n- **唯一架构**：Rust 是缠论核心算法的唯一实现；Python 端不再保留任何回退（spec §3.1 / §3.4）\n- **API 暴露**：所有面向用户的 API 都通过 `czsc.xxx` 顶层命名空间暴露，禁止用户感知 `czsc._native`\n- **Python/Rust 分工**：见本文件顶部「🏛️ 开发宪法 · 第一条」。该条款是硬约束，与此冲突的任何\"局部例外\"都不成立。\n- **类型 stub**：`czsc/py.typed` 启用 inline 类型注解；扩展模块 stub 已生成于 `czsc/_native/__init__.pyi`，由 `pyo3-stub-gen` 自动维护\n- **构建环境约束**：使用 `pyo3-stub-gen` 0.23 与 `pyo3` 0.29；项目要求 Python ≥ 3.10，通过 `crates/czsc-python/build.rs` 在编译期校验 `PYO3_PYTHON`，低于 3.10 时直接报错\n- **版本号锁死**（PR-5）：crates.io 与 PyPI 必须使用同一版本号。**唯一版本源**是 `Cargo.toml [workspace.package].version`；`pyproject.toml` 用 `dynamic = [\"version\"]`，由 maturin 在打 wheel 时从 Cargo workspace 注入。`crates/czsc-python/build.rs` 会在编译期校验 pyproject.toml 仍然走 dynamic 路径，禁止硬编码 `version = \"...\"`\n- **发版流程**：bump `Cargo.toml [workspace.package].version` 后，同步 publish 到 crates.io（`cargo publish`）与 PyPI（`maturin publish`）；CHANGELOG 必须列出本次 release 的 breaking changes\n- **rs-czsc 关系**：czsc 一次性 fork rs-czsc 的 Rust 实现进本仓库，**不再做季度同步**；`tests/parity/` 目录已删除，不再保留 rs-czsc parity 比对测试\n\n## 数据连接器支持\n\n项目集成多个数据源连接器（见 `czsc/connectors/`）：\n- `tq_connector.py`: 天勤数据源\n- `ts_connector.py`: Tushare 数据源\n- `ccxt_connector.py`: 数字货币数据源\n- `local_data.py`: 投研数据本地缓存接口（原 `research.py`，已于评审决议中改名）\n\n## 回测和策略研究框架\n\n### 策略开发基础（`czsc/strategies.py`）\n- `CzscStrategyBase`: 策略开发的抽象基类\n- `CzscJsonStrategy`: JSON 配置化的策略实现\n- 策略要素：品种参数、K线周期、信号配置、持仓策略\n- 支持策略序列化和反序列化\n- 研究入口统一指向 `czsc.research.run_research / run_replay / run_optimize_batch`（Rust 后端）\n\n### 信号函数体系（`czsc._native.signals`）\n- 信号函数由 Rust 实现，通过 PyO3 暴露为 `czsc._native.signals.*`\n- Python 端暴露 7 个子模块（bar/cvolp/cxt/obv/pressure/tas/vol）；底层 `crates/czsc-signals/src/` 有 22 个 .rs 源文件，自查命令：`ls crates/czsc-signals/src/`\n- 注册机制：`#[signal]` 宏自动注册到 `SIGNAL_REGISTRY`，不再使用 `V<yyMMdd>` 版本后缀\n- 原 Python `czsc/signals/` 目录已彻底删除（Phase J）\n- 信号配置解析：`get_signals_config` / `get_signals_freqs`（`czsc.traders`），底层调用 Rust 端 `derive_signals_config` / `derive_signals_freqs`\n\n### 探索性数据分析（顶层 `czsc.*`，原 `czsc/eda.py` 已下线）\n- `monotonicity`: 单调性分析（PR-D 已下沉 Rust 实现）\n- `mark_cta_periods`: 标记 CTA 最易/最难赚钱时间段（PR-B 拆到 `czsc/utils/`）\n- `mark_volatility`: 标记高/低波动率时间段（PR-B 拆到 `czsc/utils/`）\n\n> 其余历史函数 `weights_simple_ensemble` / `cal_trade_price` / `cal_yearly_days` / `turnover_rate` 已于 PR-A 二阶段清理中删除；迁移说明见 [`docs/migration/cleanup-non-czsc-core.md`](docs/migration/cleanup-non-czsc-core.md)。\n\n## 重要文档和资源\n\n- [项目文档](https://s0cqcxuy3p.feishu.cn/wiki/wikcn3gB1MKl3ClpLnboHM1QgKf)\n- [信号函数编写规范](https://s0cqcxuy3p.feishu.cn/wiki/wikcnCFLLTNGbr2THqo7KtWfBkd)\n- [API文档](https://czsc.readthedocs.io/en/latest/modules.html)\n- [B站视频教程](https://space.bilibili.com/243682308/channel/series)\n\n## 示例代码和用例\n\n项目维护的示例代码集中在 `docs/examples/` 下（如 `08_weight_backtest.py`、`13_lightweight_charts_html.py`、`15_lightweight_signals_html.py` 等）；HTML 路径示例（13/15）完整保留。\n\n## 项目特色和最佳实践\n\n1. **混合架构设计**: Rust性能优化 + Python灵活性\n2. **多级别联立分析**: 支持多时间周期综合决策\n3. **系统化信号体系**: 信号→事件→交易的完整流程\n4. **丰富的数据源**: 支持A股、期货、数字货币等多市场\n5. **完善的测试框架**: 统一的模拟数据生成和测试规范\n6. **可视化工具**: Plotly + lightweight-charts HTML 输出\n7. **策略研究工具**: CTA框架、参数优化、回测分析一体化\n8. **代码质量优化**: 遵循 DRY、KISS、SOLID 原则\n   - 使用模块级常量消除魔法值\n   - 提取辅助函数减少代码重复\n   - 完善的类型提示（Type Hints）\n   - 清晰的函数职责分离\n   - 保持向后兼容性的 API 设计\n","isInternal":false,"tokens":6660,"sizeBytes":18544},{"name":"release_checklist.md","path":".claude/skills/czsc-release/references/release_checklist.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/czsc-release/references/release_checklist.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# Release Checklist —— 权威版本指针\n\n> ⚠️ **不要在此处复制 checklist 内容** —— 会与项目根的权威版本漂移。\n>\n> 完整清单（9 节、214 行）保存在仓库根目录：\n>\n> 👉 **[`docs/release_checklist.md`](../../../../docs/release_checklist.md)**\n>\n> 维护者修改清单时**只改 `docs/release_checklist.md` 这一份**，本指针文件不需要同步更新。\n\n## 为什么本目录不放副本\n\n- **单源不漂移**：复制一份到 references/ 后，每次更新都得改两处；漂移后 LLM 不知道该信哪份。\n- **不用 symlink**：跨 OS（Windows）+ 某些 git 配置下软链接行为不一致；skill 可能被复制/分发到其他工作目录，断链后 silent 失败。\n- **保留 references/ 目录结构**：符合 Anthropic skill convention（references/ 承载参考材料），让 SKILL.md 的引用路径稳定。\n\n## SKILL.md 是怎么用这份清单的\n\n`../SKILL.md` 在 **Phase 0** 和 **Phase 2** 把这份清单作为 **ratchet** 强制引入：\n\n- **Phase 0**：用 `Read` 工具读 `docs/release_checklist.md` 全文（一次性，加载到上下文）。\n- **Phase 2 预检**：把 docs §3 / §4 / §5 / §9 的命令逐条跑完；任何一条 fail → 停。\n- **不许跳**：哪怕\"只是 docs 改动\"也要按 §1 跑代码/文档一致性检查（`czsc.xxx` 引用是否还存在、已退役关键字是否还有残留、文件路径是否还在）—— 历史教训里大量发版事故来自\"docs 改了但忘了 push、或 docs 引用了已删 API 让下游 demo 炸\"。\n\n## 9 节速览（详情看 docs）\n\n1. **代码冻结前**：所有 PR 已合 / CHANGELOG 已更 / 迁移说明已写；**代码 ↔ Markdown 文档一致性硬性检查**（含 3 段命令找漂移）\n2. **版本号**：SemVer 决策树、单一版本源、prerelease 规则\n3. **本地 Rust 验证**：cargo fmt / clippy / test / stub_gen + git diff 校验\n4. **本地 Python 验证**：`pytest --run-slow`、ruff、冒烟 import 链\n5. **本地 Wheel 验证**：含 Linux aarch64 / musllinux 的 docker 验证（CI 不覆盖）\n6. **发布动作**：TestPyPI 演练 → tag push 触发 PyPI 真发 → 手动 dispatch crates.io 真发\n7. **发布后验证**：PyPI / crates.io 页面、GitHub Release、干净环境冒烟\n8. **隐藏缺陷雷达**：按历史踩坑频度排序的 10 项风险表\n9. **一键自检脚本**：把 §3+§4+§5 串成可跑的 bash 一脚本\n","isInternal":false,"tokens":897,"sizeBytes":2448},{"name":"SKILL.md","path":".claude/skills/czsc-release/SKILL.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/czsc-release/SKILL.md","title":"czsc-release","category":"anthropic-skill","format":"markdown","content":"---\nname: czsc-release\ndescription: 规范 czsc 库（混合 Rust + Python，PyO3 + maturin）的版本发布流程。当用户说\"发版/发布/release/publish czsc\"、\"bump 版本\"、\"出 rc.N+1\"、\"准备 1.0.0 stable\"、要把 Rust crate 推 crates.io 或 wheel 推 PyPI 时使用。本 skill 半自动执行预检 / bump / CHANGELOG / commit，遇 push tag / push master / 真 publish 等不可逆动作时停下来要授权。\n---\n\n# CZSC Release Workflow\n\n## 📋 Mandatory References（必读，且必须逐项核完才能进 Phase 3）\n\n| 文件 | 角色 | 何时读 |\n|---|---|---|\n| **`docs/release_checklist.md`**（项目根目录，权威 214 行清单） | 9 节硬性检查清单 —— 含代码/文档一致性、SemVer 决策、本地 Rust/Python/Wheel 三层验证、发布动作顺序、发布后验证、隐藏缺陷雷达、一键自检脚本 | **Phase 0 一次性 Read 全文**；Phase 2 按 §3/§4/§5/§9 跑命令 |\n| `references/release_checklist.md`（本目录） | 上述文件的 pointer（不存内容，避免漂移） | 仅供路径定位 |\n\n**ratchet 规则**：本 skill 的 Phase 2 预检是 `docs/release_checklist.md` 的最小子集。完整清单**必须全部 ✅ 通过**才能进 Phase 3 bump 版本。任何一项 fail / 跳过 → 停下问用户，不要自己决定\"这条不重要\"。\n\n## Overview\n\nczsc 是 **Rust + Python 混合包**：\n\n- crates.io 上发 6 个业务 crate（`czsc-derive`/`czsc-signal-macros` → `czsc-core` → `czsc-ta`/`czsc-utils` → `czsc-signals` → `czsc-trader` → `czsc` facade）\n- PyPI 上发 1 个 wheel（`czsc`，扩展模块 `czsc._native` 由 `crates/czsc-python` 通过 maturin 编译）\n\n两边**版本号必须严格一致**（宪法第一条 + PR-5）。**唯一版本源是 `Cargo.toml [workspace.package].version`**，pyproject.toml 用 `dynamic = [\"version\"]` 由 maturin 注入，`crates/czsc-python/build.rs` 在编译期 ratchet 禁止 pyproject.toml 硬编码 version。\n\n发版**完全靠 GitHub Actions 自动化**：\n\n| 触发 | Workflow | 行为 |\n|---|---|---|\n| `git push origin vX.Y.Z` | `.github/workflows/python-publish.yml` | 自动 build wheels + smoke + 推 PyPI（OIDC Trusted Publishing） |\n| `git push origin vX.Y.Z` | `.github/workflows/rust-publish.yml` | 默认 **dry-run**；真 publish 需 workflow_dispatch + `do_publish=true` |\n\n本 skill 的责任是**人手动做才不会错**的部分：版本决策、CHANGELOG 落档、预检、tag/push 时机、CI 监控、出错重发。\n\n## What this skill does / doesn't do\n\n| ✅ skill 替你做 | ❌ skill 不做 |\n|---|---|\n| 跑全套预检（fmt / clippy / pytest / maturin / stub） | 真按 PyPI 上传按钮（CI 干） |\n| 推下一版本号（基于 CHANGELOG 推 SemVer） | 真按 crates.io publish（CI workflow_dispatch 干） |\n| Bump `Cargo.toml` workspace version | 给 OIDC trusted publishing / CRATES_IO_TOKEN 配凭证（一次性人工事） |\n| 把 CHANGELOG `[Unreleased]` 落档成 `[X.Y.Z] — YYYY-MM-DD` | `git push origin master`、`git tag`、`git push --tags`——这些都要**先停下来明确征求授权**，不可逆 |\n| 提 `chore(release): bump X.Y.Z` commit | 跨语言 reviewer 工作（PR 评审走 requesting-code-review skill） |\n| 监控 publish workflow 跑完，失败时进入重发剧本 | |\n\n## Decision Tree\n\n```\n1. 当前在 master 上？working tree 干净？\n   └─ 否：先 commit 完手头改动，merge 进 master 再 release。\n        发版必须在 master 头部，避免分支漂移。\n\n2. 现在该发什么版本号？\n   ├─ 当前 rc 阶段（X.Y.Z-rc.N）\n   │   ├─ 上轮 RC 已经 publish 到 PyPI/crates.io？\n   │   │   ├─ 是：bump rc.N+1（哪怕只改了 docs，PyPI 版本号已占名不能复用）\n   │   │   └─ 否（rc.N wheel 未上传 / crate 未发）：可以在 rc.N 上修问题、复用 rc.N\n   │   └─ rc 期间累积满意，准备出第一个 stable：bump 到 X.Y.Z（去掉 -rc.N）\n   ├─ stable 阶段（X.Y.Z）\n   │   ├─ [Unreleased] 含 Breaking changes → bump X+1.0.0\n   │   ├─ 仅 Added/Changed（无 breaking） → bump X.Y+1.0\n   │   └─ 仅 Fixed/docs/internal     → bump X.Y.Z+1\n   └─ 不确定 → 让 skill 推荐并问用户确认（永远先问，别猜）\n\n3. 这次只发 Python 还是 Python + Rust 都发？\n   ├─ 改了 Rust crate 公共 API → 两边都发\n   ├─ 只改了 Python 端 facade / docs → 两边都发（版本号必须同步，不能 PyPI 走 1.0.1 而 crates.io 停 1.0.0）\n   └─ 默认：两边都发（除非用户明确说 \"skip rust\" / \"skip python\"）\n```\n\n## Workflow\n\n### Phase 0 — 准备（必做）\n\n**0.0 强制读 release checklist 全文**：\n\n```\nRead /Users/lifanngzhou/git-repo/czsc/docs/release_checklist.md\n```\n\n读完后**列出 9 节标题**给用户看，明确告知\"以下每一节都必须 ✅ 通过才能发版；本 skill 的 Phase 2 是 §3+§4+§5+§9 的最小子集，§1（代码/文档一致性）、§5（Linux aarch64/musllinux wheel 验证）、§7（发布后验证）等节本 skill 不能替代，你需要手动核完并告诉我结果\"。\n\n```bash\n# 0.1 切到 master + pull 最新\ngit checkout master\ngit pull --ff-only origin master\n\n# 0.2 working tree 干净\ngit status   # 必须 nothing to commit\n\n# 0.3 距上一个 tag 至少有 1 个 commit（否则没东西可发）\ngit describe --tags --abbrev=0\ngit log $(git describe --tags --abbrev=0)..HEAD --oneline | wc -l   # > 0\n\n# 0.4 CHANGELOG.md 的 [Unreleased] 非空\ngrep -A50 '^## \\[Unreleased\\]' CHANGELOG.md\n\n# 0.5 release_checklist.md §1 代码/文档一致性（含 3 段 rg 命令）\n#     —— 这一节本 skill 没复述，必须按 docs/release_checklist.md 跑\n```\n\n如果 [Unreleased] 是空的 → **停**，告诉用户：\"上一个 release 后没人写 CHANGELOG，发版前先补\"，让用户决定补还是放弃。\n\n如果 §1 的 `rg czsc.svc|czsc.signals.|streamlit|CZSC_USE_PYTHON|SignalsParser` 命中（说明 markdown 引用了已删除的 API）→ **停**，让用户先清理文档。\n\n### Phase 1 — 推荐下一版本号\n\n读 `Cargo.toml [workspace.package].version` 拿当前版本，读 CHANGELOG.md 的 `[Unreleased]` 块。\n\n按 [Decision Tree](#decision-tree) 第 2 步推荐下一个版本号，并**用 AskUserQuestion 让用户确认**，给出推荐理由：\n\n> 当前版本 1.0.0-rc.7。CHANGELOG [Unreleased] 含 Breaking changes（X 项）+ Added（Y 项）+ Fixed（Z 项）。\n> 推荐 bump 到 **1.0.0-rc.8**（仍在 rc 阶段，rc.7 已发 PyPI 不能复用号）。\n> 是否同意？\n\n### Phase 2 — Pre-flight 预检（必跑全套）\n\n这一节的 ratchet 都是 CHANGELOG 历史教训留下的，**不要跳任何一项**。\n\n> **本节与 `docs/release_checklist.md` 的对应关系**：\n> - 2.1 ↔ checklist §3（Rust 验证 + clippy）\n> - 2.2 ↔ checklist §3（cargo test 的 5 crate 子集）\n> - 2.3-2.4 ↔ checklist §3 最后一项（stub_gen + git diff ratchet）\n> - 2.5-2.6 ↔ checklist §4（Python 验证 + `--run-slow`）\n> - **未覆盖**：checklist §5（本地 wheel + Linux aarch64/musllinux docker 验证）—— 必须额外手跑\n>\n> 想一键跑完？用 checklist §9 的 bash 一键脚本（已串好 §3+§4 的全部命令）。\n\n```bash\n# 2.1 Rust 端格式 + clippy + 全 target typecheck（rc.3 教训：cargo check 不带 --all-targets 漏 test 模块）\ncargo fmt --all -- --check\ncargo clippy --workspace --all-targets -- -D warnings\ncargo check --workspace --all-targets\n\n# 2.2 Rust 单元测试（不带 python feature，绕开 pyo3-stub-gen 上游兼容性问题）\ncargo test --release -p czsc-core --lib\n\n# 2.3 重编 .so 与最新源对齐\nuv run --no-sync maturin develop --release\n\n# 2.4 重生成 stub 并校验无 drift\nPYO3_PYTHON=$(pwd)/.venv/bin/python3 cargo run --release --bin stub_gen -p czsc-python --no-default-features --features stub-gen\ngit diff --exit-code czsc/_native/__init__.pyi   # 必须 0 — stub 必须与 Rust 源一致\n\n# 2.5 Python 端测试 + lint\nuv run --no-sync pytest tests/unit tests/compat -q\nuv run --no-sync ruff format --check czsc tests\nuv run --no-sync ruff check czsc tests\n\n# 2.6 慢测试（发版必跑，平时不跑）\nuv run --no-sync pytest --run-slow -q\n```\n\n任何一步 fail → **停**，把失败摘要给用户，让用户决定修还是放弃发版。**不要在 fail 状态下继续 bump 版本号**——历史上 rc.2/3/4/5 重发都是因为预检不严，把已知错带上 CI。\n\n### Phase 3 — Bump 版本 + 落 CHANGELOG（可逆，skill 直接做）\n\n```bash\nNEW_VER=\"1.0.0-rc.8\"     # ← 来自 Phase 1 用户确认值\nTODAY=$(date +%Y-%m-%d)\n```\n\n1. **改 `Cargo.toml`** 的 `[workspace.package] version = \"...\"`，**同时**把 `[workspace.dependencies]` 里所有 `czsc-* = { path = \"...\", version = \"...\" }` 的 version 字段都同步成新值（grep 出来一并改，否则 `cargo publish` 会拒绝）。\n2. **跑一次 `cargo check --workspace`** 让 `crates/czsc-python/build.rs` 的 ratchet 重新校验 pyproject.toml 仍走 dynamic。\n3. **CHANGELOG.md**：把 `## [Unreleased]` 改成 `## [NEW_VER] — TODAY`，并在它**上方插一个新的空 `[Unreleased]`** 块，结构如下：\n   ```markdown\n   ## [Unreleased]\n\n   _（待填）_\n\n   ---\n\n   ## [1.0.0-rc.8] — 2026-05-29\n\n   ### Added\n   ...（搬下来的内容）\n   ```\n4. **再跑一次 maturin develop + 烟测**确认 bump 后 .so 还能装、`__version__` 正确：\n   ```bash\n   uv run --no-sync maturin develop --release\n   uv run --no-sync python -c \"import czsc; print(czsc.__version__)\"   # 必须等于 NEW_VER 的 PEP440 形式\n   ```\n5. **提 commit**：\n   ```bash\n   git add Cargo.toml CHANGELOG.md\n   # 如果 step 1 改到了 workspace.dependencies，那些也加\n   git commit -m \"chore(release): bump ${NEW_VER}\"\n   ```\n\n### Phase 4 — 打 tag + push（不可逆，**必须先停下来征求授权**）\n\n`git tag` 在本地是可逆的，但 `git push origin tag` **触发 CI** 是不可逆的（CI 会真上传 PyPI / 发 crates.io 真 publish）。所以：\n\n**先用 AskUserQuestion 确认**，比如：\n\n> Phase 3 完成。即将执行：\n> 1. `git tag v1.0.0-rc.8` （本地）\n> 2. `git push origin master` （推 release commit）\n> 3. `git push origin v1.0.0-rc.8` （触发 python-publish 真上传 PyPI；rust-publish 默认 dry-run）\n>\n> 一旦推 tag 就**不能撤回**：PyPI 上的版本号占名后永远不能复用，要修问题只能 bump rc.9。\n> 继续吗？\n\n用户确认后：\n\n```bash\ngit tag \"v${NEW_VER}\"           # SemVer 前缀必须是 v，CI 监听 v*\ngit push origin master           # 先推 commit 再推 tag，避免 CI checkout 不到 commit\ngit push origin \"v${NEW_VER}\"    # 这一行触发 python-publish + rust-publish\n```\n\n### Phase 4.5 — Push 之前最后一道 ratchet：checklist §1 / §5 / §6 是否手核完？\n\nPhase 0 强制读了 `docs/release_checklist.md`。Phase 2 自动跑了 §3/§4/§9。但下面这些**本 skill 不能替你自动核**，push tag 之前必须确认用户已经手动完成：\n\n- [ ] checklist **§1**（代码/文档一致性 —— 3 段 rg 命令均无输出 / `czsc.xxx` 引用都还存在 / 已退役关键字没残留）\n- [ ] checklist **§5**（本地 wheel 构建 + 用 docker `--platform linux/arm64` 或 alpine 镜像验证 ARM/musllinux 加载成功）\n- [ ] checklist **§6 step 1**（TestPyPI 演练 —— breaking 版本强烈建议）\n\n**用 AskUserQuestion 把这三项列出来，明确询问\"全部已完成？是 / 否 / 跳过 + 理由\"**。任一项\"否\" → 拦下，告诉用户先核完再回来；\"跳过\" → 把理由记录在 release commit message 的 trailer 里（`Skipped-checklist-items: §5 (理由)`），future 复盘时能 trace。\n\n### Phase 5 — 监控 CI（直到 publish 成功或失败）\n\n```bash\ngh run list --workflow=python-publish.yml --limit 3\ngh run watch <run-id>     # 跟到 publish-to-pypi job 跑完\ngh run list --workflow=rust-publish.yml --limit 3\n```\n\n需要看到：\n- ✅ `python-publish.yml` 全绿 → PyPI 已发\n- ✅ `rust-publish.yml` 在 tag push 触发下**只是 dry-run**（这是设计；要真 publish crates.io 需手动 workflow_dispatch）\n\n如果 python-publish 失败 → 进入 [Phase 6 重发剧本](#phase-6--重发剧本)。\n\n如果 python-publish 成功 → **告诉用户去手动触发 rust-publish.yml**：\n\n```bash\ngh workflow run rust-publish.yml -f do_publish=true -f start_layer=0 -f end_layer=5\ngh run watch <run-id>\n```\n\n注意 crates.io rate-limit ≈ 1 个新 crate / 10 分钟。第一次发 czsc 系列新 crate 时，常常 layer 0/1 成功、layer 2 后被 rate-limit 拒；用 `start_layer` 参数从失败 layer 续发。\n\n### Phase 5.5 — 发布后验证（checklist §7）\n\n发布成功后**必须按 `docs/release_checklist.md` §7 逐项核完**：\n\n- [ ] PyPI 页面 6 平台 + sdist 齐全\n- [ ] crates.io 6 个 crate 都 OK（czsc-derive / czsc-signal-macros / czsc-core / czsc-ta / czsc-utils / czsc-signals / czsc-trader / czsc）\n- [ ] GitHub Release 包含 wheel + sdist + sigstore 签名\n- [ ] **干净环境冒烟（Python）**：用 `uv venv --seed`（带 pip）创建 tmp venv 后 `pip install czsc==<X.Y.Z>` + `python -c \"import czsc; print(czsc.__version__)\"`。⚠️ 不要在 czsc 仓库根目录跑 —— python path 会优先加载本地 czsc/ 路径而不是 PyPI wheel，给假阳性\n- [ ] **`cargo add czsc@=<X.Y.Z>` 在干净项目 `cargo check` 真编通过**（不只是\"可解析\"！1.0.0-rc.8 实战教训：解析成功但 cargo check 失败）：\n  ```bash\n  TMPD=$(mktemp -d); cd \"$TMPD\"\n  cargo init --name release_smoke --quiet\n  cargo add 'czsc@=<X.Y.Z>' --quiet\n  cargo check 2>&1 | tail -20      # 必须无 error\n  cargo tree -i polars-core 2>&1   # 必须单一版本\n  cd - && rm -rf \"$TMPD\"\n  ```\n  常见两类失败 → 见 [Phase 6 重发剧本](#phase-6--重发剧本) 后两行\n- [ ] 至少跑一个 `docs/examples/` demo 确认无运行时回归\n\n任一项失败 → 立刻在 GitHub Issue 记录、按 [Phase 6 重发剧本](#phase-6--重发剧本) 处理。**不要 yank 已上传的 X.Y.Z 版本本身**——版本号永久占名，必须 bump 下一个 patch/rc 重发。但**误发的混淆版本可以也应该 yank**（如 1.0.0 stable 与 1.0.0-rc.* 并存时 yank stable，避免 SemVer 解析坑）。\n\n### Phase 6 — 重发剧本（出错后）\n\nCHANGELOG 里 rc.2 → rc.3 → rc.4 → rc.5 是连续 4 次重发，写得很细。**主要坑**：\n\n| 症状 | 根因 | 修法 |\n|---|---|---|\n| `python-publish` 在 \"Verify version consistency\" 失败 | SemVer 与 PEP440 不一致（如 `1.0.0-rc.4` ↔ `1.0.0rc4`），workflow 拿字符串硬比 | 这个 bug 已在 rc.5 修；新出现就检查 `packaging.version.canonicalize_version` 翻译是否还在 |\n| build-wheels macOS 卡 1h+ | `macos-13` Intel runner pool 紧张 | 已切到 `macos-latest` cross-compile；不要回退 |\n| aarch64 manylinux2014 编译 `ring` 失败 ARM assembler 报错 | manylinux 镜像 cross-gcc 没传 `__ARM_ARCH` | 已加 `CFLAGS_aarch64_unknown_linux_gnu=\"-D__ARM_ARCH=8\"`；不要回退 |\n| `cargo check` 本地过 CI 挂 | 本地没带 `--all-targets`，test 模块没被 typecheck | Phase 2.1 已强制 `--all-targets`；本地必跑 |\n| `rust-publish` 中途断（rate-limit） | crates.io 新 crate ≈ 1/10min | `gh workflow run rust-publish.yml -f start_layer=N`，N 是失败 layer |\n| **下游 `cargo add czsc@=<X.Y.Z>` 解析到错误 stable 版本**（rc.8 实战） | crates.io 同时有 `1.0.0` stable 与 `1.0.0-rc.*`；workspace.dependencies 写 `version = \"<X.Y.Z>\"` 不带 `=`，cargo 按 SemVer 选 stable（stable > prerelease） | (a) 紧急：`cargo yank --version 1.0.0 <crate>` × 8 个 czsc-* crate，强制下游解析跳过 stable；(b) 永久：把 workspace.dependencies 改 `version = \"=<X.Y.Z>\"` 严格匹配 + bump 下一个 rc 重发 |\n| **下游 `cargo add` 编不出来 — pyo3 / pyo3-stub-gen / numpy 无条件依赖**（rc.8 实战） | czsc-core / czsc-utils / czsc-signals / czsc-trader 把 pyo3 系列列成无条件 dep，纯 Rust 用户也被强制拉 PyO3 工具链 | 4 个 crate Cargo.toml 把 pyo3 系列改 `optional = true` + 加 `[features] python = [\"pyo3\", \"pyo3-stub-gen\", \"numpy\", ...]`；facade czsc 默认 features 为空（纯 Rust）；bump 下一个 rc 重发；本地 `cargo check --no-default-features` 验证纯 Rust 路径 |\n\n**安全 bump 规则**（rc.4 → rc.5 的教训）：\n\n- 如果 wheel **build 成功但 publish step 没跑/失败**（PyPI 上没出现这个版本号）→ 同号修 + force-push tag 是**不允许**的（tag 已推过、CI 已跑过、commit 已上 master）。**只能 bump 下一个 rc 号**，把修复打进新版本。\n- 检查 PyPI 是否已经收到：`pip index versions czsc` 或 https://pypi.org/project/czsc/#history\n- 检查 crates.io：`cargo search czsc-core --limit 1`\n\n## 关键文件参考\n\n| 文件 | 角色 |\n|---|---|\n| **`docs/release_checklist.md`** | **权威清单（必读）**，9 节 / 214 行，本 skill 是它的可执行子集；详见顶部 [Mandatory References](#-mandatory-references必读且必须逐项核完才能进-phase-3) |\n| `Cargo.toml` (workspace root) | 唯一版本源 `[workspace.package].version` |\n| `pyproject.toml` | 必须 `dynamic = [\"version\"]`，禁止硬编码版本（`build.rs` ratchet 拦） |\n| `CHANGELOG.md` | Keep a Changelog 格式，`[Unreleased]` → `[X.Y.Z] — YYYY-MM-DD` |\n| `.github/workflows/python-publish.yml` | tag `v*` 触发，wheels + smoke + PyPI |\n| `.github/workflows/rust-publish.yml` | tag `v*` 触发 dry-run；workflow_dispatch + `do_publish=true` 真发 |\n| `crates/czsc-python/build.rs` | 编译期 ratchet：pyproject.toml 不能硬编码 version |\n| `czsc/__init__.py` | `__version__ = importlib.metadata.version(\"czsc\")` 反查 |\n\n## 触发场景速查\n\n下面这些用户表达**都应该启用本 skill**：\n\n- \"发版 czsc rc.N\"、\"出 rc.N+1\"、\"准备 1.0.0 stable\"\n- \"bump 版本号\"、\"bump 到 X.Y.Z\"\n- \"release\"、\"publish czsc\"、\"推 PyPI\"、\"发 crates.io\"\n- \"CHANGELOG [Unreleased] 落档\"\n- \"tag vX.Y.Z\"、\"打 release tag\"\n- \"上次 publish 失败，重发\"、\"rc 重发\"\n\n## 不要做的事\n\n- ❌ **不要跳过 `docs/release_checklist.md` 的任何一节**——Phase 0 必须 Read 全文，Phase 2 跑 §3+§4+§9 子集，Phase 4.5 显式核 §1+§5+§6 step 1，Phase 5.5 核 §7。任一节\"省略\"都属违规\n- ❌ 不要在 fail 状态下跳过 Phase 2 预检——历史 4 次重发都是这么开始的\n- ❌ 不要替用户跑 `git push origin <tag>`——必须 AskUserQuestion 后再做\n- ❌ 不要为了\"快\"在 rc 期间 force-push 同号 tag——PyPI/crates.io 版本号占名后永久不能复用\n- ❌ 不要在 pyproject.toml 里写死 `version = \"X.Y.Z\"`——会被 build.rs 编译期拦下\n- ❌ 不要只 bump `[workspace.package].version` 而漏掉 `[workspace.dependencies]` 里 czsc-* 的 version 字段——`cargo publish` 会拒绝\n- ❌ 不要在 master 之外的分支打 release tag——CI checkout 的是 tag 指向的 commit，但 master 历史会缺失\n","frontmatter":{"name":"czsc-release","description":"规范 czsc 库（混合 Rust + Python，PyO3 + maturin）的版本发布流程。当用户说\"发版/发布/release/publish czsc\"、\"bump 版本\"、\"出 rc.N+1\"、\"准备 1.0.0 stable\"、要把 Rust crate 推 crates.io 或 wheel 推 PyPI 时使用。本 skill 半自动执行预检 / bump / CHANGELOG / commit，遇 push tag / push master / 真 publish 等不可逆动作时停下来要授权。"},"isInternal":false,"tokens":6794,"sizeBytes":19169},{"name":"openai.yaml","path":".claude/skills/czsc-write-signal-function/agents/openai.yaml","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/czsc-write-signal-function/agents/openai.yaml","title":"Agents Skill","category":"anthropic-skill","format":"yaml","content":"interface:\n  display_name: \"CZSC Signal Writer\"\n  short_description: \"Write Rust CZSC signal functions and wire registries\"\n  default_prompt: \"Use $czsc-write-signal-function to implement and register a new CZSC signal function.\"\n","isInternal":false,"tokens":53,"sizeBytes":230},{"name":"event-driven-signal-pipeline.md","path":".claude/skills/czsc-write-signal-function/references/event-driven-signal-pipeline.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/czsc-write-signal-function/references/event-driven-signal-pipeline.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# Event-Driven Signal Pipeline (rs_czsc)\n\n## 1. 总体调用链\n\n1. `CzscTrader::update` 接收一根 `RawBar`\n2. `CzscSignals::update_signals` 计算本根所有 K线级信号\n3. `CzscTrader::update` 额外执行 Trader 级信号（pos 系列）\n4. 合并信号后调用每个 `Position::update`\n5. `Position` 按 `opens + exits` 顺序匹配 `Event`\n6. `Event` 内部通过 `signals_not -> signals_all -> signals_any` 判定\n7. 匹配后产生命令（`LO/LE/SO/SE/...`）并更新持仓记录\n\n## 2. 关键文件\n\n- `crates/czsc-trader/src/trader.rs`\n  - 交易主入口；组织信号计算与仓位更新\n- `crates/czsc-trader/src/signals/czsc_signals.rs`\n  - K线级信号执行器；维护 `s` 与 `sigs`\n- `crates/czsc-signals/src/registry.rs`\n  - 汇总 `inventory` 自动收集的 `SignalDescriptor` 到运行时注册表\n- `crates/czsc-signals/src/types.rs`\n  - 信号函数签名类型定义\n- `crates/czsc-core/src/objects/signal.rs`\n  - `Signal` 7段格式、`is_match`\n- `crates/czsc-core/src/objects/event.rs`\n  - `Event` 匹配逻辑\n- `crates/czsc-core/src/objects/position.rs`\n  - `Position::update` 执行开平仓规则\n- `crates/czsc-core/src/objects/state.rs`\n  - `TraderState` trait（给 Trader 级信号读状态）\n\n## 3. 两类信号函数\n\n### K线级信号（bar / tas / cxt）\n\n- 签名：\n`fn(&CZSC, &ParamView, &mut TaCache) -> Vec<Signal>`\n- 注册方式：函数上 `#[signal(category = \"kline\", ...)]` 自动收集\n- 调用路径：`CzscSignals::update_signals`\n- 适用场景：仅依赖某个周期的 K 线结构和指标\n\n### Trader级信号（pos）\n\n- 签名：\n`fn(&dyn TraderState, &ParamView) -> Vec<Signal>`\n- 注册方式：函数上 `#[signal(category = \"trader\", ...)]` 自动收集\n- 调用路径：`CzscTrader::update` 中 `freq.is_none()` 分支\n- 适用场景：需要 `Position` + `CZSC` 联合状态\n\n## 4. 信号字符串规则\n\n`Signal` 必须满足：\n- 格式：`k1_k2_k3_v1_v2_v3_score`\n- 总段数：7 段\n- `score`：0~100\n\n`CzscSignals` 会把它拆成：\n- key：`k1_k2_k3`\n- value：`v1_v2_v3_score`\n\n`Event` 匹配时用 `Signal::is_match`：\n- `score >= 事件要求score`\n- `v1/v2/v3` 精确匹配或事件侧为 `任意`\n\n## 5. 开发时最常见断点\n\n- 注册表 name 与 `SignalConfig.name` 不一致（大小写、`_V`/`_v`）\n- 输出不是 7 段，导致 `Signal::from_str` 失败\n- `freq` 设置错误：\n  - K线级应为 `Some(freq)`\n  - Trader级应为 `None`\n- 数据不足未做边界检查，触发索引错误或无意义信号\n\n## 6. 最小联调路径\n\n1. 在 `czsc-signals` 实现函数并添加 `#[signal(...)]` 标注\n2. 构造 `SignalConfig`\n3. 用 `CzscTrader::update` 喂历史 bars\n4. 检查：\n   - `trader.signals.s` 中是否有目标 key\n   - `trader.signals.sigs` 中是否出现目标 `Signal`\n   - `position.operates` 是否按预期变化\n","isInternal":false,"tokens":1067,"sizeBytes":2840},{"name":"signal-function-patterns.md","path":".claude/skills/czsc-write-signal-function/references/signal-function-patterns.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/czsc-write-signal-function/references/signal-function-patterns.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# Signal Function Patterns\n\n## 0. 注释规范（必须）\n\n每个新信号函数都必须包含以下注释层级：\n\n- 函数文档注释（`///`）至少写清 4 件事：\n  - 信号在策略中的业务含义\n  - 参数模板字符串（`param_template`）\n  - 核心判定逻辑（触发条件）\n  - 边界行为（数据不足返回什么）\n- 关键分支前写“原因注释”，解释判定依据和设计意图。\n- 与 Python/旧版行为对齐时，标注“对齐对象”和“为何这样对齐”。\n\n## 1. K线级函数模板（bar/tas/cxt）\n\n```rust\nuse crate::params::ParamView;\nuse crate::types::TaCache;\nuse crate::utils::sig::{get_str_param, get_usize_param};\nuse czsc_core::analyze::CZSC;\nuse czsc_core::objects::signal::Signal;\nuse czsc_signal_macros::signal;\n\n/// xxx_v240101: 示例信号\n///\n/// 参数模板：\"{freq}_D{di}{key}_示例V240101\"\n/// 信号语义：当满足示例条件时输出目标状态，否则输出“其他”。\n/// 边界行为：当 bars 不足以支持 di 回看时，返回空信号。\n#[signal(\n    category = \"kline\",\n    name = \"xxx_V240101\",\n    template = \"{freq}_D{di}{key}_示例V240101\",\n    opcode = \"XxxV240101\",\n    param_kind = \"XxxV240101\"\n)]\npub fn xxx_v240101(\n    czsc: &CZSC,\n    params: &ParamView,\n    cache: &mut TaCache,\n) -> Vec<Signal> {\n    let di = get_usize_param(params, \"di\", 1);\n    let key = get_str_param(params, \"key\", \"DEFAULT\");\n\n    // 1) 边界检查：数据不足时不输出错误信号，直接返回空结果。\n    if czsc.bars_raw.len() < di + 2 {\n        return vec![];\n    }\n\n    // 2) 计算 k1/k2/k3 与 v1/v2/v3：\n    // k1/k2/k3 用于事件匹配 key，v1/v2/v3 承载状态值语义。\n    let k1 = czsc.freq.to_string();\n    let k2 = format!(\"D{}{}\", di, key);\n    let k3 = \"示例V240101\";\n    let v1 = \"其他\";\n    let v2 = \"任意\";\n    let v3 = \"任意\";\n\n    // 3) 严格 7 段\n    let sig_str = format!(\"{}_{}_{}_{}_{}_{}_0\", k1, k2, k3, v1, v2, v3);\n    Signal::from_str(&sig_str).map_or_else(|_| vec![], |s| vec![s])\n}\n```\n\n## 2. Trader级函数模板（pos）\n\n```rust\nuse crate::params::ParamView;\nuse crate::utils::sig::get_str_param;\nuse czsc_core::objects::signal::Signal;\nuse czsc_core::objects::state::TraderState;\nuse czsc_signal_macros::signal;\nuse std::str::FromStr;\n\n/// pos_xxx_v240101: 示例 Trader 级信号\n///\n/// 参数模板：\"{pos_name}_示例V240101\"\n/// 信号语义：根据仓位是否存在输出“有效/其他”。\n/// 边界行为：缺少 pos_name 或查询不到仓位时输出“其他”。\n#[signal(\n    category = \"trader\",\n    name = \"pos_xxx_V240101\",\n    template = \"{pos_name}_示例V240101\",\n    opcode = \"PosXxxV240101\",\n    param_kind = \"PosXxxV240101\"\n)]\npub fn pos_xxx_v240101(cat: &dyn TraderState, params: &ParamView) -> Vec<Signal> {\n    let pos_name = get_str_param(params, \"pos_name\", \"\").to_string();\n\n    let k1 = format!(\"{}_状态\", pos_name);\n    let k2 = \"其他\";\n    let k3 = \"示例V240101\";\n\n    // Trader 级信号必须解释“为何读取 trader 状态”，避免后续误改为纯 K线逻辑。\n    let v1 = if cat.get_position(&pos_name).is_some() {\n        \"有效\"\n    } else {\n        \"其他\"\n    };\n\n    let sig_str = format!(\"{}_{}_{}_{}_任意_任意_0\", k1, k2, k3, v1);\n    Signal::from_str(&sig_str).map_or_else(|_| vec![], |s| vec![s])\n}\n```\n\n## 3. 注册模板\n\n通过 `#[signal(...)]` 自动注册，无需手写 `registry.rs` 列表。\n关键字段：\n\n```rust\n#[signal(\n    category = \"kline|trader\",\n    name = \"..._Vxxxxxx\",\n    template = \"...\",\n    opcode = \"...\",\n    param_kind = \"...\"\n)]\n```\n\n## 4. 参数与模板约束\n\n- `params` key 名与模板占位符保持一致。\n- 模板中 `freq` 表示周期；Trader 级常常不用 `freq` 字段做路由，依赖 `freq1` 之类业务参数。\n- 维护 `k2/k3` 语义稳定，避免同名逻辑漂移。\n\n## 5. 事件触发兼容性检查\n\n新增信号用于事件时，先写出事件侧信号字符串，再倒推函数输出：\n\n1. 事件侧 `Signal` 是否 7 段且 score 合法\n2. 事件侧 `k1_k2_k3` 是否与函数输出完全一致\n3. 事件侧 `v1/v2/v3` 是否允许 `任意`\n4. 事件侧 score 是否不高于函数输出 score\n\n## 6. 常见坑\n\n- 在 `SignalConfig` 里用错注册名（尤其 `_V` 大写）\n- `freq: None` / `Some` 配置反了，导致函数完全不被调度\n- 直接 `unwrap` 导致边界数据 panic；优先 `map_or_else` 或早返回\n- 函数输出多信号时 key 冲突未预期，后写会覆盖 `s` 字典同 key 值\n","isInternal":false,"tokens":1577,"sizeBytes":4519},{"name":"SKILL.md","path":".claude/skills/czsc-write-signal-function/SKILL.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/czsc-write-signal-function/SKILL.md","title":"czsc-write-signal-function","category":"anthropic-skill","format":"markdown","content":"---\nname: czsc-write-signal-function\ndescription: 为 rs_czsc 编写或重构 Rust 信号函数（bar/tas/cxt/pos）并接入事件驱动链路（`#[signal]` 自动注册、SignalConfig、Event/Position 匹配）的工作流。遇到“新增信号函数”“修改信号模板”“注册信号函数”“排查信号不触发”时使用。\n---\n\n# CZSC Signal Authoring\n\n## Overview\n\n用这个技能在 `rs_czsc` 中稳定完成信号函数开发：\n1. 判断信号类型（K线级 / Trader级）\n2. 编写函数并保持 `Signal` 7段格式\n3. 注册到正确注册表\n4. 用 `SignalConfig` 和测试验证是否能触发 `Event -> Position`\n\n先读：\n- `references/event-driven-signal-pipeline.md`\n- `references/signal-function-patterns.md`\n\n需要快速起草函数时，先运行：\n- `scripts/new_signal_stub.py`\n\n## Decision Tree\n\n1. 需要访问仓位（`Position`）或策略状态吗？\n- 是：写 Trader 级信号（`pos.rs` 风格），用 `#[signal(category = \"trader\", ...)]` 自动注册。\n- 否：写 K线级信号（`bar/tas/cxt` 风格），用 `#[signal(category = \"kline\", ...)]` 自动注册。\n\n2. 需要技术指标缓存吗？\n- 是：使用 `TaCache`，优先走 `update_*_cache`。\n- 否：保留 `_cache` 参数但不使用。\n\n3. 需要多个输出信号吗？\n- 是：返回 `Vec<Signal>`，每个信号都保持 7 段格式。\n- 否：返回单元素 `Vec`。\n\n## Workflow\n\n1. 明确输入输出\n- 明确函数输入参数（`params`）和默认值。\n- 明确 `k1/k2/k3` 模板和 `v1/v2/v3` 语义。\n- 明确“数据不足时”返回策略：通常返回 `vec![]` 或 `其他` 信号。\n\n2. 实现函数\n- K线级函数签名：`fn(&CZSC, &ParamView, &mut TaCache) -> Vec<Signal>`。\n- Trader级函数签名：`fn(&dyn TraderState, &ParamView) -> Vec<Signal>`。\n- 参数解析优先复用工具：`get_usize_param` / `get_str_param`。\n- 必须写详细注释（硬性格式，不可省略小节）：\n  - 标题行：`/// <func_name>：<一句话功能>`\n  - `///`\n  - `/// 参数模板：\\`\"...\"\\``\n  - `///`\n  - `/// 信号逻辑：`\n  - `/// 1. ...`\n  - `/// 2. ...`\n  - `/// 3. ...`\n  - `///`\n  - `/// 信号列表示例：`\n  - `/// - Signal('...')`\n  - `/// - Signal('...')`\n  - `///`\n  - `/// 参数说明：`\n  - `/// - <param>: <含义与默认值>`\n  - `/// - <param>: <含义与默认值>`\n  - 与 Python 或历史版本对齐时，必须补一行：`/// 对齐说明：...`\n- 关键分支注释：说明为什么这么判定，而不是只写“做了什么”。\n- 用 `format!` 拼出完整字符串：`k1_k2_k3_v1_v2_v3_score`。\n- 用 `Signal::from_str(...)` 或 `parse::<Signal>()` 做最终构造。\n\n3. 接入注册表\n- 在函数上添加 `#[signal(...)]`，由 `inventory` 自动收集。\n- 注册名与函数名保持一一对应（注意 `_V` 与 `_v` 大小写风格）。\n- 在 `#[signal(...)]` 中给出 `template`，确保 `SignalConfig` 反解析和人类阅读一致。\n\n4. 接入调用侧\n- K线级：通过 `SignalConfig { name, freq: Some(...), params }` 在 `CzscSignals::update_signals` 中执行。\n- Trader级：通过 `SignalConfig { name, freq: None, params }` 在 `CzscTrader::update` 的 Trader 信号分支执行。\n\n5. 验证\n- 至少验证：\n  - 函数在样本上可运行，不 panic。\n  - 输出信号可被 `Signal` 正常解析（7段、score 0~100）。\n  - 注册后能被 `SignalConfig.name` 命中。\n  - 若用于交易事件，`Event.matches_signals*` 能按预期触发。\n  - 注释完整：他人仅看注释可理解参数、边界、输出语义和关键判定。\n- 优先补充/运行相关测试：`signal_compare_tests`、`trader_tests` 或新增针对性测试。\n- 注释格式校验（提交前必须人工检查）：\n  - 每个新/改信号函数都包含 `参数模板/信号逻辑/信号列表示例/参数说明` 四段。\n  - `信号列表示例` 至少 2 条，且与当前函数输出字段一致（`k1_k2_k3_v1_v2_v3_score`）。\n\n## Guardrails\n\n- 不要输出非 7 段信号；否则会在 `Signal::from_str` 失败。\n- 不要忽略大小写差异；注册表键是精确匹配。\n- 不要在数据长度不足时硬算；先做边界检查。\n- 不要绕过 `TaCache` 重复全量计算重指标。\n- 不要在函数里偷偷改全局状态；保持纯计算风格（Trader级仅读取状态）。\n- 不要写空洞注释（如“计算信号”）；注释要解释判定依据和业务语义。\n\n## Resources\n\n- 架构与触发链路：`references/event-driven-signal-pipeline.md`\n- 函数模板与常见坑：`references/signal-function-patterns.md`\n- 骨架生成器：`scripts/new_signal_stub.py`\n","frontmatter":{"name":"czsc-write-signal-function","description":"为 rs_czsc 编写或重构 Rust 信号函数（bar/tas/cxt/pos）并接入事件驱动链路（`#[signal]` 自动注册、SignalConfig、Event/Position 匹配）的工作流。遇到“新增信号函数”“修改信号模板”“注册信号函数”“排查信号不触发”时使用。"},"isInternal":false,"tokens":1611,"sizeBytes":4624},{"name":"signals-ang.md","path":".claude/skills/signal-functions/references/signals-ang.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals-ang.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# ang 模块信号索引\n\n> 源码: `crates/czsc-signals/src/ang.rs`\n> 共 10 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `adtm_up_dw_line_V230603` | `\"{freq}_D{di}N{n}M{m}TH{th}_ADTMV230603` | ADTM 能量异动多空信号 | [详细文档](signals/adtm_up_dw_line_V230603.md) |\n| `amv_up_dw_line_V230603` | `\"{freq}_D{di}N{n}M{m}_AMV能量V230603` | AMV 能量多空信号 | [详细文档](signals/amv_up_dw_line_V230603.md) |\n| `asi_up_dw_line_V230603` | `\"{freq}_D{di}N{n}P{p}_ASI多空V230603` | ASI 多空信号 | [详细文档](signals/asi_up_dw_line_V230603.md) |\n| `bias_up_dw_line_V230618` | `\"{freq}_D{di}N{n}M{m}P{p}TH1{th1}TH2{th2}TH3{th3}_BIAS乖离率V230618` | BIAS 三周期共振信号 | [详细文档](signals/bias_up_dw_line_V230618.md) |\n| `cmo_up_dw_line_V230605` | `\"{freq}_D{di}N{n}M{m}_CMO能量V230605` | CMO 能量阈值信号 | [详细文档](signals/cmo_up_dw_line_V230605.md) |\n| `dema_up_dw_line_V230605` | `\"{freq}_D{di}N{n}_DEMA短线趋势V230605` | DEMA 短线趋势信号 | [详细文档](signals/dema_up_dw_line_V230605.md) |\n| `demakder_up_dw_line_V230605` | `\"{freq}_D{di}N{n}TH{th}TL{tl}_DEMAKER价格趋势V230605` | DEMAKER 价格趋势信号 | [详细文档](signals/demakder_up_dw_line_V230605.md) |\n| `emv_up_dw_line_V230605` | `\"{freq}_D{di}_EMV简易波动V230605` | EMV 简易波动多空信号 | [详细文档](signals/emv_up_dw_line_V230605.md) |\n| `er_up_dw_line_V230604` | `\"{freq}_D{di}W{w}N{n}_ER价格动量V230604` | ER 价格动量分层信号 | [详细文档](signals/er_up_dw_line_V230604.md) |\n| `skdj_up_dw_line_V230611` | `\"{freq}_D{di}N{n}M{m}UP{up}DW{dw}_SKDJ随机波动V230611` | SKDJ 随机波动信号 | [详细文档](signals/skdj_up_dw_line_V230611.md) |\n","isInternal":false,"tokens":788,"sizeBytes":1786},{"name":"signals-bar.md","path":".claude/skills/signal-functions/references/signals-bar.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals-bar.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# bar 模块信号索引\n\n> 源码: `crates/czsc-signals/src/bar.rs`\n> 共 46 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `bar_accelerate_V221110` | `\"{freq}_D{di}W{window}_加速V221110` | 区间加速走势判定 | [详细文档](signals/bar_accelerate_V221110.md) |\n| `bar_accelerate_V221118` | `\"{freq}_D{di}W{window}#{ma_type}#{timeperiod}_加速V221118` | 均线偏离加速判定 | [详细文档](signals/bar_accelerate_V221118.md) |\n| `bar_accelerate_V240428` | `\"{freq}_D{di}W{w}T{t}_加速V240428` | 滚动差分加速判定 | [详细文档](signals/bar_accelerate_V240428.md) |\n| `bar_amount_acc_V230214` | `\"{freq}_D{di}N{n}_累计超{t}千万` | 区间累计成交额信号 | [详细文档](signals/bar_amount_acc_V230214.md) |\n| `bar_big_solid_V230215` | `\"{freq}_D{di}N{n}_MIDV230215` | 窗口最大实体中位多空信号 | [详细文档](signals/bar_big_solid_V230215.md) |\n| `bar_bpm_V230227` | `\"{freq}_D{di}N{n}T{th}_绝对动量V230227` | 绝对动量分层 | [详细文档](signals/bar_bpm_V230227.md) |\n| `bar_break_V240428` | `\"{freq}_D{di}W{w}_事件V240428` | 收盘极值突破 | [详细文档](signals/bar_break_V240428.md) |\n| `bar_channel_V230508` | `\"{freq}_D{di}M{m}_通道V230507` | 窄幅通道方向判定 | [详细文档](signals/bar_channel_V230508.md) |\n| `bar_classify_V240606` | `\"{freq}_D{di}收盘位置_分类V240606` | 单根K线收盘位置分类 | [详细文档](signals/bar_classify_V240606.md) |\n| `bar_classify_V240607` | `\"{freq}_D{di}K2收盘位置_分类V240607` | 两根K线收盘位置分类 | [详细文档](signals/bar_classify_V240607.md) |\n| `bar_decision_V240608` | `\"{freq}_W{w}N{n}Q{q}放量_决策区域V240608` | 放量反向决策区 | [详细文档](signals/bar_decision_V240608.md) |\n| `bar_decision_V240616` | `\"{freq}_W{w}N{n}强弱_决策区域V240616` | 新高新低后的强弱决策 | [详细文档](signals/bar_decision_V240616.md) |\n| `bar_dual_thrust_V230403` | `\"{freq}_D{di}通道突破#{N}#{K1}#{K2}_BS辅助V230403` | Dual Thrust 通道突破 | [详细文档](signals/bar_dual_thrust_V230403.md) |\n| `bar_eight_V230702` | `\"{freq}_D{di}#8K_走势分类V230702` | 8K 走势分类 | [详细文档](signals/bar_eight_V230702.md) |\n| `bar_end_V221211` | `\"{freq}_{freq1}结束_BS辅助221211` | 判断大周期K线是否闭合 | [详细文档](signals/bar_end_V221211.md) |\n| `bar_fake_break_V230204` | `\"{freq}_D{di}N{n}M{m}_假突破V230204` | 区间假突破判定 | [详细文档](signals/bar_fake_break_V230204.md) |\n| `bar_fang_liang_break_V221216` | `\"{freq}_D{di}TH{th}#{ma_type}#{timeperiod}_突破V221216` | 放量突破与缩量回踩 | [详细文档](signals/bar_fang_liang_break_V221216.md) |\n| `bar_limit_down_V230525` | `\"{freq}_跌停后无下影线长实体阳线_短线V230525` | 跌停后反包阳线 | [详细文档](signals/bar_limit_down_V230525.md) |\n| `bar_mean_amount_V221112` | `\"{freq}_D{di}K{n}B均额_{th1}至{th2}千万` | 区间均额分类信号 | [详细文档](signals/bar_mean_amount_V221112.md) |\n| `bar_operate_span_V221111` | `\"{freq}_T{t1}#{t2}_时间区间V221111` | 日内时间区间过滤 | [详细文档](signals/bar_operate_span_V221111.md) |\n| `bar_plr_V240427` | `\"{freq}_D{di}W{w}T{t}M{m}_盈亏比V240427` | 盈亏比约束 | [详细文档](signals/bar_plr_V240427.md) |\n| `bar_polyfit_V240428` | `\"{freq}_D{di}W{w}_分类V240428` | 一阶二阶拟合分类 | [详细文档](signals/bar_polyfit_V240428.md) |\n| `bar_r_breaker_V230326` | `\"{freq}_RBreaker_BS辅助V230326` | RBreaker 价格位判定 | [详细文档](signals/bar_r_breaker_V230326.md) |\n| `bar_reversal_V230227` | `\"{freq}_D{di}A{avg_bp}_反转V230227` | 末根反转迹象判定 | [详细文档](signals/bar_reversal_V230227.md) |\n| `bar_section_momentum_V221112` | `\"{freq}_D{di}K{n}B_阈值{th}BPV221112` | 区间动量强弱与波动 | [详细文档](signals/bar_section_momentum_V221112.md) |\n| `bar_shuang_fei_V230507` | `\"{freq}_D{di}双飞_短线V230507` | 双飞涨停形态 | [详细文档](signals/bar_shuang_fei_V230507.md) |\n| `bar_single_V230214` | `\"{freq}_D{di}T{t}_状态V230214` | 单K状态信号 | [详细文档](signals/bar_single_V230214.md) |\n| `bar_single_V230506` | `\"{freq}_D{di}单K趋势N{n}_BS辅助V230506` | 单K趋势分层信号 | [详细文档](signals/bar_single_V230506.md) |\n| `bar_td9_V240616` | `\"{freq}_神奇九转N{n}_BS辅助V240616` | 神奇九转计数 | [详细文档](signals/bar_td9_V240616.md) |\n| `bar_time_V230327` | `\"{freq}_日内时间_分段V230327` | 日内时间分段信号 | [详细文档](signals/bar_time_V230327.md) |\n| `bar_tnr_V230629` | `\"{freq}_D{di}TNR{timeperiod}_趋势V230629` | TNR 分层信号 | [详细文档](signals/bar_tnr_V230629.md) |\n| `bar_tnr_V230630` | `\"{freq}_D{di}TNR{timeperiod}K{k}_趋势V230630` | TNR 噪音变化判定 | [详细文档](signals/bar_tnr_V230630.md) |\n| `bar_trend_V240209` | `\"{freq}_D{di}N{N}趋势跟踪_BS辅助V240209` | 趋势跟踪结构判定 | [详细文档](signals/bar_trend_V240209.md) |\n| `bar_triple_V230506` | `\"{freq}_D{di}三K加速_裸K形态V230506` | 三K加速形态信号 | [详细文档](signals/bar_triple_V230506.md) |\n| `bar_vol_bs1_V230224` | `\"{freq}_D{di}N{n}量价_BS1辅助V230224` | 量价高低点辅助 | [详细文档](signals/bar_vol_bs1_V230224.md) |\n| `bar_vol_grow_V221112` | `\"{freq}_D{di}K{n}B_放量V221112` | 成交量放大信号 | [详细文档](signals/bar_vol_grow_V221112.md) |\n| `bar_volatility_V241013` | `\"{freq}_波动率分层W{w}N{n}_完全分类V241013` | 波动率三层分类 | [详细文档](signals/bar_volatility_V241013.md) |\n| `bar_weekday_V230328` | `\"{freq}_周内时间_分段V230328` | 周内时间分段信号 | [详细文档](signals/bar_weekday_V230328.md) |\n| `bar_window_ps_V230731` | `\"{freq}_W{w}M{m}N{n}L{l}_支撑压力位V230731` | 支撑压力位分位特征 | [详细文档](signals/bar_window_ps_V230731.md) |\n| `bar_window_ps_V230801` | `\"{freq}_N{n}W{w}_支撑压力位V230801` | 支撑压力位窗口极值 | [详细文档](signals/bar_window_ps_V230801.md) |\n| `bar_window_std_V230731` | `\"{freq}_D{di}W{w}M{m}N{n}_窗口波动V230731` | 窗口波动分层特征 | [详细文档](signals/bar_window_std_V230731.md) |\n| `bar_zdf_V221203` | `\"{freq}_D{di}{mode}_{t1}至{t2}` | 单根涨跌幅区间信号 | [详细文档](signals/bar_zdf_V221203.md) |\n| `bar_zdt_V230331` | `\"{freq}_D{di}_涨跌停V230331` | 涨跌停识别信号 | [详细文档](signals/bar_zdt_V230331.md) |\n| `bar_zfzd_V241013` | `\"{freq}_窄幅震荡N{n}_形态V241013` | 窄幅震荡（全重叠） | [详细文档](signals/bar_zfzd_V241013.md) |\n| `bar_zfzd_V241014` | `\"{freq}_窄幅震荡N{n}_形态V241014` | 窄幅震荡（最大实体重叠） | [详细文档](signals/bar_zfzd_V241014.md) |\n| `bar_zt_count_V230504` | `\"{freq}_D{di}W{window}涨停计数_裸K形态V230504` | 窗口涨停计数 | [详细文档](signals/bar_zt_count_V230504.md) |\n","isInternal":false,"tokens":3000,"sizeBytes":6963},{"name":"signals-byi.md","path":".claude/skills/signal-functions/references/signals-byi.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals-byi.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# byi 模块信号索引\n\n> 源码: `crates/czsc-signals/src/byi.rs`\n> 共 5 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `byi_bi_end_V230106` | `\"{freq}_D0停顿分型_BE辅助V230106` | 分型停顿辅助笔结束信号 | [详细文档](signals/byi_bi_end_V230106.md) |\n| `byi_bi_end_V230107` | `\"{freq}_D0验证分型_BE辅助V230107` | 验证分型辅助笔结束信号 | [详细文档](signals/byi_bi_end_V230107.md) |\n| `byi_fx_num_V230628` | `\"{freq}_D{di}笔分型数大于{num}_BE辅助V230628` | 前笔分型数量约束信号 | [详细文档](signals/byi_fx_num_V230628.md) |\n| `byi_second_bs_V230324` | `\"{freq}_D{di}MACD{fastperiod}#{slowperiod}#{signalperiod}回抽零轴_BS2辅助V230324` | 二类买卖点辅助信号 | [详细文档](signals/byi_second_bs_V230324.md) |\n| `byi_symmetry_zs_V221107` | `\"{freq}_D{di}B_对称中枢` | 对称中枢识别信号 | [详细文档](signals/byi_symmetry_zs_V221107.md) |\n","isInternal":false,"tokens":419,"sizeBytes":990},{"name":"signals-cat.md","path":".claude/skills/signal-functions/references/signals-cat.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals-cat.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# cat 模块信号索引\n\n> 源码: `crates/czsc-signals/src/cat.rs`\n> 共 2 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `cat_macd_V230518` | `\"{freq1}#{freq2}_MACD交叉_联立V230518` | 高低级别 MACD 交叉联立信号 | [详细文档](signals/cat_macd_V230518.md) |\n| `cat_macd_V230520` | `\"{freq1}#{freq2}_MACD交叉_联立V230520` | 高低级别 MACD 缩柱联立信号 | [详细文档](signals/cat_macd_V230520.md) |\n","isInternal":false,"tokens":203,"sizeBytes":489},{"name":"signals-clv.md","path":".claude/skills/signal-functions/references/signals-clv.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals-clv.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# clv 模块信号索引\n\n> 源码: `crates/czsc-signals/src/clv.rs`\n> 共 1 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `clv_up_dw_line_V230605` | `\"{freq}_D{di}N{n}_CLV多空V230605` | CLV 多空信号 | [详细文档](signals/clv_up_dw_line_V230605.md) |\n","isInternal":false,"tokens":131,"sizeBytes":320},{"name":"signals-coo.md","path":".claude/skills/signal-functions/references/signals-coo.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals-coo.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# coo 模块信号索引\n\n> 源码: `crates/czsc-signals/src/coo.rs`\n> 共 5 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `coo_cci_V230323` | `\"{freq}_D{di}CCI{n}#{ma_type}#{m}_BS辅助V230323` | CCI 结合均线的多空与方向信号 | [详细文档](signals/coo_cci_V230323.md) |\n| `coo_kdj_V230322` | `\"{freq}_D{di}KDJ{fastk_period}#{slowk_period}#{slowd_period}#{ma_type}#{n}_BS辅助V230322` | 均线与 KDJ 配合多空信号 | [详细文档](signals/coo_kdj_V230322.md) |\n| `coo_sar_V230325` | `\"{freq}_D{di}N{n}SAR_BS辅助V230325` | SAR 与区间极值配合信号 | [详细文档](signals/coo_sar_V230325.md) |\n| `coo_td_V221110` | `\"{freq}_D{di}K_TD` | TD 神奇九转信号（旧版模板） | [详细文档](signals/coo_td_V221110.md) |\n| `coo_td_V221111` | `\"{freq}_D{di}TD_BS辅助V221111` | TD 神奇九转信号 | [详细文档](signals/coo_td_V221111.md) |\n","isInternal":false,"tokens":416,"sizeBytes":938},{"name":"signals-cvolp.md","path":".claude/skills/signal-functions/references/signals-cvolp.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals-cvolp.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# cvolp 模块信号索引\n\n> 源码: `crates/czsc-signals/src/cvolp.rs`\n> 共 1 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `cvolp_up_dw_line_V230612` | `\"{freq}_D{di}N{n}M{m}UP{up}DW{dw}_CVOLP动量变化率V230612` | CVOLP 动量变化率信号 | [详细文档](signals/cvolp_up_dw_line_V230612.md) |\n","isInternal":false,"tokens":155,"sizeBytes":366},{"name":"signals-cxt_trader.md","path":".claude/skills/signal-functions/references/signals-cxt_trader.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals-cxt_trader.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# cxt_trader 模块信号索引\n\n> 源码: `crates/czsc-signals/src/cxt_trader.rs`\n> 共 2 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `cxt_intraday_V230701` | `\"{freq1}#{freq2}_D{di}日_走势分类V230701` | 30分钟日内走势分类 | [详细文档](signals/cxt_intraday_V230701.md) |\n| `cxt_zhong_shu_gong_zhen_V221221` | `\"{freq1}_{freq2}_中枢共振V221221` | 大小级别中枢共振 | [详细文档](signals/cxt_zhong_shu_gong_zhen_V221221.md) |\n","isInternal":false,"tokens":218,"sizeBytes":518},{"name":"signals-cxt.md","path":".claude/skills/signal-functions/references/signals-cxt.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals-cxt.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# cxt 模块信号索引\n\n> 源码: `crates/czsc-signals/src/cxt.rs`\n> 共 41 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `cxt_bi_base_V230228` | `\"{freq}_D0BL{bi_init_length}_V230228` | 笔基础状态信号 | [详细文档](signals/cxt_bi_base_V230228.md) |\n| `cxt_bi_end_V230104` | `\"{freq}_D0{ma_type}#{timeperiod}T{th}_BE辅助V230104` | 单均线辅助判断笔结束 | [详细文档](signals/cxt_bi_end_V230104.md) |\n| `cxt_bi_end_V230105` | `\"{freq}_D0{ma_type}#{timeperiod}T{th}_BE辅助V230105` | K线形态+均线辅助判断笔结束 | [详细文档](signals/cxt_bi_end_V230105.md) |\n| `cxt_bi_end_V230222` | `\"{freq}_D1MO{max_overlap}_BE辅助V230222` | 未完成笔分型新高新低次数 | [详细文档](signals/cxt_bi_end_V230222.md) |\n| `cxt_bi_end_V230224` | `\"{freq}_D1_BE辅助V230224` | 量价配合笔结束辅助 | [详细文档](signals/cxt_bi_end_V230224.md) |\n| `cxt_bi_end_V230312` | `\"{freq}_D0MACD{fastperiod}#{slowperiod}#{signalperiod}_BE辅助V230312` | MACD辅助判断笔结束 | [详细文档](signals/cxt_bi_end_V230312.md) |\n| `cxt_bi_end_V230320` | `\"{freq}_D0质数窗口MO{max_overlap}_BE辅助V230320` | 质数窗口笔结束辅助 | [详细文档](signals/cxt_bi_end_V230320.md) |\n| `cxt_bi_end_V230322` | `\"{freq}_D0分型配合{ma_type}#{timeperiod}_BE辅助V230322` | 分型配合均线的笔结束辅助 | [详细文档](signals/cxt_bi_end_V230322.md) |\n| `cxt_bi_end_V230324` | `\"{freq}_D0{ma_type}#{timeperiod}均线突破_BE辅助V230324` | 笔结束分型均线突破 | [详细文档](signals/cxt_bi_end_V230324.md) |\n| `cxt_bi_end_V230618` | `\"{freq}_D{di}MO{max_overlap}_BE辅助V230618` | 笔结束小中枢辅助 | [详细文档](signals/cxt_bi_end_V230618.md) |\n| `cxt_bi_end_V230815` | `\"{freq}_快速突破_BE辅助V230815` | 快速突破反向笔 | [详细文档](signals/cxt_bi_end_V230815.md) |\n| `cxt_bi_status_V230101` | `\"{freq}_D1_表里关系V230101` | 笔表里关系信号 | [详细文档](signals/cxt_bi_status_V230101.md) |\n| `cxt_bi_status_V230102` | `\"{freq}_D1_表里关系V230102` | 笔表里关系信号 | [详细文档](signals/cxt_bi_status_V230102.md) |\n| `cxt_bi_stop_V230815` | `\"{freq}_距离{th}BP_止损V230815` | 笔止损距离状态 | [详细文档](signals/cxt_bi_stop_V230815.md) |\n| `cxt_bi_trend_V230824` | `\"{freq}_D{di}N{n}TH{th}_形态V230824` | N笔形态判断 | [详细文档](signals/cxt_bi_trend_V230824.md) |\n| `cxt_bi_trend_V230913` | `\"{freq}_D{di}N{n}笔趋势_高低点辅助判断V230913` | 笔趋势高低点回归信号 | [详细文档](signals/cxt_bi_trend_V230913.md) |\n| `cxt_bi_zdf_V230601` | `\"{freq}_D{di}N{n}_分层V230601` | BI涨跌幅分层 | [详细文档](signals/cxt_bi_zdf_V230601.md) |\n| `cxt_bs_V240526` | `\"{freq}_趋势跟随_BS辅助V240526` | 趋势跟随 BS 辅助 | [详细文档](signals/cxt_bs_V240526.md) |\n| `cxt_bs_V240527` | `\"{freq}_趋势跟随_BS辅助V240527` | 未完成笔上的趋势跟随 BS 辅助 | [详细文档](signals/cxt_bs_V240527.md) |\n| `cxt_decision_V240526` | `\"{freq}_分型区域N{n}_决策区域V240526` | 分型区域决策 | [详细文档](signals/cxt_decision_V240526.md) |\n| `cxt_decision_V240612` | `\"{freq}_W{w}N{n}高低点_决策区域V240612` | 高低点N档决策区间 | [详细文档](signals/cxt_decision_V240612.md) |\n| `cxt_decision_V240613` | `\"{freq}_放量笔N{n}BS2_决策区域V240613` | 放量笔N4BS2决策区 | [详细文档](signals/cxt_decision_V240613.md) |\n| `cxt_decision_V240614` | `\"{freq}_放量笔N{n}_决策区域V240614` | 放量新高/新低决策区 | [详细文档](signals/cxt_decision_V240614.md) |\n| `cxt_double_zs_V230311` | `\"{freq}_D{di}双中枢_BS1辅助V230311` | 双中枢 BS1 辅助 | [详细文档](signals/cxt_double_zs_V230311.md) |\n| `cxt_eleven_bi_V230622` | `\"{freq}_D{di}十一笔_形态V230622` | 十一笔形态分类信号 | [详细文档](signals/cxt_eleven_bi_V230622.md) |\n| `cxt_first_buy_V221126` | `\"{freq}_D{di}B_BUY1V221126` | 一买信号 | [详细文档](signals/cxt_first_buy_V221126.md) |\n| `cxt_first_sell_V221126` | `\"{freq}_D{di}B_SELL1V221126` | 一卖信号 | [详细文档](signals/cxt_first_sell_V221126.md) |\n| `cxt_five_bi_V230619` | `\"{freq}_D{di}五笔_形态V230619` | 五笔形态分类信号 | [详细文档](signals/cxt_five_bi_V230619.md) |\n| `cxt_fx_power_V221107` | `\"{freq}_D{di}F_分型强弱V221107` | 倒数分型强弱 | [详细文档](signals/cxt_fx_power_V221107.md) |\n| `cxt_nine_bi_V230621` | `\"{freq}_D{di}九笔_形态V230621` | 九笔形态分类信号 | [详细文档](signals/cxt_nine_bi_V230621.md) |\n| `cxt_overlap_V240526` | `\"{freq}_顶底重合_支撑压力V240526` | 收盘价与最近分型区间重合次数 | [详细文档](signals/cxt_overlap_V240526.md) |\n| `cxt_overlap_V240612` | `\"{freq}_SNR顺畅N{n}_支撑压力V240612` | 顺畅笔分型支撑压力信号 | [详细文档](signals/cxt_overlap_V240612.md) |\n| `cxt_range_oscillation_V230620` | `\"{freq}_D{di}TH{th}_区间震荡V230620` | 区间震荡笔数统计 | [详细文档](signals/cxt_range_oscillation_V230620.md) |\n| `cxt_second_bs_V230320` | `\"{freq}_D{di}#{ma_type}#{timeperiod}_BS2辅助V230320` | 均线辅助识别第二类买卖点 | [详细文档](signals/cxt_second_bs_V230320.md) |\n| `cxt_second_bs_V240524` | `\"{freq}_D{di}W{w}T{t}_第二买卖点V240524` | 第二买卖点重叠计数信号 | [详细文档](signals/cxt_second_bs_V240524.md) |\n| `cxt_seven_bi_V230620` | `\"{freq}_D{di}七笔_形态V230620` | 七笔形态分类信号 | [详细文档](signals/cxt_seven_bi_V230620.md) |\n| `cxt_third_bs_V230318` | `\"{freq}_D{di}#{ma_type}#{timeperiod}_BS3辅助V230318` | 均线辅助识别第三类买卖点 | [详细文档](signals/cxt_third_bs_V230318.md) |\n| `cxt_third_bs_V230319` | `\"{freq}_D{di}#{ma_type}#{timeperiod}_BS3辅助V230319` | 带均线形态的第三类买卖点辅助 | [详细文档](signals/cxt_third_bs_V230319.md) |\n| `cxt_third_buy_V230228` | `\"{freq}_D{di}_三买辅助V230228` | 笔三买辅助 | [详细文档](signals/cxt_third_buy_V230228.md) |\n| `cxt_three_bi_V230618` | `\"{freq}_D{di}三笔_形态V230618` | 三笔形态分类信号 | [详细文档](signals/cxt_three_bi_V230618.md) |\n| `cxt_ubi_end_V230816` | `\"{freq}_UBI_BE辅助V230816` | UBI 新高新低次数信号 | [详细文档](signals/cxt_ubi_end_V230816.md) |\n","isInternal":false,"tokens":2784,"sizeBytes":6363},{"name":"signals-jcc.md","path":".claude/skills/signal-functions/references/signals-jcc.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals-jcc.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# jcc 模块信号索引\n\n> 源码: `crates/czsc-signals/src/jcc.rs`\n> 共 19 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `jcc_ci_tou_V221101` | `\"{freq}_D{di}Z{z}TH{th}_刺透形态` | 刺透形态 | [详细文档](signals/jcc_ci_tou_V221101.md) |\n| `jcc_fan_ji_xian_V221121` | `\"{freq}_D{di}_反击线` | 反击线 | [详细文档](signals/jcc_fan_ji_xian_V221121.md) |\n| `jcc_fen_shou_xian_V20221113` | `\"{freq}_D{di}K_分手线` | 分手线 | [详细文档](signals/jcc_fen_shou_xian_V20221113.md) |\n| `jcc_gap_yin_yang_V221121` | `\"{freq}_D{di}K_并列阴阳` | 跳空并列阴阳 | [详细文档](signals/jcc_gap_yin_yang_V221121.md) |\n| `jcc_ping_tou_V221113` | `\"{freq}_D{di}TH{th}_平头形态` | 平头形态 | [详细文档](signals/jcc_ping_tou_V221113.md) |\n| `jcc_san_fa_V20221115` | `\"{freq}_D{di}K_三法` | 三法形态 | [详细文档](signals/jcc_san_fa_V20221115.md) |\n| `jcc_san_fa_V20221118` | `\"{freq}_D{di}K_三法A` | 三法形态A | [详细文档](signals/jcc_san_fa_V20221118.md) |\n| `jcc_san_szx_V221122` | `\"{freq}_D{di}T{th}_三星` | 三星形态 | [详细文档](signals/jcc_san_szx_V221122.md) |\n| `jcc_san_xing_xian_V221023` | `\"{freq}_D{di}TH{th}_伞形线` | 伞形线形态信号 | [详细文档](signals/jcc_san_xing_xian_V221023.md) |\n| `jcc_shan_chun_V221121` | `\"{freq}_D{di}B_山川形态` | 山川形态 | [详细文档](signals/jcc_shan_chun_V221121.md) |\n| `jcc_szx_V221111` | `\"{freq}_D{di}TH{th}_十字线` | 十字线 | [详细文档](signals/jcc_szx_V221111.md) |\n| `jcc_ta_xing_V221124` | `\"{freq}_D{di}K_塔形` | 塔形顶底 | [详细文档](signals/jcc_ta_xing_V221124.md) |\n| `jcc_ten_mo_V221028` | `\"{freq}_D{di}_吞没形态` | 吞没形态 | [详细文档](signals/jcc_ten_mo_V221028.md) |\n| `jcc_three_crow_V221108` | `\"{freq}_D{di}_三只乌鸦` | 三只乌鸦 | [详细文档](signals/jcc_three_crow_V221108.md) |\n| `jcc_two_crow_V221108` | `\"{freq}_D{di}K_两只乌鸦` | 两只乌鸦 | [详细文档](signals/jcc_two_crow_V221108.md) |\n| `jcc_wu_yun_gai_ding_V221101` | `\"{freq}_D{di}Z{z}TH{th}_乌云盖顶` | 乌云盖顶 | [详细文档](signals/jcc_wu_yun_gai_ding_V221101.md) |\n| `jcc_xing_xian_V221118` | `\"{freq}_D{di}TH{th}_星形线` | 星形线 | [详细文档](signals/jcc_xing_xian_V221118.md) |\n| `jcc_yun_xian_V221118` | `\"{freq}_D{di}_孕线` | 孕线形态 | [详细文档](signals/jcc_yun_xian_V221118.md) |\n| `jcc_zhu_huo_xian_V221027` | `\"{freq}_D{di}T{th}F{zf}_烛火线` | 烛火线 | [详细文档](signals/jcc_zhu_huo_xian_V221027.md) |\n","isInternal":false,"tokens":1181,"sizeBytes":2585},{"name":"signals-kcatr.md","path":".claude/skills/signal-functions/references/signals-kcatr.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals-kcatr.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# kcatr 模块信号索引\n\n> 源码: `crates/czsc-signals/src/kcatr.rs`\n> 共 1 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `kcatr_up_dw_line_V230823` | `\"{freq}_D{di}N{n}M{m}T{th}_KCATR多空V230823` | ATR 通道突破多空 | [详细文档](signals/kcatr_up_dw_line_V230823.md) |\n","isInternal":false,"tokens":149,"sizeBytes":345},{"name":"signals-ntmdk.md","path":".claude/skills/signal-functions/references/signals-ntmdk.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals-ntmdk.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# ntmdk 模块信号索引\n\n> 源码: `crates/czsc-signals/src/ntmdk.rs`\n> 共 1 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `ntmdk_V230824` | `\"{freq}_D{di}M{m}_NTMDK多空V230824` | M 日前收盘价对比多空 | [详细文档](signals/ntmdk_V230824.md) |\n","isInternal":false,"tokens":137,"sizeBytes":321},{"name":"signals-obv.md","path":".claude/skills/signal-functions/references/signals-obv.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals-obv.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# obv 模块信号索引\n\n> 源码: `crates/czsc-signals/src/obv.rs`\n> 共 2 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `obv_up_dw_line_V230719` | `\"{freq}_D{di}N{n}M{m}MO{max_overlap}_OBV能量V230719` | OBV 交叉信号 | [详细文档](signals/obv_up_dw_line_V230719.md) |\n| `obvm_line_V230610` | `\"{freq}_D{di}N{n}M{m}_OBV能量V230610` | OBV 双 EMA 能量信号 | [详细文档](signals/obvm_line_V230610.md) |\n","isInternal":false,"tokens":208,"sizeBytes":480},{"name":"signals-pos.md","path":".claude/skills/signal-functions/references/signals-pos.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals-pos.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# pos 模块信号索引\n\n> 源码: `crates/czsc-signals/src/pos.rs`\n> 共 16 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `pos_bar_stop_V230524` | `\"{pos_name}_{freq1}N{n}K_止损V230524` | 按开仓点附近N根K线极值止损 | [详细文档](signals/pos_bar_stop_V230524.md) |\n| `pos_fix_exit_V230624` | `\"{pos_name}_固定{th}BP止盈止损_出场V230624` | 固定 BP 止盈止损 | [详细文档](signals/pos_fix_exit_V230624.md) |\n| `pos_fx_stop_V230414` | `\"{freq1}_{pos_name}N{n}_止损V230414` | 按开仓点附近分型止损 | [详细文档](signals/pos_fx_stop_V230414.md) |\n| `pos_holds_V230414` | `\"{pos_name}_{freq1}N{n}M{m}_趋势判断V230414` | 开仓后 N 根K线收益与阈值比较 | [详细文档](signals/pos_holds_V230414.md) |\n| `pos_holds_V230807` | `\"{pos_name}_{freq1}N{n}M{m}T{t}_BS辅助V230807` | 开仓后收益在 (t, m) 之间触发保本 | [详细文档](signals/pos_holds_V230807.md) |\n| `pos_holds_V240428` | `\"{pos_name}_{freq1}H{h}T{t}N{n}_保本V240428` | 最大盈利回撤比例保本 | [详细文档](signals/pos_holds_V240428.md) |\n| `pos_holds_V240608` | `\"{pos_name}_{freq1}W{w}N{n}_保本V240608` | 跌破/升破开仓前窗口极值后，回到成本价指定档位保本 | [详细文档](signals/pos_holds_V240608.md) |\n| `pos_ma_V230414` | `\"{pos_name}_{freq1}#{ma_type}#{timeperiod}_持有状态V230414` | 判断开仓后是否升破/跌破均线 | [详细文档](signals/pos_ma_V230414.md) |\n| `pos_profit_loss_V230624` | `\"{pos_name}_{freq1}YKB{ykb}N{n}_盈亏比判断V230624` | 盈亏比阈值判断 | [详细文档](signals/pos_profit_loss_V230624.md) |\n| `pos_status_V230808` | `\"{pos_name}_持仓状态_BS辅助V230808` | 持仓状态 | [详细文档](signals/pos_status_V230808.md) |\n| `pos_stop_V240331` | `\"{pos_name}_{freq1}#{n}_止损V240331` | 最近 N 根K线追踪止损 | [详细文档](signals/pos_stop_V240331.md) |\n| `pos_stop_V240428` | `\"{pos_name}_{freq1}T{t}N{n}_止损V240428` | 按开仓前离散价位跳数止损 | [详细文档](signals/pos_stop_V240428.md) |\n| `pos_stop_V240608` | `\"{pos_name}_{freq1}W{w}N{n}_止损V240608` | 开仓后突破开仓前窗口极值 N 档止损 | [详细文档](signals/pos_stop_V240608.md) |\n| `pos_stop_V240614` | `\"{pos_name}_{freq1}N{n}_止损V240614` | 开仓后低于/高于成本价的 K线数量计数止损 | [详细文档](signals/pos_stop_V240614.md) |\n| `pos_stop_V240717` | `\"{pos_name}_{freq1}N{n}T{timeperiod}_止损V240717` | 基于开仓时 ATR 的计数止损 | [详细文档](signals/pos_stop_V240717.md) |\n| `pos_take_V240428` | `\"{pos_name}_{freq1}T{t}N{n}_止盈V240428` | 倍量阳/阴线计数止盈 | [详细文档](signals/pos_take_V240428.md) |\n","isInternal":false,"tokens":1190,"sizeBytes":2748},{"name":"signals-pressure.md","path":".claude/skills/signal-functions/references/signals-pressure.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals-pressure.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# pressure 模块信号索引\n\n> 源码: `crates/czsc-signals/src/pressure.rs`\n> 共 4 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `pressure_support_V240222` | `\"{freq}_D{di}W{w}高低点验证_支撑压力V240222` | 高低点验证支撑压力位 | [详细文档](signals/pressure_support_V240222.md) |\n| `pressure_support_V240402` | `\"{freq}_D{di}W{w}_支撑压力V240402` | 分型区间支撑压力位 | [详细文档](signals/pressure_support_V240402.md) |\n| `pressure_support_V240406` | `\"{freq}_D{di}W{w}_支撑压力V240406` | 分型密集支撑压力位 | [详细文档](signals/pressure_support_V240406.md) |\n| `pressure_support_V240530` | `\"{freq}_D{di}W{w}N{n}_支撑压力V240530` | 关键重叠K线支撑压力位 | [详细文档](signals/pressure_support_V240530.md) |\n","isInternal":false,"tokens":332,"sizeBytes":845},{"name":"signals-tas.md","path":".claude/skills/signal-functions/references/signals-tas.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals-tas.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# tas 模块信号索引\n\n> 源码: `crates/czsc-signals/src/tas.rs`\n> 共 59 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `cci_decision_V240620` | `\"{freq}_N{n}CCI_决策区域V240620` | CCI 逆势决策区域 | [详细文档](signals/cci_decision_V240620.md) |\n| `tas_accelerate_V230531` | `\"{freq}_D{di}N{n}T{t}_BOLL加速V230531` | BOLL 通道加速信号 | [详细文档](signals/tas_accelerate_V230531.md) |\n| `tas_angle_V230802` | `\"{freq}_D{di}N{n}T{th}_笔角度V230802` | 笔角度偏离信号 | [详细文档](signals/tas_angle_V230802.md) |\n| `tas_atr_V230630` | `\"{freq}_D{di}ATR{timeperiod}_波动V230630` | ATR 波动分层信号 | [详细文档](signals/tas_atr_V230630.md) |\n| `tas_atr_break_V230424` | `\"{freq}_D{di}ATR{timeperiod}T{th}突破_BS辅助V230424` | ATR 通道突破 | [详细文档](signals/tas_atr_break_V230424.md) |\n| `tas_boll_bc_V221118` | `\"{freq}_D{di}N{n}M{m}L{line}#BOLL{timeperiod}_背驰V221118` | BOLL背驰辅助信号 | [详细文档](signals/tas_boll_bc_V221118.md) |\n| `tas_boll_cc_V230312` | `\"{freq}_D{di}BOLL{timeperiod}S{nbdev}SP{sp}_BS辅助V230312` | 布林进出场信号 | [详细文档](signals/tas_boll_cc_V230312.md) |\n| `tas_boll_power_V221112` | `\"{freq}_D{di}BOLL{timeperiod}_强弱V221112` | BOLL强弱分层信号 | [详细文档](signals/tas_boll_power_V221112.md) |\n| `tas_boll_vt_V230212` | `\"{freq}_D{di}BOLL{timeperiod}S{nbdev}MO{max_overlap}_BS辅助V230212` | BOLL 通道突破进出场信号 | [详细文档](signals/tas_boll_vt_V230212.md) |\n| `tas_cci_base_V230402` | `\"{freq}_D{di}CCI{timeperiod}#{min_count}#{max_count}_BS辅助V230402` | CCI 极值连续计数信号 | [详细文档](signals/tas_cci_base_V230402.md) |\n| `tas_cross_status_V230619` | `\"{freq}_D{di}MACD{fastperiod}#{slowperiod}#{signalperiod}_金死叉V230619` | 0轴上下金死叉次数 | [详细文档](signals/tas_cross_status_V230619.md) |\n| `tas_cross_status_V230624` | `\"{freq}_D{di}N{n}MD{md}_MACD交叉数量V230624` | 指定金死叉数值 | [详细文档](signals/tas_cross_status_V230624.md) |\n| `tas_cross_status_V230625` | `\"{freq}_D{di}N{n}MD{md}J{j}S{s}_MACD交叉数量V230625` | 指定金叉/死叉次数后状态 | [详细文档](signals/tas_cross_status_V230625.md) |\n| `tas_dif_layer_V241010` | `\"{freq}_DIF分层W{w}T{t}_完全分类V241010` | DIF 三层分类 | [详细文档](signals/tas_dif_layer_V241010.md) |\n| `tas_dif_zero_V240612` | `\"{freq}_DIF靠近零轴T{t}_BS辅助V240612` | DIF靠近零轴买卖点信号（基于最近一笔） | [详细文档](signals/tas_dif_zero_V240612.md) |\n| `tas_dif_zero_V240614` | `\"{freq}_DIF靠近零轴W{w}T{t}_BS辅助V240614` | DIF靠近零轴买卖点信号 | [详细文档](signals/tas_dif_zero_V240614.md) |\n| `tas_dma_bs_V240608` | `\"{freq}_N{n}双均线{t1}#{t2}顺势_BS辅助V240608` | 双均线顺势回调买卖点 | [详细文档](signals/tas_dma_bs_V240608.md) |\n| `tas_double_ma_V221203` | `\"{freq}_D{di}T{th}#{ma_type}#{timeperiod1}#{timeperiod2}_JX辅助V221203` | 双均线多空强弱信号 | [详细文档](signals/tas_double_ma_V221203.md) |\n| `tas_double_ma_V230511` | `\"{freq}_D{di}#{ma_type}#{t1}#{t2}_BS辅助V230511` | 双均线反向信号 | [详细文档](signals/tas_double_ma_V230511.md) |\n| `tas_double_ma_V240208` | `\"{freq}_D{di}N{N}M{M}双均线_BS辅助V240208` | 双均线交叉结构信号 | [详细文档](signals/tas_double_ma_V240208.md) |\n| `tas_first_bs_V230217` | `\"{freq}_D{di}N{n}#{ma_type}#{timeperiod}_BS1辅助V230217` | 均线结合K线形态的一买一卖辅助 | [详细文档](signals/tas_first_bs_V230217.md) |\n| `tas_hlma_V230301` | `\"{freq}_D{di}#{ma_type}#{timeperiod}HLMA_BS辅助V230301` | HMA/LMA 多空信号 | [详细文档](signals/tas_hlma_V230301.md) |\n| `tas_kdj_base_V221101` | `\"{freq}_D{di}K#KDJ{fastk_period}#{slowk_period}#{slowd_period}_KDJ辅助V221101` | KDJ基础辅助信号 | [详细文档](signals/tas_kdj_base_V221101.md) |\n| `tas_kdj_evc_V221201` | `\"{freq}_D{di}T{th}KDJ{fastk_period}#{slowk_period}#{slowd_period}#{key}值突破{c1}#{c2}_KDJ极值V221201` | KDJ 极值计数信号 | [详细文档](signals/tas_kdj_evc_V221201.md) |\n| `tas_kdj_evc_V230401` | `\"{freq}_D{di}T{th}KDJ{fastk_period}#{slowk_period}#{slowd_period}#{key}值突破{min_count}#{max_count}_BS辅助V230401` | KDJ 极值计数信号 | [详细文档](signals/tas_kdj_evc_V230401.md) |\n| `tas_low_trend_V230627` | `\"{freq}_D{di}N{n}TH{th}_趋势230627` | 阴跌/小阳趋势信号 | [详细文档](signals/tas_low_trend_V230627.md) |\n| `tas_ma_base_V221101` | `\"{freq}_D{di}{ma_type}#{timeperiod}_分类V221101` | 单均线多空与方向信号 | [详细文档](signals/tas_ma_base_V221101.md) |\n| `tas_ma_base_V221203` | `\"{freq}_D{di}{ma_type}#{timeperiod}T{th}_分类V221203` | 单均线多空与距离分层信号 | [详细文档](signals/tas_ma_base_V221203.md) |\n| `tas_ma_base_V230313` | `\"{freq}_D{di}#{ma_type}#{timeperiod}MO{max_overlap}_BS辅助V230313` | 单均线开平仓辅助信号（带重叠约束） | [详细文档](signals/tas_ma_base_V230313.md) |\n| `tas_ma_cohere_V230512` | `\"{freq}_D{di}SMA{ma_seq}_均线系统V230512` | 均线系统粘合/扩散状态 | [详细文档](signals/tas_ma_cohere_V230512.md) |\n| `tas_ma_round_V221206` | `\"{freq}_D{di}TH{th}#碰{ma_type}#{timeperiod}_BE辅助V221206` | 笔端点触碰均线信号 | [详细文档](signals/tas_ma_round_V221206.md) |\n| `tas_ma_system_V230513` | `\"{freq}_D{di}SMA{ma_seq}_均线系统V230513` | 均线系统多空排列 | [详细文档](signals/tas_ma_system_V230513.md) |\n| `tas_macd_base_V221028` | `\"{freq}_D{di}MACD{fastperiod}#{slowperiod}#{signalperiod}#{key}_BS辅助V221028` | MACD/DIF/DEA 多空与方向信号 | [详细文档](signals/tas_macd_base_V221028.md) |\n| `tas_macd_base_V230320` | `\"{freq}_D{di}MACD{fastperiod}#{slowperiod}#{signalperiod}MO{max_overlap}#{key}_BS辅助V230320` | MACD/DIF/DEA 多空与方向信号（含重叠约束） | [详细文档](signals/tas_macd_base_V230320.md) |\n| `tas_macd_bc_V221201` | `\"{freq}_D{di}N{n}M{m}#MACD{fastperiod}#{slowperiod}#{signalperiod}_BCV221201` | MACD背驰辅助信号 | [详细文档](signals/tas_macd_bc_V221201.md) |\n| `tas_macd_bc_V230803` | `\"{freq}_MACD双分型背驰_BS辅助V230803` | 双分型 MACD 背驰信号 | [详细文档](signals/tas_macd_bc_V230803.md) |\n| `tas_macd_bc_V230804` | `\"{freq}_D{di}MACD背驰_BS辅助V230804` | MACD 黄白线背驰信号 | [详细文档](signals/tas_macd_bc_V230804.md) |\n| `tas_macd_bc_V240307` | `\"{freq}_D{di}N{n}柱子背驰_BS辅助V240307` | MACD 柱背驰计次信号 | [详细文档](signals/tas_macd_bc_V240307.md) |\n| `tas_macd_bc_ubi_V230804` | `\"{freq}_MACD背驰_UBI观察V230804` | 未完成笔 MACD 背驰观察 | [详细文档](signals/tas_macd_bc_ubi_V230804.md) |\n| `tas_macd_bs1_V230312` | `\"{freq}_D{di}MACD{fastperiod}#{slowperiod}#{signalperiod}_BS1辅助V230312` | MACD 辅助一买一卖（笔结构） | [详细文档](signals/tas_macd_bs1_V230312.md) |\n| `tas_macd_bs1_V230313` | `\"{freq}_D{di}MACD{fastperiod}#{slowperiod}#{signalperiod}_BS1辅助V230313` | MACD 红绿柱第一买卖点 | [详细文档](signals/tas_macd_bs1_V230313.md) |\n| `tas_macd_bs1_V230411` | `\"{freq}_D{di}T{tha}#{thb}#{thc}_BS1辅助V230411` | MACD DIF 五笔背驰信号 | [详细文档](signals/tas_macd_bs1_V230411.md) |\n| `tas_macd_bs1_V230412` | `\"{freq}_D{di}T{tha}#{thb}_BS1辅助V230412` | MACD DIF 五笔背驰简化信号 | [详细文档](signals/tas_macd_bs1_V230412.md) |\n| `tas_macd_change_V221105` | `\"{freq}_D{di}K{n}#MACD{fastperiod}#{slowperiod}#{signalperiod}变色次数_BS辅助V221105` | MACD变色次数信号 | [详细文档](signals/tas_macd_change_V221105.md) |\n| `tas_macd_direct_V221106` | `\"{freq}_D{di}K#MACD{fastperiod}#{slowperiod}#{signalperiod}方向_BS辅助V221106` | MACD柱方向信号 | [详细文档](signals/tas_macd_direct_V221106.md) |\n| `tas_macd_dist_V230408` | `\"{freq}_{key}分层W{w}N{n}_BS辅助V230408` | DIF/DEA/MACD等宽分层信号 | [详细文档](signals/tas_macd_dist_V230408.md) |\n| `tas_macd_dist_V230409` | `\"{freq}_{key}远离W{w}N{n}T{t}_BS辅助V230409` | DIF/DEA/MACD远离零轴信号 | [详细文档](signals/tas_macd_dist_V230409.md) |\n| `tas_macd_dist_V230410` | `\"{freq}_{key}多空分层W{w}N{n}_BS辅助V230410` | DIF/DEA/MACD多空分层信号 | [详细文档](signals/tas_macd_dist_V230410.md) |\n| `tas_macd_first_bs_V221201` | `\"{freq}_D{di}MACD{fastperiod}#{slowperiod}#{signalperiod}_BS1辅助V221201` | MACD一买一卖辅助信号 | [详细文档](signals/tas_macd_first_bs_V221201.md) |\n| `tas_macd_first_bs_V221216` | `\"{freq}_D{di}MACD{fastperiod}#{slowperiod}#{signalperiod}_BS1辅助V221216` | MACD 第一买卖点（扩展版） | [详细文档](signals/tas_macd_first_bs_V221216.md) |\n| `tas_macd_power_V221108` | `\"{freq}_D{di}K#MACD{fastperiod}#{slowperiod}#{signalperiod}强弱_BS辅助V221108` | MACD强弱分层信号 | [详细文档](signals/tas_macd_power_V221108.md) |\n| `tas_macd_second_bs_V221201` | `\"{freq}_D{di}MACD{fastperiod}#{slowperiod}#{signalperiod}_BS2辅助V221201` | MACD 第二买卖点 | [详细文档](signals/tas_macd_second_bs_V221201.md) |\n| `tas_macd_xt_V221208` | `\"{freq}_D{di}K#MACD{fastperiod}#{slowperiod}#{signalperiod}形态_BS辅助V221208` | MACD 柱形态信号 | [详细文档](signals/tas_macd_xt_V221208.md) |\n| `tas_rsi_base_V230227` | `\"{freq}_D{di}T{th}RSI{timeperiod}_RSI辅助V230227` | RSI超买超卖与方向信号 | [详细文档](signals/tas_rsi_base_V230227.md) |\n| `tas_rumi_V230704` | `\"{freq}_D{di}F{timeperiod1}S{timeperiod2}R{rumi_window}_BS辅助V230704` | RUMI 零轴切换信号 | [详细文档](signals/tas_rumi_V230704.md) |\n| `tas_sar_base_V230425` | `\"{freq}_D{di}MO{max_overlap}SAR_BS辅助V230425` | SAR 基础多空信号 | [详细文档](signals/tas_sar_base_V230425.md) |\n| `tas_second_bs_V230228` | `\"{freq}_D{di}N{n}#{ma_type}#{timeperiod}_BS2辅助V230228` | 均线结合K线形态的二买二卖辅助 | [详细文档](signals/tas_second_bs_V230228.md) |\n| `tas_second_bs_V230303` | `\"{freq}_D{di}{ma_type}#{timeperiod}_BS2辅助V230303` | 利用笔和均线辅助二买二卖 | [详细文档](signals/tas_second_bs_V230303.md) |\n| `tas_slope_V231019` | `\"{freq}_D{di}DIF{n}斜率T{th}_BS辅助V231019` | DIF 斜率分位多空 | [详细文档](signals/tas_slope_V231019.md) |\n","isInternal":false,"tokens":4540,"sizeBytes":10365},{"name":"signals-vol.md","path":".claude/skills/signal-functions/references/signals-vol.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals-vol.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# vol 模块信号索引\n\n> 源码: `crates/czsc-signals/src/vol.rs`\n> 共 6 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `vol_double_ma_V230214` | `\"{freq}_D{di}VOL双均线{ma_type}#{t1}#{t2}_BS辅助V230214` | 成交量双均线多空信号 | [详细文档](signals/vol_double_ma_V230214.md) |\n| `vol_gao_di_V221218` | `\"{freq}_D{di}K_量柱V221218` | 高量柱与低量柱信号 | [详细文档](signals/vol_gao_di_V221218.md) |\n| `vol_single_ma_V230214` | `\"{freq}_D{di}VOL#{ma_type}#{timeperiod}_分类V230214` | 单成交量均线多空与方向信号 | [详细文档](signals/vol_single_ma_V230214.md) |\n| `vol_ti_suo_V221216` | `\"{freq}_D{di}K_量柱V221216` | 梯量与缩量柱信号 | [详细文档](signals/vol_ti_suo_V221216.md) |\n| `vol_window_V230731` | `\"{freq}_D{di}W{w}M{m}N{n}_窗口能量V230731` | 窗口成交量分层特征 | [详细文档](signals/vol_window_V230731.md) |\n| `vol_window_V230801` | `\"{freq}_D{di}W{w}_窗口能量V230801` | 窗口成交量先后顺序特征 | [详细文档](signals/vol_window_V230801.md) |\n","isInternal":false,"tokens":478,"sizeBytes":1110},{"name":"signals-xl.md","path":".claude/skills/signal-functions/references/signals-xl.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals-xl.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# xl 模块信号索引\n\n> 源码: `crates/czsc-signals/src/xl.rs`\n> 共 7 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `xl_bar_basis_V240411` | `\"{freq}_N{n}_形态V240411` | 吞没形态信号 | [详细文档](signals/xl_bar_basis_V240411.md) |\n| `xl_bar_basis_V240412` | `\"{freq}_N{n}#TH{th}_形态V240412` | 长蜡烛形态信号 | [详细文档](signals/xl_bar_basis_V240412.md) |\n| `xl_bar_position_V240328` | `\"{freq}_N{n}_BS辅助V240328` | 相对高低位置识别信号 | [详细文档](signals/xl_bar_position_V240328.md) |\n| `xl_bar_trend_V240329` | `\"{freq}_N{n}M{m}_十字线反转V240329` | 十字孕线反转信号 | [详细文档](signals/xl_bar_trend_V240329.md) |\n| `xl_bar_trend_V240330` | `\"{freq}_N{n}M{m}#{ma_type}_双均线过滤V240330` | 双均线过滤信号 | [详细文档](signals/xl_bar_trend_V240330.md) |\n| `xl_bar_trend_V240331` | `\"{freq}_N{n}_突破信号V240331` | 通道突破信号 | [详细文档](signals/xl_bar_trend_V240331.md) |\n| `xl_bar_trend_V240623` | `\"{freq}_N{n}通道_突破信号V240623` | 通道突破连续信号 | [详细文档](signals/xl_bar_trend_V240623.md) |\n","isInternal":false,"tokens":503,"sizeBytes":1181},{"name":"signals-zdy_trader.md","path":".claude/skills/signal-functions/references/signals-zdy_trader.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals-zdy_trader.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# zdy_trader 模块信号索引\n\n> 源码: `crates/czsc-signals/src/zdy_trader.rs`\n> 共 4 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `zdy_stop_loss_V230406` | `` | 笔操作止损逻辑 | [详细文档](signals/zdy_stop_loss_V230406.md) |\n| `zdy_take_profit_V230406` | `` | 笔操作止盈逻辑 | [详细文档](signals/zdy_take_profit_V230406.md) |\n| `zdy_take_profit_V230407` | `` | 按力度提前止盈 | [详细文档](signals/zdy_take_profit_V230407.md) |\n| `zdy_vibrate_V230406` | `` | 中枢震荡短差辅助 | [详细文档](signals/zdy_vibrate_V230406.md) |\n","isInternal":false,"tokens":251,"sizeBytes":634},{"name":"adtm_up_dw_line_V230603.md","path":".claude/skills/signal-functions/references/signals/adtm_up_dw_line_V230603.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/adtm_up_dw_line_V230603.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"# adtm_up_dw_line_V230603：ADTM 能量异动多空信号\n\n> 模块: `ang.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}N{n}M{m}TH{th}_ADTMV230603`\n\n## 信号逻辑\n\n1. 计算 `N` 窗口 `up_sum` 与 `M` 窗口 `dw_sum`；\n2. 计算 `adtm = (up_sum - dw_sum) / max(up_sum, dw_sum)`；\n3. `up_sum > dw_sum` 或 `adtm > th/10` 判 `看多`；\n4. `up_sum < dw_sum` 或 `adtm < th/10` 判 `看空`，否则 `其他`。\n\n## 信号列表示例\n\n- `Signal('60分钟_D1N30M20TH5_ADTMV230603_看多_任意_任意_0')`\n- `Signal('60分钟_D1N30M20TH5_ADTMV230603_看空_任意_任意_0')`\n\n## 参数说明\n\n- `di`：信号计算截止在倒数第 `di` 根K线，默认 `1`；\n- `n`：`up_sum` 窗口，默认 `30`；\n- `m`：`dw_sum` 窗口，默认 `20`；\n- `th`：阈值（除以 10 使用），默认 `5`。\n\n## 对齐说明\n\n与 Python `adtm_up_dw_line_V230603` 的条件优先级与阈值口径一致。\n","isInternal":false,"tokens":384,"sizeBytes":908},{"name":"amv_up_dw_line_V230603.md","path":".claude/skills/signal-functions/references/signals/amv_up_dw_line_V230603.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/amv_up_dw_line_V230603.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"# amv_up_dw_line_V230603：AMV 能量多空信号\n\n> 模块: `ang.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}N{n}M{m}_AMV能量V230603`\n\n## 信号逻辑\n\n1. 计算 `N` 与 `M` 窗口成交额加权均价；\n2. 形成 `amv1` 与 `amv2`；\n3. `amv1 > amv2` 判 `看多`，否则 `看空`。\n\n## 信号列表示例\n\n- `Signal('60分钟_D1N30M120_AMV能量V230603_看多_任意_任意_0')`\n- `Signal('60分钟_D1N30M120_AMV能量V230603_看空_任意_任意_0')`\n\n## 参数说明\n\n- `di`：信号计算截止在倒数第 `di` 根K线，默认 `1`；\n- `n`：短窗口，默认 `30`；\n- `m`：长窗口，默认 `120`。\n\n## 对齐说明\n\n与 Python `amv_up_dw_line_V230603` 的加权均价公式一致。\n","isInternal":false,"tokens":309,"sizeBytes":713},{"name":"asi_up_dw_line_V230603.md","path":".claude/skills/signal-functions/references/signals/asi_up_dw_line_V230603.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/asi_up_dw_line_V230603.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"# asi_up_dw_line_V230603：ASI 多空信号\n\n> 模块: `ang.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}N{n}P{p}_ASI多空V230603`\n\n## 信号逻辑\n\n1. 基于最近 `p` 根K线计算 SI 序列并累加得 ASI；\n2. 将最新 ASI 与 `p` 窗口 ASI 均值比较；\n3. `asi_last > asi_mean` 判 `看多`，否则 `看空`。\n\n## 信号列表示例\n\n- `Signal('60分钟_D1N30P120_ASI多空V230603_看多_任意_任意_0')`\n- `Signal('60分钟_D1N30P120_ASI多空V230603_看空_任意_任意_0')`\n\n## 参数说明\n\n- `di`：信号计算截止在倒数第 `di` 根K线，默认 `1`；\n- `n`：SI 公式中的常数项，默认 `30`；\n- `p`：窗口长度，默认 `120`。\n\n## 对齐说明\n\n按 Python `asi_up_dw_line_V230603` 的原始向量公式逐项对齐实现。\n","isInternal":false,"tokens":321,"sizeBytes":776},{"name":"bar_accelerate_V221110.md","path":".claude/skills/signal-functions/references/signals/bar_accelerate_V221110.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/bar_accelerate_V221110.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"# bar_accelerate_V221110：区间加速走势判定\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}W{window}_加速V221110`\n\n## 信号逻辑\n\n1. 取倒数第 `di` 根截止的最近 `window` 根K线，计算区间最高/最低；\n2. 若末根收盘位于区间上20%且阳线占比>=80%，判 `上涨`；\n3. 若末根收盘位于区间下20%且阴线占比>=80%，判 `下跌`，否则 `其他`。\n\n## 信号列表示例\n\n- `Signal('60分钟_D1W13_加速V221110_上涨_任意_任意_0')`\n- `Signal('60分钟_D1W13_加速V221110_下跌_任意_任意_0')`\n\n## 参数说明\n\n- `di`：倒数第 `di` 根K线，默认 `1`；\n- `window`：观察窗口长度，默认 `10`。\n\n## 对齐说明\n\n收盘位置与阳阴占比阈值对齐 Python `bar_accelerate_V221110`。\n","isInternal":false,"tokens":330,"sizeBytes":785},{"name":"bar_accelerate_V221118.md","path":".claude/skills/signal-functions/references/signals/bar_accelerate_V221118.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/bar_accelerate_V221118.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"# bar_accelerate_V221118：均线偏离加速判定\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}W{window}#{ma_type}#{timeperiod}_加速V221118`\n\n## 信号逻辑\n\n1. 计算窗口内每根 `close - ma` 偏离值；\n2. 全部偏离为正，且最后三根偏离值递增，判 `上涨`；\n3. 全部偏离为负，且最后三根偏离值递减，判 `下跌`，否则 `其他`。\n\n## 信号列表示例\n\n- `Signal('日线_D1W13#SMA#10_加速V221118_上涨_任意_任意_0')`\n- `Signal('日线_D1W13#SMA#10_加速V221118_下跌_任意_任意_0')`\n\n## 参数说明\n\n- `di`：倒数第 `di` 根K线，默认 `1`；\n- `window`：观察窗口，默认 `13`；\n- `ma_type`：均线类型，默认 `SMA`；\n- `timeperiod`：均线周期，默认 `10`。\n\n## 对齐说明\n\n偏离序列与三根单调条件对齐 Python `bar_accelerate_V221118`。\n","isInternal":false,"tokens":367,"sizeBytes":863},{"name":"bar_accelerate_V240428.md","path":".claude/skills/signal-functions/references/signals/bar_accelerate_V240428.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/bar_accelerate_V240428.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"# bar_accelerate_V240428：滚动差分加速判定\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}W{w}T{t}_加速V240428`\n\n## 信号逻辑\n\n1. 计算 `diff = close - close[w]`，取最近300根 `|diff|` 的75分位阈值；\n2. 若最新 `|diff|` 超阈且 `diff>0`，窗口内倍量阳线数>=`t` 判 `上涨`；\n3. 若最新 `|diff|` 超阈且 `diff<0`，窗口内倍量阴线数>=`t` 判 `下跌`，否则 `其他`。\n\n## 信号列表示例\n\n- `Signal('日线_D1W21T2_加速V240428_上涨_任意_任意_0')`\n- `Signal('日线_D1W21T2_加速V240428_下跌_任意_任意_0')`\n\n## 参数说明\n\n- `di`：倒数第 `di` 根K线，默认 `1`；\n- `w`：差分窗口，默认 `21`；\n- `t`：倍量同向K线最小数量，默认 `1`。\n\n## 对齐说明\n\n阈值分位与倍量计数口径对齐 Python `bar_accelerate_V240428`。\n","isInternal":false,"tokens":367,"sizeBytes":850},{"name":"bar_amount_acc_V230214.md","path":".claude/skills/signal-functions/references/signals/bar_amount_acc_V230214.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/bar_amount_acc_V230214.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"# bar_amount_acc_V230214：区间累计成交额信号\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}N{n}_累计超{t}千万`\n\n## 信号逻辑\n\n1. 取倒数第 `di` 根截止的最近 `n` 根K线；\n2. 计算累计成交额 `sum(amount)`；\n3. 若大于 `t * 1e7` 判 `是`，否则 `否`。\n\n## 信号列表示例\n\n- `Signal('日线_D2N5_累计超10千万_是_任意_任意_0')`\n- `Signal('日线_D2N5_累计超10千万_否_任意_任意_0')`\n\n## 参数说明\n\n- `di`：倒数第 `di` 根K线，默认 `2`；\n- `n`：回看K线数，默认 `5`；\n- `t`：阈值（千万），默认 `10`。\n\n## 对齐说明\n\n累计金额阈值判断与 Python `bar_amount_acc_V230214` 一致。\n","isInternal":false,"tokens":299,"sizeBytes":704},{"name":"bar_big_solid_V230215.md","path":".claude/skills/signal-functions/references/signals/bar_big_solid_V230215.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/bar_big_solid_V230215.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"# bar_big_solid_V230215：窗口最大实体中位多空信号\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}N{n}_MIDV230215`\n\n## 信号逻辑\n\n1. 在窗口内找到实体最大K线；\n2. 取该K线实体中位价 `mid`；\n3. 最新收盘价高于 `mid` 判 `看多`，否则 `看空`；\n4. 最大实体K线按方向标注 `大阳/大阴`。\n\n## 信号列表示例\n\n- `Signal('日线_D1N20_MIDV230215_看多_大阳_任意_0')`\n- `Signal('日线_D1N20_MIDV230215_看空_大阴_任意_0')`\n\n## 参数说明\n\n- `di`：倒数第 `di` 根K线，默认 `1`；\n- `n`：窗口长度，默认 `20`。\n\n## 对齐说明\n\n最大实体与中位价定义对齐 Python `bar_big_solid_V230215`。\n","isInternal":false,"tokens":287,"sizeBytes":705},{"name":"bar_bpm_V230227.md","path":".claude/skills/signal-functions/references/signals/bar_bpm_V230227.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/bar_bpm_V230227.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"# bar_bpm_V230227：绝对动量分层\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}N{n}T{th}_绝对动量V230227`\n\n## 信号逻辑\n\n1. 取最近 `n` 根，计算区间 BP：`(last_close/first_open-1)*10000`；\n2. `bp>0` 时，`bp>th` 判 `超强` 否则 `强势`；\n3. `bp<=0` 时，`|bp|>th` 判 `超弱` 否则 `弱势`。\n\n## 信号列表示例\n\n- `Signal('60分钟_D1N20T1000_绝对动量V230227_强势_任意_任意_0')`\n- `Signal('60分钟_D1N20T1000_绝对动量V230227_超弱_任意_任意_0')`\n\n## 参数说明\n\n- `di`：倒数第 `di` 根K线，默认 `1`；\n- `n`：窗口长度，默认 `20`；\n- `th`：强弱阈值（BP），默认 `1000`。\n\n## 对齐说明\n\n分层规则与 Python `bar_bpm_V230227` 保持一致。\n","isInternal":false,"tokens":339,"sizeBytes":757},{"name":"bar_break_V240428.md","path":".claude/skills/signal-functions/references/signals/bar_break_V240428.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/bar_break_V240428.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"# bar_break_V240428：收盘极值突破\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}W{w}_事件V240428`\n\n## 信号逻辑\n\n1. 在窗口内比较末根收盘与前序最高/最低；\n2. 收盘高于前序最高判 `收盘新高`；\n3. 收盘低于前序最低判 `收盘新低`，否则 `其他`。\n\n## 信号列表示例\n\n- `Signal('60分钟_D1W20_事件V240428_收盘新高_任意_任意_0')`\n- `Signal('60分钟_D1W20_事件V240428_收盘新低_任意_任意_0')`\n\n## 参数说明\n\n- `di`：倒数第 `di` 根K线，默认 `1`；\n- `w`：窗口长度，默认 `20`。\n\n## 对齐说明\n\n极值比较区间与 Python `bar_break_V240428` 一致。\n","isInternal":false,"tokens":286,"sizeBytes":673},{"name":"bar_channel_V230508.md","path":".claude/skills/signal-functions/references/signals/bar_channel_V230508.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/bar_channel_V230508.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"# bar_channel_V230508：窄幅通道方向判定\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}M{m}_通道V230507`\n\n## 信号逻辑\n\n1. 窗口内每根K线涨跌幅需不超过 `m` BP；\n2. 对高点和低点分别做一元线性拟合，要求 `r2 > 0.8`；\n3. 双斜率同向且右侧极值确认，判 `看多/看空`，否则 `其他`。\n\n## 信号列表示例\n\n- `Signal('日线_D1M600_通道V230507_看多_任意_任意_0')`\n- `Signal('日线_D1M600_通道V230507_看空_任意_任意_0')`\n\n## 参数说明\n\n- `di`：倒数第 `di` 根K线，默认 `1`；\n- `n`：窗口长度，默认 `20`；\n- `m`：单根波动阈值（BP），默认 `600`。\n\n## 对齐说明\n\n拟合阈值和右侧极值规则对齐 Python `bar_channel_V230508`。\n","isInternal":false,"tokens":325,"sizeBytes":767},{"name":"bar_classify_V240606.md","path":".claude/skills/signal-functions/references/signals/bar_classify_V240606.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/bar_classify_V240606.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"# bar_classify_V240606：单根K线收盘位置分类\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}收盘位置_分类V240606`\n\n## 信号逻辑\n\n1. 将K线高低区间三等分；\n2. 收盘落在上三分之一判 `高位`；\n3. 收盘落在下三分之一判 `低位`，否则 `中间`。\n\n## 信号列表示例\n\n- `Signal('60分钟_D1收盘位置_分类V240606_高位_任意_任意_0')`\n- `Signal('60分钟_D1收盘位置_分类V240606_中间_任意_任意_0')`\n\n## 参数说明\n\n- `di`：倒数第 `di` 根K线，默认 `1`。\n\n## 对齐说明\n\n三分位阈值与 Python `bar_classify_V240606` 一致。\n","isInternal":false,"tokens":254,"sizeBytes":632},{"name":"bar_classify_V240607.md","path":".claude/skills/signal-functions/references/signals/bar_classify_V240607.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/bar_classify_V240607.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"# bar_classify_V240607：两根K线收盘位置分类\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}K2收盘位置_分类V240607`\n\n## 信号逻辑\n\n1. 取最近两根K线（截至 `di`）；\n2. 第二根收盘高于第一根最高判 `看多`；\n3. 第二根收盘低于第一根最低判 `看空`，否则 `中性`。\n\n## 信号列表示例\n\n- `Signal('60分钟_D1K2收盘位置_分类V240607_看多_任意_任意_0')`\n- `Signal('60分钟_D1K2收盘位置_分类V240607_中性_任意_任意_0')`\n\n## 参数说明\n\n- `di`：倒数第 `di` 根K线，默认 `1`。\n\n## 对齐说明\n\n两根K线比较规则与 Python `bar_classify_V240607` 一致。\n","isInternal":false,"tokens":276,"sizeBytes":671},{"name":"bar_decision_V240608.md","path":".claude/skills/signal-functions/references/signals/bar_decision_V240608.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/bar_decision_V240608.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"# bar_decision_V240608：放量反向决策区\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_W{w}N{n}Q{q}放量_决策区域V240608`\n\n## 信号逻辑\n\n1. 在最近 `n` 根中取成交量最大的3根；\n2. 若三者成交量都大于最近 `w` 根的 `q` 分位；\n3. 且 `n` 窗口净涨则 `看空`，净跌则 `看多`。\n\n## 信号列表示例\n\n- `Signal('60分钟_W300N10Q80放量_决策区域V240608_看空_任意_任意_0')`\n- `Signal('60分钟_W300N10Q80放量_决策区域V240608_看多_任意_任意_0')`\n\n## 参数说明\n\n- `w`：长窗口，默认 `300`；\n- `n`：短窗口，默认 `10`；\n- `q`：成交量分位阈值（0-100），默认 `80`。\n\n## 对齐说明\n\n分位阈值与反向判定对齐 Python `bar_decision_V240608`。\n","isInternal":false,"tokens":328,"sizeBytes":766},{"name":"bar_decision_V240616.md","path":".claude/skills/signal-functions/references/signals/bar_decision_V240616.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/bar_decision_V240616.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"# bar_decision_V240616：新高新低后的强弱决策\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_W{w}N{n}强弱_决策区域V240616`\n\n## 信号逻辑\n\n1. 用 `di=n` 的 `w` 窗口给出历史新高/新低参考；\n2. 在最近 `n` 根中过滤出大实体K线并按顺序检查其右侧K线；\n3. 新高后转弱判 `看空`，新低后转强判 `看多`。\n\n## 信号列表示例\n\n- `Signal('60分钟_W100N5强弱_决策区域V240616_看空_任意_任意_0')`\n- `Signal('60分钟_W100N5强弱_决策区域V240616_看多_任意_任意_0')`\n\n## 参数说明\n\n- `w`：参考窗口，默认 `100`；\n- `n`：决策窗口，默认 `5`。\n\n## 对齐说明\n\n候选筛选与右侧确认流程对齐 Python `bar_decision_V240616`。\n","isInternal":false,"tokens":327,"sizeBytes":749},{"name":"bar_dual_thrust_V230403.md","path":".claude/skills/signal-functions/references/signals/bar_dual_thrust_V230403.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/bar_dual_thrust_V230403.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"# bar_dual_thrust_V230403：Dual Thrust 通道突破\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}通道突破#{N}#{K1}#{K2}_BS辅助V230403`\n\n## 信号逻辑\n\n1. 用前 `N+1` 根计算 `HH/HC/LC/LL` 与 `Range=max(HH-LC, HC-LL)`；\n2. 构造当根上/下轨：`open + Range*K1%`、`open - Range*K2%`；\n3. 收盘上破判 `看多`，下破判 `看空`，否则 `其他`。\n\n## 信号列表示例\n\n- `Signal('日线_D1通道突破#5#20#20_BS辅助V230403_看多_任意_任意_0')`\n- `Signal('日线_D1通道突破#5#20#20_BS辅助V230403_看空_任意_任意_0')`\n\n## 参数说明\n\n- `di`：倒数第 `di` 根K线，默认 `1`；\n- `N`：回看天数，默认 `5`；\n- `K1`：上轨系数（百分比），默认 `20`；\n- `K2`：下轨系数（百分比），默认 `20`。\n\n## 对齐说明\n\n通道计算与突破判断对齐 Python `bar_dual_thrust_V230403`。\n","isInternal":false,"tokens":400,"sizeBytes":888},{"name":"bar_eight_V230702.md","path":".claude/skills/signal-functions/references/signals/bar_eight_V230702.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/bar_eight_V230702.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"# bar_eight_V230702：8K 走势分类\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}#8K_走势分类V230702`\n\n## 信号逻辑\n\n1. 统计8K中的三连K重叠中枢；\n2. 无中枢时输出 `无中枢上涨/无中枢下跌`；\n3. 双中枢满足不重叠时输出 `双中枢上涨/双中枢下跌`；\n4. 其余按前三根是否出现极值分为 `强平衡/弱平衡/转折平衡`。\n\n## 信号列表示例\n\n- `Signal('30分钟_D1#8K_走势分类V230702_双中枢上涨_任意_任意_0')`\n- `Signal('30分钟_D1#8K_走势分类V230702_转折平衡市_任意_任意_0')`\n\n## 参数说明\n\n- `di`：倒数第 `di` 根K线，默认 `1`。\n\n## 对齐说明\n\n中枢判定与分类分支顺序对齐 Python `bar_eight_V230702`。\n","isInternal":false,"tokens":335,"sizeBytes":748},{"name":"bar_end_V221211.md","path":".claude/skills/signal-functions/references/signals/bar_end_V221211.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/bar_end_V221211.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"# bar_end_V221211：判断大周期K线是否闭合\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_{freq1}结束_BS辅助221211`\n\n## 信号逻辑\n\n1. 以当前基础周期 `freq` 与目标分钟周期 `freq1` 计算当前K线对应结束时间；\n2. 从最新K线向前统计同属该结束时间的连续数量 `i`；\n3. 若 `end_time == last_dt` 判定 `闭合`，否则判定 `未闭{i}`。\n\n## 信号列表示例\n\n- `Signal('15分钟_60分钟结束_BS辅助221211_闭合_任意_任意_0')`\n- `Signal('15分钟_60分钟结束_BS辅助221211_未闭2_任意_任意_0')`\n\n## 参数说明\n\n- `freq1`：目标分钟周期，默认 `60分钟`。\n\n## 对齐说明\n\n闭合/未闭计数语义与 Python `bar_end_V221211` 保持一致。\n","isInternal":false,"tokens":274,"sizeBytes":749},{"name":"bar_fake_break_V230204.md","path":".claude/skills/signal-functions/references/signals/bar_fake_break_V230204.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/bar_fake_break_V230204.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"# bar_fake_break_V230204：区间假突破判定\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}N{n}M{m}_假突破V230204`\n\n## 信号逻辑\n\n1. 在最近 `N` 根内寻找滑动 `M` 窗口重叠中枢；\n2. 阳线末根创新高且“跌破DD后拉回”，判 `看多`；\n3. 阴线末根创新低且“突破GG后回落”，判 `看空`，否则 `其他`。\n\n## 信号列表示例\n\n- `Signal('15分钟_D1N20M5_假突破_看多_任意_任意_0')`\n- `Signal('15分钟_D1N20M5_假突破_看空_任意_任意_0')`\n\n## 参数说明\n\n- `di`：倒数第 `di` 根K线，默认 `1`；\n- `n`：观察窗口，默认 `20`；\n- `m`：中枢滑窗，默认 `5`。\n\n## 对齐说明\n\n中枢重叠与真假突破条件对齐 Python `bar_fake_break_V230204`。\n","isInternal":false,"tokens":355,"sizeBytes":768},{"name":"bar_fang_liang_break_V221216.md","path":".claude/skills/signal-functions/references/signals/bar_fang_liang_break_V221216.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/bar_fang_liang_break_V221216.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"# bar_fang_liang_break_V221216：放量突破与缩量回踩\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}TH{th}#{ma_type}#{timeperiod}_突破V221216`\n\n## 信号逻辑\n\n1. 计算指定均线，检查末根是否放量且站上均线，判 `放量突破`；\n2. 检查末根是否缩量且收盘不破均线，且前序收盘与均线距离在阈值内，判 `缩量回踩`；\n3. 在窗口长度 `5~9` 中依次尝试，首次出现突破即返回。\n\n## 信号列表示例\n\n- `Signal('15分钟_D1TH300#SMA#233_突破V221216_放量突破_缩量回踩_任意_0')`\n- `Signal('15分钟_D1TH300#SMA#233_突破V221216_其他_其他_任意_0')`\n\n## 参数说明\n\n- `di`：倒数第 `di` 根K线，默认 `1`；\n- `th`：回踩距离阈值（BP），默认 `300`；\n- `ma_type`：均线类型，默认 `SMA`；\n- `timeperiod`：均线周期，默认 `233`。\n\n## 对齐说明\n\n窗口扫描与两阶段条件对齐 Python `bar_fang_liang_break_V221216`。\n","isInternal":false,"tokens":426,"sizeBytes":971},{"name":"bar_limit_down_V230525.md","path":".claude/skills/signal-functions/references/signals/bar_limit_down_V230525.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/bar_limit_down_V230525.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"# bar_limit_down_V230525：跌停后反包阳线\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_跌停后无下影线长实体阳线_短线V230525`\n\n## 信号逻辑\n\n1. 仅日线级别；\n2. 前一日近似跌停：`low==close<prev_close && close/prev_close<0.95`；\n3. 当日无下影长阳：`low==open && close>open && solid>2*upper && close/open>1.07`；\n4. 且当日最低低于前日最低，判 `满足`。\n\n## 信号列表示例\n\n- `Signal('日线_跌停后无下影线长实体阳线_短线V230525_满足_任意_任意_0')`\n- `Signal('日线_跌停后无下影线长实体阳线_短线V230525_其他_任意_任意_0')`\n\n## 参数说明\n\n- 无额外参数。\n\n## 对齐说明\n\n条件组合与 Python `bar_limit_down_V230525` 保持一致。\n","isInternal":false,"tokens":306,"sizeBytes":767},{"name":"bar_mean_amount_V221112.md","path":".claude/skills/signal-functions/references/signals/bar_mean_amount_V221112.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/bar_mean_amount_V221112.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"# bar_mean_amount_V221112：区间均额分类信号\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}K{n}B均额_{th1}至{th2}千万`\n\n## 信号逻辑\n\n1. 取倒数第 `di` 根截止的最近 `n` 根K线；\n2. 计算平均成交额 `m`；\n3. 若 `m/1e7` 在 `[th1, th2]` 判 `是`，否则判 `否`。\n\n## 信号列表示例\n\n- `Signal('60分钟_D1K10B均额_1至4千万_是_任意_任意_0')`\n- `Signal('60分钟_D1K10B均额_1至4千万_否_任意_任意_0')`\n\n## 参数说明\n\n- `di`：倒数第 `di` 根K线，默认 `1`；\n- `n`：样本长度，默认 `10`；\n- `th1`：下限（千万），默认 `1`；\n- `th2`：上限（千万），默认 `4`。\n\n## 对齐说明\n\n均额口径与 Python `bar_mean_amount_V221112` 保持一致。\n","isInternal":false,"tokens":328,"sizeBytes":761},{"name":"bar_operate_span_V221111.md","path":".claude/skills/signal-functions/references/signals/bar_operate_span_V221111.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/bar_operate_span_V221111.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"# bar_operate_span_V221111：日内时间区间过滤\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_T{t1}#{t2}_时间区间V221111`\n\n## 信号逻辑\n\n1. 读取最新K线时间 `HHMM`；\n2. 若 `t1 <= HHMM <= t2` 判定 `是`，否则判定 `否`。\n\n## 信号列表示例\n\n- `Signal('60分钟_T0935#1450_时间区间_是_任意_任意_0')`\n- `Signal('60分钟_T0935#1450_时间区间_否_任意_任意_0')`\n\n## 参数说明\n\n- `t1`：起始时间（`HHMM`），默认 `0935`；\n- `t2`：结束时间（`HHMM`），默认 `1450`。\n\n## 对齐说明\n\n边界包含比较与 Python `bar_operate_span_V221111` 一致。\n","isInternal":false,"tokens":253,"sizeBytes":634},{"name":"bar_plr_V240427.md","path":".claude/skills/signal-functions/references/signals/bar_plr_V240427.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/bar_plr_V240427.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"# bar_plr_V240427：盈亏比约束\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}W{w}T{t}M{m}_盈亏比V240427`\n\n## 信号逻辑\n\n1. `多头`：以窗口最低点前的最高点与当前收盘计算盈亏比；\n2. `空头`：以窗口最高点前的最低点与当前收盘计算盈亏比；\n3. `plr > t/10` 判 `满足`，否则 `不满足`。\n\n## 信号列表示例\n\n- `Signal('60分钟_D1W60T20M多头_盈亏比V240427_满足_任意_任意_0')`\n- `Signal('60分钟_D1W60T20M空头_盈亏比V240427_不满足_任意_任意_0')`\n\n## 参数说明\n\n- `di`：倒数第 `di` 根K线，默认 `1`；\n- `w`：窗口长度，默认 `60`；\n- `t`：阈值（`t/10`），默认 `20`；\n- `m`：方向，`多头/空头`，默认 `多头`。\n\n## 对齐说明\n\n盈亏比定义与阈值比较对齐 Python `bar_plr_V240427`。\n","isInternal":false,"tokens":372,"sizeBytes":840},{"name":"bar_polyfit_V240428.md","path":".claude/skills/signal-functions/references/signals/bar_polyfit_V240428.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/bar_polyfit_V240428.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_polyfit_V240428.md -->","isInternal":false,"tokens":300,"sizeBytes":703},{"name":"bar_r_breaker_V230326.md","path":".claude/skills/signal-functions/references/signals/bar_r_breaker_V230326.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/bar_r_breaker_V230326.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_r_breaker_V230326.md -->","isInternal":false,"tokens":291,"sizeBytes":664},{"name":"bar_reversal_V230227.md","path":".claude/skills/signal-functions/references/signals/bar_reversal_V230227.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/bar_reversal_V230227.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_reversal_V230227.md -->","isInternal":false,"tokens":324,"sizeBytes":759},{"name":"bar_section_momentum_V221112.md","path":".claude/skills/signal-functions/references/signals/bar_section_momentum_V221112.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/bar_section_momentum_V221112.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_section_momentum_V221112.md -->","isInternal":false,"tokens":365,"sizeBytes":815},{"name":"bar_shuang_fei_V230507.md","path":".claude/skills/signal-functions/references/signals/bar_shuang_fei_V230507.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/bar_shuang_fei_V230507.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_shuang_fei_V230507.md -->","isInternal":false,"tokens":273,"sizeBytes":617},{"name":"bar_single_V230214.md","path":".claude/skills/signal-functions/references/signals/bar_single_V230214.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/bar_single_V230214.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_single_V230214.md -->","isInternal":false,"tokens":309,"sizeBytes":758},{"name":"bar_single_V230506.md","path":".claude/skills/signal-functions/references/signals/bar_single_V230506.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/bar_single_V230506.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_single_V230506.md -->","isInternal":false,"tokens":317,"sizeBytes":734},{"name":"bar_td9_V240616.md","path":".claude/skills/signal-functions/references/signals/bar_td9_V240616.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/bar_td9_V240616.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_td9_V240616.md -->","isInternal":false,"tokens":297,"sizeBytes":653},{"name":"bar_time_V230327.md","path":".claude/skills/signal-functions/references/signals/bar_time_V230327.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/bar_time_V230327.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_time_V230327.md -->","isInternal":false,"tokens":235,"sizeBytes":630},{"name":"bar_tnr_V230629.md","path":".claude/skills/signal-functions/references/signals/bar_tnr_V230629.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/bar_tnr_V230629.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_tnr_V230629.md -->","isInternal":false,"tokens":278,"sizeBytes":637},{"name":"bar_tnr_V230630.md","path":".claude/skills/signal-functions/references/signals/bar_tnr_V230630.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/bar_tnr_V230630.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_tnr_V230630.md -->","isInternal":false,"tokens":335,"sizeBytes":761},{"name":"bar_trend_V240209.md","path":".claude/skills/signal-functions/references/signals/bar_trend_V240209.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/bar_trend_V240209.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_trend_V240209.md -->","isInternal":false,"tokens":349,"sizeBytes":773},{"name":"bar_triple_V230506.md","path":".claude/skills/signal-functions/references/signals/bar_triple_V230506.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/bar_triple_V230506.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_triple_V230506.md -->","isInternal":false,"tokens":387,"sizeBytes":887},{"name":"bar_vol_bs1_V230224.md","path":".claude/skills/signal-functions/references/signals/bar_vol_bs1_V230224.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/bar_vol_bs1_V230224.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_vol_bs1_V230224.md -->","isInternal":false,"tokens":314,"sizeBytes":718},{"name":"bar_vol_grow_V221112.md","path":".claude/skills/signal-functions/references/signals/bar_vol_grow_V221112.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/bar_vol_grow_V221112.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_vol_grow_V221112.md -->","isInternal":false,"tokens":290,"sizeBytes":684},{"name":"bar_volatility_V241013.md","path":".claude/skills/signal-functions/references/signals/bar_volatility_V241013.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/bar_volatility_V241013.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_volatility_V241013.md -->","isInternal":false,"tokens":314,"sizeBytes":752},{"name":"bar_weekday_V230328.md","path":".claude/skills/signal-functions/references/signals/bar_weekday_V230328.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/bar_weekday_V230328.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_weekday_V230328.md -->","isInternal":false,"tokens":213,"sizeBytes":571},{"name":"bar_window_ps_V230731.md","path":".claude/skills/signal-functions/references/signals/bar_window_ps_V230731.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/bar_window_ps_V230731.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_window_ps_V230731.md -->","isInternal":false,"tokens":371,"sizeBytes":854},{"name":"bar_window_ps_V230801.md","path":".claude/skills/signal-functions/references/signals/bar_window_ps_V230801.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/bar_window_ps_V230801.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_window_ps_V230801.md -->","isInternal":false,"tokens":310,"sizeBytes":717},{"name":"bar_window_std_V230731.md","path":".claude/skills/signal-functions/references/signals/bar_window_std_V230731.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/bar_window_std_V230731.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_window_std_V230731.md -->","isInternal":false,"tokens":362,"sizeBytes":821},{"name":"bar_zdf_V221203.md","path":".claude/skills/signal-functions/references/signals/bar_zdf_V221203.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/bar_zdf_V221203.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_zdf_V221203.md -->","isInternal":false,"tokens":325,"sizeBytes":754},{"name":"bar_zdt_V230331.md","path":".claude/skills/signal-functions/references/signals/bar_zdt_V230331.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/bar_zdt_V230331.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_zdt_V230331.md -->","isInternal":false,"tokens":292,"sizeBytes":681},{"name":"bar_zfzd_V241013.md","path":".claude/skills/signal-functions/references/signals/bar_zfzd_V241013.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/bar_zfzd_V241013.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_zfzd_V241013.md -->","isInternal":false,"tokens":259,"sizeBytes":598},{"name":"bar_zfzd_V241014.md","path":".claude/skills/signal-functions/references/signals/bar_zfzd_V241014.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/bar_zfzd_V241014.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_zfzd_V241014.md -->","isInternal":false,"tokens":289,"sizeBytes":675},{"name":"bar_zt_count_V230504.md","path":".claude/skills/signal-functions/references/signals/bar_zt_count_V230504.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/bar_zt_count_V230504.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbar_zt_count_V230504.md -->","isInternal":false,"tokens":358,"sizeBytes":833},{"name":"bias_up_dw_line_V230618.md","path":".claude/skills/signal-functions/references/signals/bias_up_dw_line_V230618.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/bias_up_dw_line_V230618.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbias_up_dw_line_V230618.md -->","isInternal":false,"tokens":385,"sizeBytes":860},{"name":"byi_bi_end_V230106.md","path":".claude/skills/signal-functions/references/signals/byi_bi_end_V230106.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/byi_bi_end_V230106.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbyi_bi_end_V230106.md -->","isInternal":false,"tokens":300,"sizeBytes":712},{"name":"byi_bi_end_V230107.md","path":".claude/skills/signal-functions/references/signals/byi_bi_end_V230107.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/byi_bi_end_V230107.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbyi_bi_end_V230107.md -->","isInternal":false,"tokens":285,"sizeBytes":700},{"name":"byi_fx_num_V230628.md","path":".claude/skills/signal-functions/references/signals/byi_fx_num_V230628.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/byi_fx_num_V230628.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbyi_fx_num_V230628.md -->","isInternal":false,"tokens":293,"sizeBytes":720},{"name":"byi_second_bs_V230324.md","path":".claude/skills/signal-functions/references/signals/byi_second_bs_V230324.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/byi_second_bs_V230324.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbyi_second_bs_V230324.md -->","isInternal":false,"tokens":356,"sizeBytes":842},{"name":"byi_symmetry_zs_V221107.md","path":".claude/skills/signal-functions/references/signals/byi_symmetry_zs_V221107.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/byi_symmetry_zs_V221107.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fbyi_symmetry_zs_V221107.md -->","isInternal":false,"tokens":302,"sizeBytes":696},{"name":"cat_macd_V230518.md","path":".claude/skills/signal-functions/references/signals/cat_macd_V230518.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/cat_macd_V230518.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcat_macd_V230518.md -->","isInternal":false,"tokens":357,"sizeBytes":864},{"name":"cat_macd_V230520.md","path":".claude/skills/signal-functions/references/signals/cat_macd_V230520.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/cat_macd_V230520.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcat_macd_V230520.md -->","isInternal":false,"tokens":378,"sizeBytes":903},{"name":"cci_decision_V240620.md","path":".claude/skills/signal-functions/references/signals/cci_decision_V240620.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/cci_decision_V240620.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcci_decision_V240620.md -->","isInternal":false,"tokens":315,"sizeBytes":730},{"name":"clv_up_dw_line_V230605.md","path":".claude/skills/signal-functions/references/signals/clv_up_dw_line_V230605.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/clv_up_dw_line_V230605.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fclv_up_dw_line_V230605.md -->","isInternal":false,"tokens":293,"sizeBytes":698},{"name":"cmo_up_dw_line_V230605.md","path":".claude/skills/signal-functions/references/signals/cmo_up_dw_line_V230605.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/cmo_up_dw_line_V230605.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcmo_up_dw_line_V230605.md -->","isInternal":false,"tokens":323,"sizeBytes":748},{"name":"coo_cci_V230323.md","path":".claude/skills/signal-functions/references/signals/coo_cci_V230323.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/coo_cci_V230323.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcoo_cci_V230323.md -->","isInternal":false,"tokens":371,"sizeBytes":867},{"name":"coo_kdj_V230322.md","path":".claude/skills/signal-functions/references/signals/coo_kdj_V230322.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/coo_kdj_V230322.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcoo_kdj_V230322.md -->","isInternal":false,"tokens":365,"sizeBytes":856},{"name":"coo_sar_V230325.md","path":".claude/skills/signal-functions/references/signals/coo_sar_V230325.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/coo_sar_V230325.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcoo_sar_V230325.md -->","isInternal":false,"tokens":312,"sizeBytes":726},{"name":"coo_td_V221110.md","path":".claude/skills/signal-functions/references/signals/coo_td_V221110.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/coo_td_V221110.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcoo_td_V221110.md -->","isInternal":false,"tokens":293,"sizeBytes":657},{"name":"coo_td_V221111.md","path":".claude/skills/signal-functions/references/signals/coo_td_V221111.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/coo_td_V221111.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcoo_td_V221111.md -->","isInternal":false,"tokens":280,"sizeBytes":630},{"name":"cvolp_up_dw_line_V230612.md","path":".claude/skills/signal-functions/references/signals/cvolp_up_dw_line_V230612.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/cvolp_up_dw_line_V230612.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcvolp_up_dw_line_V230612.md -->","isInternal":false,"tokens":465,"sizeBytes":1066},{"name":"cxt_bi_base_V230228.md","path":".claude/skills/signal-functions/references/signals/cxt_bi_base_V230228.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/cxt_bi_base_V230228.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_bi_base_V230228.md -->","isInternal":false,"tokens":305,"sizeBytes":790},{"name":"cxt_bi_end_V230104.md","path":".claude/skills/signal-functions/references/signals/cxt_bi_end_V230104.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/cxt_bi_end_V230104.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_bi_end_V230104.md -->","isInternal":false,"tokens":368,"sizeBytes":882},{"name":"cxt_bi_end_V230105.md","path":".claude/skills/signal-functions/references/signals/cxt_bi_end_V230105.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/cxt_bi_end_V230105.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_bi_end_V230105.md -->","isInternal":false,"tokens":388,"sizeBytes":922},{"name":"cxt_bi_end_V230222.md","path":".claude/skills/signal-functions/references/signals/cxt_bi_end_V230222.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/cxt_bi_end_V230222.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_bi_end_V230222.md -->","isInternal":false,"tokens":355,"sizeBytes":887},{"name":"cxt_bi_end_V230224.md","path":".claude/skills/signal-functions/references/signals/cxt_bi_end_V230224.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/cxt_bi_end_V230224.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_bi_end_V230224.md -->","isInternal":false,"tokens":314,"sizeBytes":764},{"name":"cxt_bi_end_V230312.md","path":".claude/skills/signal-functions/references/signals/cxt_bi_end_V230312.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/cxt_bi_end_V230312.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_bi_end_V230312.md -->","isInternal":false,"tokens":358,"sizeBytes":907},{"name":"cxt_bi_end_V230320.md","path":".claude/skills/signal-functions/references/signals/cxt_bi_end_V230320.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/cxt_bi_end_V230320.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_bi_end_V230320.md -->","isInternal":false,"tokens":363,"sizeBytes":858},{"name":"cxt_bi_end_V230322.md","path":".claude/skills/signal-functions/references/signals/cxt_bi_end_V230322.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/cxt_bi_end_V230322.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_bi_end_V230322.md -->","isInternal":false,"tokens":345,"sizeBytes":871},{"name":"cxt_bi_end_V230324.md","path":".claude/skills/signal-functions/references/signals/cxt_bi_end_V230324.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/cxt_bi_end_V230324.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_bi_end_V230324.md -->","isInternal":false,"tokens":375,"sizeBytes":884},{"name":"cxt_bi_end_V230618.md","path":".claude/skills/signal-functions/references/signals/cxt_bi_end_V230618.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/cxt_bi_end_V230618.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_bi_end_V230618.md -->","isInternal":false,"tokens":325,"sizeBytes":776},{"name":"cxt_bi_end_V230815.md","path":".claude/skills/signal-functions/references/signals/cxt_bi_end_V230815.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/cxt_bi_end_V230815.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_bi_end_V230815.md -->","isInternal":false,"tokens":344,"sizeBytes":790},{"name":"cxt_bi_status_V230101.md","path":".claude/skills/signal-functions/references/signals/cxt_bi_status_V230101.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/cxt_bi_status_V230101.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_bi_status_V230101.md -->","isInternal":false,"tokens":315,"sizeBytes":785},{"name":"cxt_bi_status_V230102.md","path":".claude/skills/signal-functions/references/signals/cxt_bi_status_V230102.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/cxt_bi_status_V230102.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_bi_status_V230102.md -->","isInternal":false,"tokens":328,"sizeBytes":832},{"name":"cxt_bi_stop_V230815.md","path":".claude/skills/signal-functions/references/signals/cxt_bi_stop_V230815.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/cxt_bi_stop_V230815.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_bi_stop_V230815.md -->","isInternal":false,"tokens":343,"sizeBytes":809},{"name":"cxt_bi_trend_V230824.md","path":".claude/skills/signal-functions/references/signals/cxt_bi_trend_V230824.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/cxt_bi_trend_V230824.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_bi_trend_V230824.md -->","isInternal":false,"tokens":326,"sizeBytes":769},{"name":"cxt_bi_trend_V230913.md","path":".claude/skills/signal-functions/references/signals/cxt_bi_trend_V230913.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/cxt_bi_trend_V230913.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_bi_trend_V230913.md -->","isInternal":false,"tokens":395,"sizeBytes":883},{"name":"cxt_bi_zdf_V230601.md","path":".claude/skills/signal-functions/references/signals/cxt_bi_zdf_V230601.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/cxt_bi_zdf_V230601.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_bi_zdf_V230601.md -->","isInternal":false,"tokens":288,"sizeBytes":673},{"name":"cxt_bs_V240526.md","path":".claude/skills/signal-functions/references/signals/cxt_bs_V240526.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/cxt_bs_V240526.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_bs_V240526.md -->","isInternal":false,"tokens":342,"sizeBytes":796},{"name":"cxt_bs_V240527.md","path":".claude/skills/signal-functions/references/signals/cxt_bs_V240527.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/cxt_bs_V240527.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_bs_V240527.md -->","isInternal":false,"tokens":346,"sizeBytes":819},{"name":"cxt_decision_V240526.md","path":".claude/skills/signal-functions/references/signals/cxt_decision_V240526.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/cxt_decision_V240526.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_decision_V240526.md -->","isInternal":false,"tokens":336,"sizeBytes":808},{"name":"cxt_decision_V240612.md","path":".claude/skills/signal-functions/references/signals/cxt_decision_V240612.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/cxt_decision_V240612.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_decision_V240612.md -->","isInternal":false,"tokens":356,"sizeBytes":835},{"name":"cxt_decision_V240613.md","path":".claude/skills/signal-functions/references/signals/cxt_decision_V240613.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/cxt_decision_V240613.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_decision_V240613.md -->","isInternal":false,"tokens":348,"sizeBytes":810},{"name":"cxt_decision_V240614.md","path":".claude/skills/signal-functions/references/signals/cxt_decision_V240614.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/cxt_decision_V240614.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_decision_V240614.md -->","isInternal":false,"tokens":350,"sizeBytes":818},{"name":"cxt_double_zs_V230311.md","path":".claude/skills/signal-functions/references/signals/cxt_double_zs_V230311.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/cxt_double_zs_V230311.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_double_zs_V230311.md -->","isInternal":false,"tokens":339,"sizeBytes":809},{"name":"cxt_eleven_bi_V230622.md","path":".claude/skills/signal-functions/references/signals/cxt_eleven_bi_V230622.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/cxt_eleven_bi_V230622.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_eleven_bi_V230622.md -->","isInternal":false,"tokens":325,"sizeBytes":793},{"name":"cxt_first_buy_V221126.md","path":".claude/skills/signal-functions/references/signals/cxt_first_buy_V221126.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/cxt_first_buy_V221126.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_first_buy_V221126.md -->","isInternal":false,"tokens":281,"sizeBytes":666},{"name":"cxt_first_sell_V221126.md","path":".claude/skills/signal-functions/references/signals/cxt_first_sell_V221126.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/cxt_first_sell_V221126.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_first_sell_V221126.md -->","isInternal":false,"tokens":281,"sizeBytes":672},{"name":"cxt_five_bi_V230619.md","path":".claude/skills/signal-functions/references/signals/cxt_five_bi_V230619.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/cxt_five_bi_V230619.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_five_bi_V230619.md -->","isInternal":false,"tokens":326,"sizeBytes":796},{"name":"cxt_fx_power_V221107.md","path":".claude/skills/signal-functions/references/signals/cxt_fx_power_V221107.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/cxt_fx_power_V221107.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_fx_power_V221107.md -->","isInternal":false,"tokens":288,"sizeBytes":664},{"name":"cxt_intraday_V230701.md","path":".claude/skills/signal-functions/references/signals/cxt_intraday_V230701.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/cxt_intraday_V230701.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_intraday_V230701.md -->","isInternal":false,"tokens":130,"sizeBytes":311},{"name":"cxt_nine_bi_V230621.md","path":".claude/skills/signal-functions/references/signals/cxt_nine_bi_V230621.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/cxt_nine_bi_V230621.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_nine_bi_V230621.md -->","isInternal":false,"tokens":321,"sizeBytes":768},{"name":"cxt_overlap_V240526.md","path":".claude/skills/signal-functions/references/signals/cxt_overlap_V240526.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/cxt_overlap_V240526.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_overlap_V240526.md -->","isInternal":false,"tokens":337,"sizeBytes":814},{"name":"cxt_overlap_V240612.md","path":".claude/skills/signal-functions/references/signals/cxt_overlap_V240612.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/cxt_overlap_V240612.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_overlap_V240612.md -->","isInternal":false,"tokens":384,"sizeBytes":880},{"name":"cxt_range_oscillation_V230620.md","path":".claude/skills/signal-functions/references/signals/cxt_range_oscillation_V230620.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/cxt_range_oscillation_V230620.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_range_oscillation_V230620.md -->","isInternal":false,"tokens":342,"sizeBytes":795},{"name":"cxt_second_bs_V230320.md","path":".claude/skills/signal-functions/references/signals/cxt_second_bs_V230320.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/cxt_second_bs_V230320.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_second_bs_V230320.md -->","isInternal":false,"tokens":359,"sizeBytes":871},{"name":"cxt_second_bs_V240524.md","path":".claude/skills/signal-functions/references/signals/cxt_second_bs_V240524.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/cxt_second_bs_V240524.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_second_bs_V240524.md -->","isInternal":false,"tokens":366,"sizeBytes":858},{"name":"cxt_seven_bi_V230620.md","path":".claude/skills/signal-functions/references/signals/cxt_seven_bi_V230620.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/cxt_seven_bi_V230620.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_seven_bi_V230620.md -->","isInternal":false,"tokens":317,"sizeBytes":772},{"name":"cxt_third_bs_V230318.md","path":".claude/skills/signal-functions/references/signals/cxt_third_bs_V230318.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/cxt_third_bs_V230318.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_third_bs_V230318.md -->","isInternal":false,"tokens":362,"sizeBytes":864},{"name":"cxt_third_bs_V230319.md","path":".claude/skills/signal-functions/references/signals/cxt_third_bs_V230319.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/cxt_third_bs_V230319.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_third_bs_V230319.md -->","isInternal":false,"tokens":373,"sizeBytes":874},{"name":"cxt_third_buy_V230228.md","path":".claude/skills/signal-functions/references/signals/cxt_third_buy_V230228.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/cxt_third_buy_V230228.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_third_buy_V230228.md -->","isInternal":false,"tokens":336,"sizeBytes":773},{"name":"cxt_three_bi_V230618.md","path":".claude/skills/signal-functions/references/signals/cxt_three_bi_V230618.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/cxt_three_bi_V230618.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_three_bi_V230618.md -->","isInternal":false,"tokens":322,"sizeBytes":777},{"name":"cxt_ubi_end_V230816.md","path":".claude/skills/signal-functions/references/signals/cxt_ubi_end_V230816.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/cxt_ubi_end_V230816.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_ubi_end_V230816.md -->","isInternal":false,"tokens":306,"sizeBytes":761},{"name":"cxt_zhong_shu_gong_zhen_V221221.md","path":".claude/skills/signal-functions/references/signals/cxt_zhong_shu_gong_zhen_V221221.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/cxt_zhong_shu_gong_zhen_V221221.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fcxt_zhong_shu_gong_zhen_V221221.md -->","isInternal":false,"tokens":174,"sizeBytes":404},{"name":"dema_up_dw_line_V230605.md","path":".claude/skills/signal-functions/references/signals/dema_up_dw_line_V230605.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/dema_up_dw_line_V230605.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fdema_up_dw_line_V230605.md -->","isInternal":false,"tokens":305,"sizeBytes":684},{"name":"demakder_up_dw_line_V230605.md","path":".claude/skills/signal-functions/references/signals/demakder_up_dw_line_V230605.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/demakder_up_dw_line_V230605.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fdemakder_up_dw_line_V230605.md -->","isInternal":false,"tokens":363,"sizeBytes":874},{"name":"emv_up_dw_line_V230605.md","path":".claude/skills/signal-functions/references/signals/emv_up_dw_line_V230605.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/emv_up_dw_line_V230605.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Femv_up_dw_line_V230605.md -->","isInternal":false,"tokens":276,"sizeBytes":656},{"name":"er_up_dw_line_V230604.md","path":".claude/skills/signal-functions/references/signals/er_up_dw_line_V230604.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/er_up_dw_line_V230604.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fer_up_dw_line_V230604.md -->","isInternal":false,"tokens":346,"sizeBytes":835},{"name":"jcc_ci_tou_V221101.md","path":".claude/skills/signal-functions/references/signals/jcc_ci_tou_V221101.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/jcc_ci_tou_V221101.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fjcc_ci_tou_V221101.md -->","isInternal":false,"tokens":305,"sizeBytes":685},{"name":"jcc_fan_ji_xian_V221121.md","path":".claude/skills/signal-functions/references/signals/jcc_fan_ji_xian_V221121.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/jcc_fan_ji_xian_V221121.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fjcc_fan_ji_xian_V221121.md -->","isInternal":false,"tokens":262,"sizeBytes":621},{"name":"jcc_fen_shou_xian_V20221113.md","path":".claude/skills/signal-functions/references/signals/jcc_fen_shou_xian_V20221113.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/jcc_fen_shou_xian_V20221113.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fjcc_fen_shou_xian_V20221113.md -->","isInternal":false,"tokens":294,"sizeBytes":680},{"name":"jcc_gap_yin_yang_V221121.md","path":".claude/skills/signal-functions/references/signals/jcc_gap_yin_yang_V221121.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/jcc_gap_yin_yang_V221121.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fjcc_gap_yin_yang_V221121.md -->","isInternal":false,"tokens":249,"sizeBytes":573},{"name":"jcc_ping_tou_V221113.md","path":".claude/skills/signal-functions/references/signals/jcc_ping_tou_V221113.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/jcc_ping_tou_V221113.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fjcc_ping_tou_V221113.md -->","isInternal":false,"tokens":272,"sizeBytes":655},{"name":"jcc_san_fa_V20221115.md","path":".claude/skills/signal-functions/references/signals/jcc_san_fa_V20221115.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/jcc_san_fa_V20221115.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fjcc_san_fa_V20221115.md -->","isInternal":false,"tokens":284,"sizeBytes":651},{"name":"jcc_san_fa_V20221118.md","path":".claude/skills/signal-functions/references/signals/jcc_san_fa_V20221118.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/jcc_san_fa_V20221118.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fjcc_san_fa_V20221118.md -->","isInternal":false,"tokens":252,"sizeBytes":574},{"name":"jcc_san_szx_V221122.md","path":".claude/skills/signal-functions/references/signals/jcc_san_szx_V221122.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/jcc_san_szx_V221122.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fjcc_san_szx_V221122.md -->","isInternal":false,"tokens":227,"sizeBytes":534},{"name":"jcc_san_xing_xian_V221023.md","path":".claude/skills/signal-functions/references/signals/jcc_san_xing_xian_V221023.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/jcc_san_xing_xian_V221023.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fjcc_san_xing_xian_V221023.md -->","isInternal":false,"tokens":321,"sizeBytes":762},{"name":"jcc_shan_chun_V221121.md","path":".claude/skills/signal-functions/references/signals/jcc_shan_chun_V221121.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/jcc_shan_chun_V221121.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fjcc_shan_chun_V221121.md -->","isInternal":false,"tokens":267,"sizeBytes":584},{"name":"jcc_szx_V221111.md","path":".claude/skills/signal-functions/references/signals/jcc_szx_V221111.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/jcc_szx_V221111.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fjcc_szx_V221111.md -->","isInternal":false,"tokens":279,"sizeBytes":641},{"name":"jcc_ta_xing_V221124.md","path":".claude/skills/signal-functions/references/signals/jcc_ta_xing_V221124.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/jcc_ta_xing_V221124.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fjcc_ta_xing_V221124.md -->","isInternal":false,"tokens":238,"sizeBytes":527},{"name":"jcc_ten_mo_V221028.md","path":".claude/skills/signal-functions/references/signals/jcc_ten_mo_V221028.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/jcc_ten_mo_V221028.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fjcc_ten_mo_V221028.md -->","isInternal":false,"tokens":261,"sizeBytes":613},{"name":"jcc_three_crow_V221108.md","path":".claude/skills/signal-functions/references/signals/jcc_three_crow_V221108.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/jcc_three_crow_V221108.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fjcc_three_crow_V221108.md -->","isInternal":false,"tokens":259,"sizeBytes":570},{"name":"jcc_two_crow_V221108.md","path":".claude/skills/signal-functions/references/signals/jcc_two_crow_V221108.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/jcc_two_crow_V221108.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fjcc_two_crow_V221108.md -->","isInternal":false,"tokens":242,"sizeBytes":549},{"name":"jcc_wu_yun_gai_ding_V221101.md","path":".claude/skills/signal-functions/references/signals/jcc_wu_yun_gai_ding_V221101.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/jcc_wu_yun_gai_ding_V221101.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fjcc_wu_yun_gai_ding_V221101.md -->","isInternal":false,"tokens":350,"sizeBytes":768},{"name":"jcc_xing_xian_V221118.md","path":".claude/skills/signal-functions/references/signals/jcc_xing_xian_V221118.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/jcc_xing_xian_V221118.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fjcc_xing_xian_V221118.md -->","isInternal":false,"tokens":281,"sizeBytes":679},{"name":"jcc_yun_xian_V221118.md","path":".claude/skills/signal-functions/references/signals/jcc_yun_xian_V221118.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/jcc_yun_xian_V221118.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fjcc_yun_xian_V221118.md -->","isInternal":false,"tokens":222,"sizeBytes":535},{"name":"jcc_zhu_huo_xian_V221027.md","path":".claude/skills/signal-functions/references/signals/jcc_zhu_huo_xian_V221027.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/jcc_zhu_huo_xian_V221027.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fjcc_zhu_huo_xian_V221027.md -->","isInternal":false,"tokens":321,"sizeBytes":720},{"name":"kcatr_up_dw_line_V230823.md","path":".claude/skills/signal-functions/references/signals/kcatr_up_dw_line_V230823.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/kcatr_up_dw_line_V230823.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fkcatr_up_dw_line_V230823.md -->","isInternal":false,"tokens":392,"sizeBytes":893},{"name":"ntmdk_V230824.md","path":".claude/skills/signal-functions/references/signals/ntmdk_V230824.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/ntmdk_V230824.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fntmdk_V230824.md -->","isInternal":false,"tokens":288,"sizeBytes":664},{"name":"obv_up_dw_line_V230719.md","path":".claude/skills/signal-functions/references/signals/obv_up_dw_line_V230719.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/obv_up_dw_line_V230719.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fobv_up_dw_line_V230719.md -->","isInternal":false,"tokens":400,"sizeBytes":954},{"name":"obvm_line_V230610.md","path":".claude/skills/signal-functions/references/signals/obvm_line_V230610.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/obvm_line_V230610.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fobvm_line_V230610.md -->","isInternal":false,"tokens":352,"sizeBytes":815},{"name":"pos_bar_stop_V230524.md","path":".claude/skills/signal-functions/references/signals/pos_bar_stop_V230524.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/pos_bar_stop_V230524.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fpos_bar_stop_V230524.md -->","isInternal":false,"tokens":305,"sizeBytes":700},{"name":"pos_fix_exit_V230624.md","path":".claude/skills/signal-functions/references/signals/pos_fix_exit_V230624.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/pos_fix_exit_V230624.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fpos_fix_exit_V230624.md -->","isInternal":false,"tokens":294,"sizeBytes":685},{"name":"pos_fx_stop_V230414.md","path":".claude/skills/signal-functions/references/signals/pos_fx_stop_V230414.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/pos_fx_stop_V230414.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fpos_fx_stop_V230414.md -->","isInternal":false,"tokens":304,"sizeBytes":729},{"name":"pos_holds_V230414.md","path":".claude/skills/signal-functions/references/signals/pos_holds_V230414.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/pos_holds_V230414.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fpos_holds_V230414.md -->","isInternal":false,"tokens":345,"sizeBytes":786},{"name":"pos_holds_V230807.md","path":".claude/skills/signal-functions/references/signals/pos_holds_V230807.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/pos_holds_V230807.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fpos_holds_V230807.md -->","isInternal":false,"tokens":357,"sizeBytes":839},{"name":"pos_holds_V240428.md","path":".claude/skills/signal-functions/references/signals/pos_holds_V240428.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/pos_holds_V240428.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fpos_holds_V240428.md -->","isInternal":false,"tokens":322,"sizeBytes":762},{"name":"pos_holds_V240608.md","path":".claude/skills/signal-functions/references/signals/pos_holds_V240608.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/pos_holds_V240608.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fpos_holds_V240608.md -->","isInternal":false,"tokens":374,"sizeBytes":863},{"name":"pos_ma_V230414.md","path":".claude/skills/signal-functions/references/signals/pos_ma_V230414.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/pos_ma_V230414.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fpos_ma_V230414.md -->","isInternal":false,"tokens":334,"sizeBytes":810},{"name":"pos_profit_loss_V230624.md","path":".claude/skills/signal-functions/references/signals/pos_profit_loss_V230624.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/pos_profit_loss_V230624.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fpos_profit_loss_V230624.md -->","isInternal":false,"tokens":352,"sizeBytes":812},{"name":"pos_status_V230808.md","path":".claude/skills/signal-functions/references/signals/pos_status_V230808.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/pos_status_V230808.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fpos_status_V230808.md -->","isInternal":false,"tokens":202,"sizeBytes":512},{"name":"pos_stop_V240331.md","path":".claude/skills/signal-functions/references/signals/pos_stop_V240331.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/pos_stop_V240331.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fpos_stop_V240331.md -->","isInternal":false,"tokens":298,"sizeBytes":678},{"name":"pos_stop_V240428.md","path":".claude/skills/signal-functions/references/signals/pos_stop_V240428.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/pos_stop_V240428.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fpos_stop_V240428.md -->","isInternal":false,"tokens":344,"sizeBytes":799},{"name":"pos_stop_V240608.md","path":".claude/skills/signal-functions/references/signals/pos_stop_V240608.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/pos_stop_V240608.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fpos_stop_V240608.md -->","isInternal":false,"tokens":337,"sizeBytes":763},{"name":"pos_stop_V240614.md","path":".claude/skills/signal-functions/references/signals/pos_stop_V240614.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/pos_stop_V240614.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fpos_stop_V240614.md -->","isInternal":false,"tokens":278,"sizeBytes":672},{"name":"pos_stop_V240717.md","path":".claude/skills/signal-functions/references/signals/pos_stop_V240717.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/pos_stop_V240717.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fpos_stop_V240717.md -->","isInternal":false,"tokens":316,"sizeBytes":746},{"name":"pos_take_V240428.md","path":".claude/skills/signal-functions/references/signals/pos_take_V240428.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/pos_take_V240428.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fpos_take_V240428.md -->","isInternal":false,"tokens":310,"sizeBytes":734},{"name":"pressure_support_V240222.md","path":".claude/skills/signal-functions/references/signals/pressure_support_V240222.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/pressure_support_V240222.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fpressure_support_V240222.md -->","isInternal":false,"tokens":388,"sizeBytes":940},{"name":"pressure_support_V240402.md","path":".claude/skills/signal-functions/references/signals/pressure_support_V240402.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/pressure_support_V240402.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fpressure_support_V240402.md -->","isInternal":false,"tokens":372,"sizeBytes":904},{"name":"pressure_support_V240406.md","path":".claude/skills/signal-functions/references/signals/pressure_support_V240406.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/pressure_support_V240406.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fpressure_support_V240406.md -->","isInternal":false,"tokens":382,"sizeBytes":914},{"name":"pressure_support_V240530.md","path":".claude/skills/signal-functions/references/signals/pressure_support_V240530.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/pressure_support_V240530.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fpressure_support_V240530.md -->","isInternal":false,"tokens":420,"sizeBytes":1002},{"name":"skdj_up_dw_line_V230611.md","path":".claude/skills/signal-functions/references/signals/skdj_up_dw_line_V230611.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/skdj_up_dw_line_V230611.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fskdj_up_dw_line_V230611.md -->","isInternal":false,"tokens":384,"sizeBytes":873},{"name":"tas_accelerate_V230531.md","path":".claude/skills/signal-functions/references/signals/tas_accelerate_V230531.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/tas_accelerate_V230531.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_accelerate_V230531.md -->","isInternal":false,"tokens":379,"sizeBytes":863},{"name":"tas_angle_V230802.md","path":".claude/skills/signal-functions/references/signals/tas_angle_V230802.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/tas_angle_V230802.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_angle_V230802.md -->","isInternal":false,"tokens":295,"sizeBytes":722},{"name":"tas_atr_break_V230424.md","path":".claude/skills/signal-functions/references/signals/tas_atr_break_V230424.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/tas_atr_break_V230424.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_atr_break_V230424.md -->","isInternal":false,"tokens":348,"sizeBytes":796},{"name":"tas_atr_V230630.md","path":".claude/skills/signal-functions/references/signals/tas_atr_V230630.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/tas_atr_V230630.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_atr_V230630.md -->","isInternal":false,"tokens":283,"sizeBytes":647},{"name":"tas_boll_bc_V221118.md","path":".claude/skills/signal-functions/references/signals/tas_boll_bc_V221118.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/tas_boll_bc_V221118.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_boll_bc_V221118.md -->","isInternal":false,"tokens":414,"sizeBytes":934},{"name":"tas_boll_cc_V230312.md","path":".claude/skills/signal-functions/references/signals/tas_boll_cc_V230312.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/tas_boll_cc_V230312.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_boll_cc_V230312.md -->","isInternal":false,"tokens":361,"sizeBytes":865},{"name":"tas_boll_power_V221112.md","path":".claude/skills/signal-functions/references/signals/tas_boll_power_V221112.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/tas_boll_power_V221112.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_boll_power_V221112.md -->","isInternal":false,"tokens":289,"sizeBytes":675},{"name":"tas_boll_vt_V230212.md","path":".claude/skills/signal-functions/references/signals/tas_boll_vt_V230212.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/tas_boll_vt_V230212.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_boll_vt_V230212.md -->","isInternal":false,"tokens":398,"sizeBytes":947},{"name":"tas_cci_base_V230402.md","path":".claude/skills/signal-functions/references/signals/tas_cci_base_V230402.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/tas_cci_base_V230402.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_cci_base_V230402.md -->","isInternal":false,"tokens":371,"sizeBytes":905},{"name":"tas_cross_status_V230619.md","path":".claude/skills/signal-functions/references/signals/tas_cross_status_V230619.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/tas_cross_status_V230619.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_cross_status_V230619.md -->","isInternal":false,"tokens":356,"sizeBytes":845},{"name":"tas_cross_status_V230624.md","path":".claude/skills/signal-functions/references/signals/tas_cross_status_V230624.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/tas_cross_status_V230624.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_cross_status_V230624.md -->","isInternal":false,"tokens":362,"sizeBytes":845},{"name":"tas_cross_status_V230625.md","path":".claude/skills/signal-functions/references/signals/tas_cross_status_V230625.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/tas_cross_status_V230625.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_cross_status_V230625.md -->","isInternal":false,"tokens":397,"sizeBytes":935},{"name":"tas_dif_layer_V241010.md","path":".claude/skills/signal-functions/references/signals/tas_dif_layer_V241010.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/tas_dif_layer_V241010.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_dif_layer_V241010.md -->","isInternal":false,"tokens":338,"sizeBytes":775},{"name":"tas_dif_zero_V240612.md","path":".claude/skills/signal-functions/references/signals/tas_dif_zero_V240612.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/tas_dif_zero_V240612.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_dif_zero_V240612.md -->","isInternal":false,"tokens":437,"sizeBytes":982},{"name":"tas_dif_zero_V240614.md","path":".claude/skills/signal-functions/references/signals/tas_dif_zero_V240614.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/tas_dif_zero_V240614.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_dif_zero_V240614.md -->","isInternal":false,"tokens":453,"sizeBytes":999},{"name":"tas_dma_bs_V240608.md","path":".claude/skills/signal-functions/references/signals/tas_dma_bs_V240608.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/tas_dma_bs_V240608.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_dma_bs_V240608.md -->","isInternal":false,"tokens":353,"sizeBytes":783},{"name":"tas_double_ma_V221203.md","path":".claude/skills/signal-functions/references/signals/tas_double_ma_V221203.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/tas_double_ma_V221203.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_double_ma_V221203.md -->","isInternal":false,"tokens":368,"sizeBytes":851},{"name":"tas_double_ma_V230511.md","path":".claude/skills/signal-functions/references/signals/tas_double_ma_V230511.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/tas_double_ma_V230511.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_double_ma_V230511.md -->","isInternal":false,"tokens":408,"sizeBytes":961},{"name":"tas_double_ma_V240208.md","path":".claude/skills/signal-functions/references/signals/tas_double_ma_V240208.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/tas_double_ma_V240208.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_double_ma_V240208.md -->","isInternal":false,"tokens":341,"sizeBytes":765},{"name":"tas_first_bs_V230217.md","path":".claude/skills/signal-functions/references/signals/tas_first_bs_V230217.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/tas_first_bs_V230217.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_first_bs_V230217.md -->","isInternal":false,"tokens":407,"sizeBytes":964},{"name":"tas_hlma_V230301.md","path":".claude/skills/signal-functions/references/signals/tas_hlma_V230301.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/tas_hlma_V230301.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_hlma_V230301.md -->","isInternal":false,"tokens":351,"sizeBytes":853},{"name":"tas_kdj_base_V221101.md","path":".claude/skills/signal-functions/references/signals/tas_kdj_base_V221101.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/tas_kdj_base_V221101.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_kdj_base_V221101.md -->","isInternal":false,"tokens":369,"sizeBytes":847},{"name":"tas_kdj_evc_V221201.md","path":".claude/skills/signal-functions/references/signals/tas_kdj_evc_V221201.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/tas_kdj_evc_V221201.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_kdj_evc_V221201.md -->","isInternal":false,"tokens":432,"sizeBytes":958},{"name":"tas_kdj_evc_V230401.md","path":".claude/skills/signal-functions/references/signals/tas_kdj_evc_V230401.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/tas_kdj_evc_V230401.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_kdj_evc_V230401.md -->","isInternal":false,"tokens":411,"sizeBytes":943},{"name":"tas_low_trend_V230627.md","path":".claude/skills/signal-functions/references/signals/tas_low_trend_V230627.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/tas_low_trend_V230627.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_low_trend_V230627.md -->","isInternal":false,"tokens":381,"sizeBytes":842},{"name":"tas_ma_base_V221101.md","path":".claude/skills/signal-functions/references/signals/tas_ma_base_V221101.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/tas_ma_base_V221101.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_ma_base_V221101.md -->","isInternal":false,"tokens":294,"sizeBytes":752},{"name":"tas_ma_base_V221203.md","path":".claude/skills/signal-functions/references/signals/tas_ma_base_V221203.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/tas_ma_base_V221203.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_ma_base_V221203.md -->","isInternal":false,"tokens":364,"sizeBytes":890},{"name":"tas_ma_base_V230313.md","path":".claude/skills/signal-functions/references/signals/tas_ma_base_V230313.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/tas_ma_base_V230313.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_ma_base_V230313.md -->","isInternal":false,"tokens":462,"sizeBytes":1128},{"name":"tas_ma_cohere_V230512.md","path":".claude/skills/signal-functions/references/signals/tas_ma_cohere_V230512.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/tas_ma_cohere_V230512.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_ma_cohere_V230512.md -->","isInternal":false,"tokens":404,"sizeBytes":904},{"name":"tas_ma_round_V221206.md","path":".claude/skills/signal-functions/references/signals/tas_ma_round_V221206.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/tas_ma_round_V221206.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_ma_round_V221206.md -->","isInternal":false,"tokens":419,"sizeBytes":1013},{"name":"tas_ma_system_V230513.md","path":".claude/skills/signal-functions/references/signals/tas_ma_system_V230513.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/tas_ma_system_V230513.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_ma_system_V230513.md -->","isInternal":false,"tokens":292,"sizeBytes":719},{"name":"tas_macd_base_V221028.md","path":".claude/skills/signal-functions/references/signals/tas_macd_base_V221028.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/tas_macd_base_V221028.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_base_V221028.md -->","isInternal":false,"tokens":362,"sizeBytes":860},{"name":"tas_macd_base_V230320.md","path":".claude/skills/signal-functions/references/signals/tas_macd_base_V230320.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/tas_macd_base_V230320.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_base_V230320.md -->","isInternal":false,"tokens":446,"sizeBytes":1071},{"name":"tas_macd_bc_ubi_V230804.md","path":".claude/skills/signal-functions/references/signals/tas_macd_bc_ubi_V230804.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/tas_macd_bc_ubi_V230804.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_bc_ubi_V230804.md -->","isInternal":false,"tokens":298,"sizeBytes":682},{"name":"tas_macd_bc_V221201.md","path":".claude/skills/signal-functions/references/signals/tas_macd_bc_V221201.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/tas_macd_bc_V221201.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_bc_V221201.md -->","isInternal":false,"tokens":448,"sizeBytes":1009},{"name":"tas_macd_bc_V230803.md","path":".claude/skills/signal-functions/references/signals/tas_macd_bc_V230803.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/tas_macd_bc_V230803.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_bc_V230803.md -->","isInternal":false,"tokens":286,"sizeBytes":684},{"name":"tas_macd_bc_V230804.md","path":".claude/skills/signal-functions/references/signals/tas_macd_bc_V230804.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/tas_macd_bc_V230804.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_bc_V230804.md -->","isInternal":false,"tokens":319,"sizeBytes":725},{"name":"tas_macd_bc_V240307.md","path":".claude/skills/signal-functions/references/signals/tas_macd_bc_V240307.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/tas_macd_bc_V240307.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_bc_V240307.md -->","isInternal":false,"tokens":356,"sizeBytes":760},{"name":"tas_macd_bs1_V230312.md","path":".claude/skills/signal-functions/references/signals/tas_macd_bs1_V230312.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/tas_macd_bs1_V230312.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_bs1_V230312.md -->","isInternal":false,"tokens":348,"sizeBytes":808},{"name":"tas_macd_bs1_V230313.md","path":".claude/skills/signal-functions/references/signals/tas_macd_bs1_V230313.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/tas_macd_bs1_V230313.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_bs1_V230313.md -->","isInternal":false,"tokens":337,"sizeBytes":781},{"name":"tas_macd_bs1_V230411.md","path":".claude/skills/signal-functions/references/signals/tas_macd_bs1_V230411.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/tas_macd_bs1_V230411.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_bs1_V230411.md -->","isInternal":false,"tokens":431,"sizeBytes":953},{"name":"tas_macd_bs1_V230412.md","path":".claude/skills/signal-functions/references/signals/tas_macd_bs1_V230412.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/tas_macd_bs1_V230412.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_bs1_V230412.md -->","isInternal":false,"tokens":386,"sizeBytes":863},{"name":"tas_macd_change_V221105.md","path":".claude/skills/signal-functions/references/signals/tas_macd_change_V221105.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/tas_macd_change_V221105.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_change_V221105.md -->","isInternal":false,"tokens":367,"sizeBytes":897},{"name":"tas_macd_direct_V221106.md","path":".claude/skills/signal-functions/references/signals/tas_macd_direct_V221106.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/tas_macd_direct_V221106.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_direct_V221106.md -->","isInternal":false,"tokens":377,"sizeBytes":880},{"name":"tas_macd_dist_V230408.md","path":".claude/skills/signal-functions/references/signals/tas_macd_dist_V230408.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/tas_macd_dist_V230408.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_dist_V230408.md -->","isInternal":false,"tokens":315,"sizeBytes":725},{"name":"tas_macd_dist_V230409.md","path":".claude/skills/signal-functions/references/signals/tas_macd_dist_V230409.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/tas_macd_dist_V230409.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_dist_V230409.md -->","isInternal":false,"tokens":386,"sizeBytes":876},{"name":"tas_macd_dist_V230410.md","path":".claude/skills/signal-functions/references/signals/tas_macd_dist_V230410.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/tas_macd_dist_V230410.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_dist_V230410.md -->","isInternal":false,"tokens":333,"sizeBytes":773},{"name":"tas_macd_first_bs_V221201.md","path":".claude/skills/signal-functions/references/signals/tas_macd_first_bs_V221201.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/tas_macd_first_bs_V221201.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_first_bs_V221201.md -->","isInternal":false,"tokens":356,"sizeBytes":848},{"name":"tas_macd_first_bs_V221216.md","path":".claude/skills/signal-functions/references/signals/tas_macd_first_bs_V221216.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/tas_macd_first_bs_V221216.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_first_bs_V221216.md -->","isInternal":false,"tokens":359,"sizeBytes":865},{"name":"tas_macd_power_V221108.md","path":".claude/skills/signal-functions/references/signals/tas_macd_power_V221108.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/tas_macd_power_V221108.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_power_V221108.md -->","isInternal":false,"tokens":371,"sizeBytes":845},{"name":"tas_macd_second_bs_V221201.md","path":".claude/skills/signal-functions/references/signals/tas_macd_second_bs_V221201.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/tas_macd_second_bs_V221201.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_second_bs_V221201.md -->","isInternal":false,"tokens":335,"sizeBytes":796},{"name":"tas_macd_xt_V221208.md","path":".claude/skills/signal-functions/references/signals/tas_macd_xt_V221208.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/tas_macd_xt_V221208.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_macd_xt_V221208.md -->","isInternal":false,"tokens":349,"sizeBytes":793},{"name":"tas_rsi_base_V230227.md","path":".claude/skills/signal-functions/references/signals/tas_rsi_base_V230227.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/tas_rsi_base_V230227.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_rsi_base_V230227.md -->","isInternal":false,"tokens":390,"sizeBytes":916},{"name":"tas_rumi_V230704.md","path":".claude/skills/signal-functions/references/signals/tas_rumi_V230704.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/tas_rumi_V230704.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_rumi_V230704.md -->","isInternal":false,"tokens":386,"sizeBytes":892},{"name":"tas_sar_base_V230425.md","path":".claude/skills/signal-functions/references/signals/tas_sar_base_V230425.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/tas_sar_base_V230425.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_sar_base_V230425.md -->","isInternal":false,"tokens":326,"sizeBytes":789},{"name":"tas_second_bs_V230228.md","path":".claude/skills/signal-functions/references/signals/tas_second_bs_V230228.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/tas_second_bs_V230228.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_second_bs_V230228.md -->","isInternal":false,"tokens":399,"sizeBytes":934},{"name":"tas_second_bs_V230303.md","path":".claude/skills/signal-functions/references/signals/tas_second_bs_V230303.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/tas_second_bs_V230303.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_second_bs_V230303.md -->","isInternal":false,"tokens":405,"sizeBytes":960},{"name":"tas_slope_V231019.md","path":".claude/skills/signal-functions/references/signals/tas_slope_V231019.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/tas_slope_V231019.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Ftas_slope_V231019.md -->","isInternal":false,"tokens":334,"sizeBytes":786},{"name":"vol_double_ma_V230214.md","path":".claude/skills/signal-functions/references/signals/vol_double_ma_V230214.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/vol_double_ma_V230214.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fvol_double_ma_V230214.md -->","isInternal":false,"tokens":355,"sizeBytes":829},{"name":"vol_gao_di_V221218.md","path":".claude/skills/signal-functions/references/signals/vol_gao_di_V221218.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/vol_gao_di_V221218.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fvol_gao_di_V221218.md -->","isInternal":false,"tokens":358,"sizeBytes":795},{"name":"vol_single_ma_V230214.md","path":".claude/skills/signal-functions/references/signals/vol_single_ma_V230214.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/vol_single_ma_V230214.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fvol_single_ma_V230214.md -->","isInternal":false,"tokens":325,"sizeBytes":823},{"name":"vol_ti_suo_V221216.md","path":".claude/skills/signal-functions/references/signals/vol_ti_suo_V221216.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/vol_ti_suo_V221216.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fvol_ti_suo_V221216.md -->","isInternal":false,"tokens":312,"sizeBytes":707},{"name":"vol_window_V230731.md","path":".claude/skills/signal-functions/references/signals/vol_window_V230731.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/vol_window_V230731.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fvol_window_V230731.md -->","isInternal":false,"tokens":363,"sizeBytes":841},{"name":"vol_window_V230801.md","path":".claude/skills/signal-functions/references/signals/vol_window_V230801.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/vol_window_V230801.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fvol_window_V230801.md -->","isInternal":false,"tokens":299,"sizeBytes":721},{"name":"xl_bar_basis_V240411.md","path":".claude/skills/signal-functions/references/signals/xl_bar_basis_V240411.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/xl_bar_basis_V240411.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fxl_bar_basis_V240411.md -->","isInternal":false,"tokens":236,"sizeBytes":588},{"name":"xl_bar_basis_V240412.md","path":".claude/skills/signal-functions/references/signals/xl_bar_basis_V240412.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/xl_bar_basis_V240412.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fxl_bar_basis_V240412.md -->","isInternal":false,"tokens":302,"sizeBytes":684},{"name":"xl_bar_position_V240328.md","path":".claude/skills/signal-functions/references/signals/xl_bar_position_V240328.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/xl_bar_position_V240328.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fxl_bar_position_V240328.md -->","isInternal":false,"tokens":264,"sizeBytes":655},{"name":"xl_bar_trend_V240329.md","path":".claude/skills/signal-functions/references/signals/xl_bar_trend_V240329.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/xl_bar_trend_V240329.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fxl_bar_trend_V240329.md -->","isInternal":false,"tokens":310,"sizeBytes":744},{"name":"xl_bar_trend_V240330.md","path":".claude/skills/signal-functions/references/signals/xl_bar_trend_V240330.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/xl_bar_trend_V240330.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fxl_bar_trend_V240330.md -->","isInternal":false,"tokens":295,"sizeBytes":704},{"name":"xl_bar_trend_V240331.md","path":".claude/skills/signal-functions/references/signals/xl_bar_trend_V240331.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/xl_bar_trend_V240331.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fxl_bar_trend_V240331.md -->","isInternal":false,"tokens":254,"sizeBytes":575},{"name":"xl_bar_trend_V240623.md","path":".claude/skills/signal-functions/references/signals/xl_bar_trend_V240623.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/xl_bar_trend_V240623.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fxl_bar_trend_V240623.md -->","isInternal":false,"tokens":329,"sizeBytes":738},{"name":"zdy_stop_loss_V230406.md","path":".claude/skills/signal-functions/references/signals/zdy_stop_loss_V230406.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/zdy_stop_loss_V230406.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fzdy_stop_loss_V230406.md -->","isInternal":false,"tokens":40,"sizeBytes":94},{"name":"zdy_take_profit_V230406.md","path":".claude/skills/signal-functions/references/signals/zdy_take_profit_V230406.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/zdy_take_profit_V230406.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fzdy_take_profit_V230406.md -->","isInternal":false,"tokens":40,"sizeBytes":96},{"name":"zdy_take_profit_V230407.md","path":".claude/skills/signal-functions/references/signals/zdy_take_profit_V230407.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/zdy_take_profit_V230407.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fzdy_take_profit_V230407.md -->","isInternal":false,"tokens":39,"sizeBytes":96},{"name":"zdy_vibrate_V230406.md","path":".claude/skills/signal-functions/references/signals/zdy_vibrate_V230406.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/references/signals/zdy_vibrate_V230406.md","title":"Signals Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2Freferences%2Fsignals%2Fzdy_vibrate_V230406.md -->","isInternal":false,"tokens":47,"sizeBytes":95},{"name":"SKILL.md","path":".claude/skills/signal-functions/SKILL.md","rawUrl":"https://raw.githubusercontent.com/waditu/czsc/HEAD/.claude/skills/signal-functions/SKILL.md","title":"signal-functions","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/waditu/czsc?path=.claude%2Fskills%2Fsignal-functions%2FSKILL.md -->","frontmatter":{"name":"signal-functions","description":"rs_czsc 信号函数完整参考手册。查询信号函数用法、参数模板、模块分类时使用。触发场景：（1）查找某个信号函数的参数模板或含义（2）按模块浏览所有可用信号（3）编写 signals_config 时需要知道信号名称和参数（4）理解信号字符串格式（5）配置 CzscTrader/CzscSignals 的信号列表。不触发：编写新信号函数的 Rust 实现代码。"},"isInternal":false,"tokens":2021,"sizeBytes":5534}],"systemPromptSnippet":"<yakaai_skills repo=\"waditu/czsc\">\n<!-- File: CLAUDE.md (Tokens: ~6660 | Category: claude-rule) -->\n# CLAUDE.md\n\nThis file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.\n\n## 项目概述\n\nCZSC（缠中说禅技术分析工具）是基于缠中说禅理论的综合性量化交易Python库，提供技术分析、信号生成、回测和市场分析等功能。本项目专注于实现缠论的分型、笔、线段等核心概念的自动识别，以及基于此的多级别量化交易策略。\n\n## 🏛️ 开发宪法（Constitution）\n\n以下规则是本项目长期演进的**硬约束**，任何 PR、任何重构、任何\"为了赶进度的临时变通\"都不得违反。与此冲突的代码审查意见、个人偏好、历史代码一律以本节为准；违反本节的代码即便已合入，也按 bug 处理、必须回滚或修复。\n\n### 第一条 · Rust ↔ Python 行为一致\n\n**需要 Rust 实现的部分必须同时满足 Rust crate 与 Python wheel 行为一致（Python 端纯透传，禁止再写适配层）。**\n\n> 落地参考（2026-05-17）：策略门面 `CzscStrategyBase` 的 `unique_signals` / `save_positions` / `load_positions` 已全部下沉到 `crates/czsc-trader/src/strategy.rs`，Python 端只剩 1 行 `_native.*` 透传；新增的文件完整性校验改用 `sha256(canonical JSON)`，可在 Rust / Python 端 byte-for-byte 一致复现。任何违反本条的新 PR 都会被 `tests/unit/test_strategy_save_load_parity.py::test_strategies_module_no_longer_uses_hashlib_or_json` 等源码级 ratchet 拦下。\n\n具体含义：\n\n- 同一个名字（如 `monotonicity` / `CzscStrategyBase` / `generate_czsc_signals` / `CZSC`），`cargo add czsc` 的 Rust 用户与 `pip install czsc` 的 Python 用户调用后**行为必须一致**——同样的输入产生同样的输出，默认参数、错误处理、边界条件、字段命名都一致。\n- Python 侧**只允许**做下面两类工作：\n  1. **纯透传**：`from czsc._native import xxx` 后直接 re-export，不做任何包装；\n  2. **不可避免的 PyO3 边界胶水**：DataFrame ↔ Arrow IPC 序列化、`pathlib.Path` ↔ `String` 转换等，PyO3 类型系统无法跨越的边界处理。\n- **禁止**在 Python 侧做参数归一化、默认值补齐、返回值字段重命名、错误码翻译、`isinstance` 多态分支等\"适配层\"工作——这类逻辑必须下沉到 Rust 端实现（修改现有 API 或新增 API）。\n- 新增 Python wrapper 之前，PR 描述里必须先回答\"为什么不能改成 Rust 实现\"，并经过 reviewer 显式批准。\n\n**违反本条的常见信号（在 review 中视为红线）**：\n\n- Python 函数体内出现 `if isinstance(bars, pd.DataFrame): ... elif isinstance(bars, list): ...` 等多态分支；\n- Python 函数返回的 dict 字段顺序 / 命名与 Rust 端 `serde` 输出不一致；\n- 同一份功能在 Python 测试覆盖完整，但 `cargo test` 没有等价用例；\n- CHANGELOG 写 \"Python 端默认参数从 X 改为 Y\"，但 Rust 端无对应改动；\n- `czsc/_runtime_adapters.py` 等\"适配层\"文件持续膨胀，而不是被逐步搬空到 Rust。\n\n## 常用开发命令\n\n### UV 包管理 (项目使用UV管理依赖)\n```bash\n# 同步依赖并安装开发工具（仅在 pyproject.toml / uv.lock 变更时跑）\nuv sync --extra dev\n\n# 安装所有依赖组合\nuv sync --extra all\n\n# 运行测试（日常默认 --no-sync，省去每次 4-5s 的 lockfile/venv 一致性检查）\nuv run --no-sync pytest\n\n# 运行指定测试文件\nuv run --no-sync pytest tests/test_analyze.py -v\n\n# 运行单个测试函数\nuv run --no-sync pytest tests/test_analyze.py::test_czsc_basic -v\n\n# 带覆盖率的测试\nuv run --no-sync pytest --cov=czsc\n\n# 跑全套（含 @pytest.mark.slow 标记的耗时测试，CI / 发布前用）\nuv run --no-sync pytest --run-slow\n\n# 代码格式化和检查（项目使用 ruff，不使用 black/isort/flake8）\nuv run --no-sync ruff format czsc/ tests/\nuv run --no-sync ruff check czsc/ tests/\n```\n\n> **`--no-sync` 约定**：`uv run` 默认会做 lockfile 解析 + venv 一致性检查（本地稳定 4-5s 固定开销）。日常开发循环里依赖很少变，统一用 `--no-sync` 跳过；仅在 `pyproject.toml` / `uv.lock` 改动后显式跑一次 `uv sync` 即可。\n\n### 测试规范\n- 所有测试文件位于 `tests/` 目录，使用 pytest 格式\n- **关键原则**：测试数据统一通过 `czsc.mock` 模块获取，不要在测试中硬编码模拟数据\n- 测试文件命名模式：`test_*.py`\n- 模拟数据使用 `generate_symbol_kines` 函数生成，支持多品种、多频率、可重现的随机数据\n- **慢测试约定**：依赖 `time.sleep` 或子进程冷启动的测试加 `@pytest.mark.slow`，默认跳过；CI / 发布前用 `pytest --run-slow` 跑全套。注册逻辑见 `tests/conftest.py`。\n\n\n## 代码架构\n\n### 核心组件\n\n1. **`czsc._native`** - PyO3 编译产生的 Rust 扩展模块（缠论核心）：\n   - 由 `crates/czsc-python` 通过 `maturin` 打包，扩展模块名 `czsc._native`\n   - 暴露 `CZSC / FX / BI / ZS / RawBar / NewBar / Freq / Mark / Direction / Operate / Signal / Event / Position / BarGenerator` 等核心类型\n   - 暴露 `check_bi / check_fx / check_fxs / remove_include / freq_end_time / is_trading_time` 等工具函数\n   - 暴露 220+ 信号函数（Python 端 7 个子模块：bar/cvolp/cxt/obv/pressure/tas/vol；底层 `crates/czsc-signals/src/` 有 22 个 .rs 源文件，可用 `ls crates/czsc-signals/src/` 自查最新清单）\n   - 暴露 `czsc._native.ta.*`（Rust TA 算子，供信号函数内部使用；本次清理 起 Python 端不再暴露 `czsc.ta` 顶层 alias）\n   - **不存在 Python 回退**：核心分析统一由 Rust 实现。\n\n2. **`crates/`** - Rust workspace（9 个 crate）：\n   - `czsc` / `czsc-core` / `czsc-derive` / `czsc-signals` / `czsc-trader` / `czsc-utils` / `czsc-ta`\n   - `czsc-signal-macros`（proc-macro，`#[signal]` 注册宏）\n   - `czsc-python`（PyO3 binding 总入口，唯一启用 `pyo3/extension-module` 的 crate）\n\n3. **`czsc/traders/`** - 交易执行框架：\n   - `__init__.py`：facade，统一 re-export `CzscSignals / CzscTrader / generate_czsc_signals / get_signals_config / get_signals_freqs / derive_signals_config / derive_signals_freqs / get_unique_signals / WeightBacktest`，全部来自 `czsc._native` 或 `wbt`\n   - `base.py` / `sig_parse.py` 纯透传文件已于 2026-05-17 PR-C 整文件 git rm，新代码请直接走 `czsc.traders` 或 `czsc._native`\n   - `optimize.py` 已于 2026-05-17 PR-C `git mv` 到 `czsc/utils/optimize.py`（职责更贴近 utils）；调用方请用 `from czsc.utils.optimize import OpensOptimize, ExitsOptimize, CzscOpenOptimStrategy, CzscExitOptimStrategy`\n\n4. **`czsc/_native.signals`** - 信号函数（Rust 实现，通过 PyO3 暴露）：\n   - Python 端暴露 7 个子模块（bar/cvolp/cxt/obv/pressure/tas/vol）；底层 `crates/czsc-signals/src/` 有 22 个 .rs 源文件，自查命令：`ls crates/czsc-signals/src/`\n   - 原 `czsc/signals/` Python 命名空间层已在 Phase J **彻底删除**\n   - 通过 `czsc.traders.generate_czsc_signals` 等接口调用信号\n   - 信号解析 API：`get_signals_config` / `get_signals_freqs`（`czsc.traders`）\n\n5. **`czsc/utils/`** - 工具模块（Phase J 精简后）：\n   - `data/cache.py` / `io.py` / `log.py` / `kline_quality.py`：缓存、IO、日志、K 线质量校验\n   - `analysis/corr.py`（仅剩 `cross_sectional_ic`；`stats.py` 与 `nmi_matrix` / `single_linear` 已于 2026-05-17 PR-A 删除，`daily_performance` / `top_drawdowns` 改由顶层 `czsc.*` 透传 wbt）\n   - `data/client.py`：统一数据客户端接口\n   - TA 算子由 Rust `czsc._native.ta` 提供（信号内部依赖），顶层别名 `czsc.{ema,sma,rolling_rank,boll_positions,ultimate_smoother}` 保留；仪表盘场景的 MACD（×2 约定）已下沉为 `czsc/utils/plotting/_macd.py` 私有辅助\n   - `trade.py`：交易工具\n   - `plotting/{kline,weight}.py` + `plotting/lightweight/`：plotly 单周期 K 线 + 权重时序图 / lightweight-charts 自包含 HTML\n   - 已删除：`bar_generator.py` / `bi_info.py`（Rust 已实现）、`st_components.py` / `echarts_*` / `pdf_report` / `html_report_builder` / `word_writer` / `signal_analyzer` / `crypto/` / `czsc/svc/` / `plotting/backtest.py` / `plotting/common.py`（本次清理 删除 Streamlit 组件库与回测可视化函数；迁移详见 `docs/migration/cleanup-non-czsc-core.md`）\n\n7. **`czsc/connectors/`** - 数据源连接器：\n   - 支持天勤、Tushare、CCXT 等多个数据源\n   - 统一的数据接口封装；`local_data.py`（原 `research.py`）提供 CZSC 投研共享数据的本地缓存读取入口\n\n### 信号-事件-交易体系\n\n项目实现了系统化的量化交易方法：\n- **信号（Signals）**: 基础技术指标和市场状态\n- **事件（Events）**: 信号的逻辑组合，通过 signals_all/signals_any/signals_not 实现 AND/OR/NOT 逻辑\n- **交易（Trading）**: 基于事件和风险管理的执行\n\n### 多级别联立分析\n\nCZSC 支持使用 `CzscTrader` 类进行多级别联立分析，可同时分析不同时间周期（如1分钟、5分钟、30分钟、日线）进行全面的市场决策。\n\n## 开发指南\n\n### 代码规范\n- 行长度：120字符（在 pyproject.toml 中配置）\n- 适当使用类型提示\n- 遵循代码库中现有的命名约定\n- 信号函数通过 `#[signal]` 宏在 Rust 端自动注册到 `SIGNAL_REGISTRY`，命名遵循 Rust 模块约定，不再使用历史上的 `V<yyMMdd>` 版本后缀\n- **代码质量原则**：\n  - **DRY（Don't Repeat Yourself）**: 提取重复代码为辅助函数\n  - **KISS（Keep It Simple）**: 保持函数简洁，职责单一\n  - **使用模块级常量**: 避免魔法值，集中管理配置\n  - **类型提示优先**: 使用 `Literal`、`Optional` 等提升代码可读性\n  - **向后兼容性**: 公共 API 修改需谨慎，避免破坏现有代码\n  - **文档完整**: 所有公共函数必须有完整的 docstring\n\n### 信号函数开发\n- 信号函数应遵循飞书文档中的规范说明\n- 信号函数由 Rust 实现，位于 `crates/czsc-signals/` 中\n- 原 Python 版 `czsc/signals/` 已彻底删除（Phase J）；新增信号需在 Rust 侧开发\n- 信号解析公共 API：`get_signals_config(signals_seq)` / `get_signals_freqs(signals_seq)`（来自 `czsc.traders`）\n- 直接使用上述两个函数解析信号配置。\n\n### 数据处理最佳实践\n- 测试数据统一通过 `czsc.mock.generate_symbol_kines` 生成\n- 使用 `format_standard_kline` 将DataFrame转换为RawBar对象列表\n- 使用 `BarGenerator` 进行K线合成和多级别分析\n- 通过 `DataClient` 统一访问不同数据源\n- 注意使用磁盘缓存提高重复计算效率\n\n### 数据格式转换\n```python\n# 从 mock 数据生成 CZSC 对象（全部走顶层 czsc 命名空间）\nfrom czsc import CZSC, Freq, format_standard_kline\nfrom czsc.mock import generate_symbol_kines\n\n# 生成K线数据\ndf = generate_symbol_kines('000001', '30分钟', '20240101', '20240105')\n\n# 转换为RawBar对象列表\nbars = format_standard_kline(df, freq=Freq.F30)\n\n# 创建CZSC分析对象\nczsc_obj = CZSC(bars)\n```\n\n### 回测可视化\n\n`czsc.utils.plotting.backtest` 模块已在二阶段清理 PR-C 删除。推荐做法：\n\n- **权重回测报告**：`wbt.generate_backtest_report(dfw, ...)` 生成自包含 HTML（参见 `docs/examples/13_event_weight_backtest.py`）\n- **缠论 + 多周期联立**：`czsc.utils.plotting.lightweight.plot_czsc{,_trader,_signals}` 输出 lightweight-charts HTML\n- **单周期 K 线 + 缠论结构**：`czsc.utils.plotting.kline.KlineChart` / `plot_czsc_chart`\n- **自定义统计图**：直接用 `plotly.express` / `plotly.graph_objects`，迁移示例见 `docs/migration/cleanup-non-czsc-core.md`\n\n### 依赖管理（UV配置）\n- 核心运行时依赖定义在 `pyproject.toml` 的 `[project.dependencies]` 中\n- 开发依赖在 `[project.optional-dependencies.dev]` 中\n- 测试依赖在 `[project.optional-dependencies.test]` 中\n- 使用 UV 进行依赖管理和虚拟环境控制\n- 项目使用 UV 管理 Python 依赖与虚拟环境（详见根目录 README \"开发环境\" 章节）\n\n## 关键环境变量和设置\n\n- `CZSC_VERBOSE` / `czsc_verbose`：是否打印详细日志（来自 `czsc.envs`）\n- `CZSC_MIN_BI_LEN` / `czsc_min_bi_len`：最小笔长度，默认 6（来自 `czsc.envs`）\n- `CZSC_MAX_BI_NUM` / `czsc_max_bi_num`：最大笔数量，默认 50（来自 `czsc.envs`）\n- 大小写两种写法都接受，大写优先；构造器显式参数优先级最高\n- 缓存目录自动管理，具备大小监控功能\n\n## 缓存管理\n\n项目大量使用磁盘缓存：\n- 缓存位置：`czsc.home_path`（顶层）或 `czsc.utils.data.cache.home_path`（实际定义处）\n- 清除缓存：`czsc.empty_cache_path()`\n- 监控大小：`czsc.get_dir_size(czsc.home_path)`\n- 当缓存超过1GB时 `czsc.welcome()` 会显示清理提示\n\n## 可视化（Plotly + HTML）\n\n所有可视化统一由 plotly 实现，输出方式：\n\n- `czsc.utils.plotting.kline.KlineChart` / `plot_czsc_chart`：单周期 K 线 + 缠论结构（plotly Figure，可 `fig.show()` 或写 HTML）\n- `czsc.utils.plotting.weight.*`：权重时序图（plotly）\n- `czsc.utils.plotting.lightweight.plot_czsc{,_trader,_signals}`：lightweight-charts 自包含 HTML，多周期联立 + 信号叠加\n\n使用 `plot_czsc`、`plot_czsc_trader` 或 `plot_czsc_signals` 生成自包含 HTML 后，可直接在浏览器中打开。\n\n## Rust/Python 混合架构\n\n项目核心算法用 Rust 实现，通过 PyO3 暴露给 Python：\n- **构建方式**：`maturin + Rust workspace`，扩展模块名 `czsc._native`\n- **唯一架构**：Rust 是缠论核心算法的唯一实现；Python 端不再保留任何回退（spec §3.1 / §3.4）\n- **API 暴露**：所有面向用户的 API 都通过 `czsc.xxx` 顶层命名空间暴露，禁止用户感知 `czsc._native`\n- **Python/Rust 分工**：见本文件顶部「🏛️ 开发宪法 · 第一条」。该条款是硬约束，与此冲突的任何\"局部例外\"都不成立。\n- **类型 stub**：`czsc/py.typed` 启用 inline 类型注解；扩展模块 stub 已生成于 `czsc/_native/__init__.pyi`，由 `pyo3-stub-gen` 自动维护\n- **构建环境约束**：使用 `pyo3-stub-gen` 0.23 与 `pyo3` 0.29；项目要求 Python ≥ 3.10，通过 `crates/czsc-python/build.rs` 在编译期校验 `PYO3_PYTHON`，低于 3.10 时直接报错\n- **版本号锁死**（PR-5）：crates.io 与 PyPI 必须使用同一版本号。**唯一版本源**是 `Cargo.toml [workspace.package].version`；`pyproject.toml` 用 `dynamic = [\"version\"]`，由 maturin 在打 wheel 时从 Cargo workspace 注入。`crates/czsc-python/build.rs` 会在编译期校验 pyproject.toml 仍然走 dynamic 路径，禁止硬编码 `version = \"...\"`\n- **发版流程**：bump `Cargo.toml [workspace.package].version` 后，同步 publish 到 crates.io（`cargo publish`）与 PyPI（`maturin publish`）；CHANGELOG 必须列出本次 release 的 breaking changes\n- **rs-czsc 关系**：czsc 一次性 fork rs-czsc 的 Rust 实现进本仓库，**不再做季度同步**；`tests/parity/` 目录已删除，不再保留 rs-czsc parity 比对测试\n\n## 数据连接器支持\n\n项目集成多个数据源连接器（见 `czsc/connectors/`）：\n- `tq_connector.py`: 天勤数据源\n- `ts_connector.py`: Tushare 数据源\n- `ccxt_connector.py`: 数字货币数据源\n- `local_data.py`: 投研数据本地缓存接口（原 `research.py`，已于评审决议中改名）\n\n## 回测和策略研究框架\n\n### 策略开发基础（`czsc/strategies.py`）\n- `CzscStrategyBase`: 策略开发的抽象基类\n- `CzscJsonStrategy`: JSON 配置化的策略实现\n- 策略要素：品种参数、K线周期、信号配置、持仓策略\n- 支持策略序列化和反序列化\n- 研究入口统一指向 `czsc.research.run_research / run_replay / run_optimize_batch`（Rust 后端）\n\n### 信号函数体系（`czsc._native.signals`）\n- 信号函数由 Rust 实现，通过 PyO3 暴露为 `czsc._native.signals.*`\n- Python 端暴露 7 个子模块（bar/cvolp/cxt/obv/pressure/tas/vol）；底层 `crates/czsc-signals/src/` 有 22 个 .rs 源文件，自查命令：`ls crates/czsc-signals/src/`\n- 注册机制：`#[signal]` 宏自动注册到 `SIGNAL_REGISTRY`，不再使用 `V<yyMMdd>` 版本后缀\n- 原 Python `czsc/signals/` 目录已彻底删除（Phase J）\n- 信号配置解析：`get_signals_config` / `get_signals_freqs`（`czsc.traders`），底层调用 Rust 端 `derive_signals_config` / `derive_signals_freqs`\n\n### 探索性数据分析（顶层 `czsc.*`，原 `czsc/eda.py` 已下线）\n- `monotonicity`: 单调性分析（PR-D 已下沉 Rust 实现）\n- `mark_cta_periods`: 标记 CTA 最易/最难赚钱时间段（PR-B 拆到 `czsc/utils/`）\n- `mark_volatility`: 标记高/低波动率时间段（PR-B 拆到 `czsc/utils/`）\n\n> 其余历史函数 `weights_simple_ensemble` / `cal_trade_price` / `cal_yearly_days` / `turnover_rate` 已于 PR-A 二阶段清理中删除；迁移说明见 [`docs/migration/cleanup-non-czsc-core.md`](docs/migration/cleanup-non-czsc-core.md)。\n\n## 重要文档和资源\n\n- [项目文档](https://s0cqcxuy3p.feishu.cn/wiki/wikcn3gB1MKl3ClpLnboHM1QgKf)\n- [信号函数编写规范](https://s0cqcxuy3p.feishu.cn/wiki/wikcnCFLLTNGbr2THqo7KtWfBkd)\n- [API文档](https://czsc.readthedocs.io/en/latest/modules.html)\n- [B站视频教程](https://space.bilibili.com/243682308/channel/series)\n\n## 示例代码和用例\n\n项目维护的示例代码集中在 `docs/examples/` 下（如 `08_weight_backtest.py`、`13_lightweight_charts_html.py`、`15_lightweight_signals_html.py` 等）；HTML 路径示例（13/15）完整保留。\n\n## 项目特色和最佳实践\n\n1. **混合架构设计**: Rust性能优化 + Python灵活性\n2. **多级别联立分析**: 支持多时间周期综合决策\n3. **系统化信号体系**: 信号→事件→交易的完整流程\n4. **丰富的数据源**: 支持A股、期货、数字货币等多市场\n5. **完善的测试框架**: 统一的模拟数据生成和测试规范\n6. **可视化工具**: Plotly + lightweight-charts HTML 输出\n7. **策略研究工具**: CTA框架、参数优化、回测分析一体化\n8. **代码质量优化**: 遵循 DRY、KISS、SOLID 原则\n   - 使用模块级常量消除魔法值\n   - 提取辅助函数减少代码重复\n   - 完善的类型提示（Type Hints）\n   - 清晰的函数职责分离\n   - 保持向后兼容性的 API 设计\n\n<!-- File: .claude/skills/czsc-release/references/release_checklist.md (Tokens: ~897 | Category: anthropic-skill) -->\n# Release Checklist —— 权威版本指针\n\n> ⚠️ **不要在此处复制 checklist 内容** —— 会与项目根的权威版本漂移。\n>\n> 完整清单（9 节、214 行）保存在仓库根目录：\n>\n> 👉 **[`docs/release_checklist.md`](../../../../docs/release_checklist.md)**\n>\n> 维护者修改清单时**只改 `docs/release_checklist.md` 这一份**，本指针文件不需要同步更新。\n\n## 为什么本目录不放副本\n\n- **单源不漂移**：复制一份到 references/ 后，每次更新都得改两处；漂移后 LLM 不知道该信哪份。\n- **不用 symlink**：跨 OS（Windows）+ 某些 git 配置下软链接行为不一致；skill 可能被复制/分发到其他工作目录，断链后 silent 失败。\n- **保留 references/ 目录结构**：符合 Anthropic skill convention（references/ 承载参考材料），让 SKILL.md 的引用路径稳定。\n\n## SKILL.md 是怎么用这份清单的\n\n`../SKILL.md` 在 **Phase 0** 和 **Phase 2** 把这份清单作为 **ratchet** 强制引入：\n\n- **Phase 0**：用 `Read` 工具读 `docs/release_checklist.md` 全文（一次性，加载到上下文）。\n- **Phase 2 预检**：把 docs §3 / §4 / §5 / §9 的命令逐条跑完；任何一条 fail → 停。\n- **不许跳**：哪怕\"只是 docs 改动\"也要按 §1 跑代码/文档一致性检查（`czsc.xxx` 引用是否还存在、已退役关键字是否还有残留、文件路径是否还在）—— 历史教训里大量发版事故来自\"docs 改了但忘了 push、或 docs 引用了已删 API 让下游 demo 炸\"。\n\n## 9 节速览（详情看 docs）\n\n1. **代码冻结前**：所有 PR 已合 / CHANGELOG 已更 / 迁移说明已写；**代码 ↔ Markdown 文档一致性硬性检查**（含 3 段命令找漂移）\n2. **版本号**：SemVer 决策树、单一版本源、prerelease 规则\n3. **本地 Rust 验证**：cargo fmt / clippy / test / stub_gen + git diff 校验\n4. **本地 Python 验证**：`pytest --run-slow`、ruff、冒烟 import 链\n5. **本地 Wheel 验证**：含 Linux aarch64 / musllinux 的 docker 验证（CI 不覆盖）\n6. **发布动作**：TestPyPI 演练 → tag push 触发 PyPI 真发 → 手动 dispatch crates.io 真发\n7. **发布后验证**：PyPI / crates.io 页面、GitHub Release、干净环境冒烟\n8. **隐藏缺陷雷达**：按历史踩坑频度排序的 10 项风险表\n9. **一键自检脚本**：把 §3+§4+§5 串成可跑的 bash 一脚本\n\n<!-- File: .claude/skills/czsc-release/SKILL.md (Tokens: ~6794 | Category: anthropic-skill) -->\n---\nname: czsc-release\ndescription: 规范 czsc 库（混合 Rust + Python，PyO3 + maturin）的版本发布流程。当用户说\"发版/发布/release/publish czsc\"、\"bump 版本\"、\"出 rc.N+1\"、\"准备 1.0.0 stable\"、要把 Rust crate 推 crates.io 或 wheel 推 PyPI 时使用。本 skill 半自动执行预检 / bump / CHANGELOG / commit，遇 push tag / push master / 真 publish 等不可逆动作时停下来要授权。\n---\n\n# CZSC Release Workflow\n\n## 📋 Mandatory References（必读，且必须逐项核完才能进 Phase 3）\n\n| 文件 | 角色 | 何时读 |\n|---|---|---|\n| **`docs/release_checklist.md`**（项目根目录，权威 214 行清单） | 9 节硬性检查清单 —— 含代码/文档一致性、SemVer 决策、本地 Rust/Python/Wheel 三层验证、发布动作顺序、发布后验证、隐藏缺陷雷达、一键自检脚本 | **Phase 0 一次性 Read 全文**；Phase 2 按 §3/§4/§5/§9 跑命令 |\n| `references/release_checklist.md`（本目录） | 上述文件的 pointer（不存内容，避免漂移） | 仅供路径定位 |\n\n**ratchet 规则**：本 skill 的 Phase 2 预检是 `docs/release_checklist.md` 的最小子集。完整清单**必须全部 ✅ 通过**才能进 Phase 3 bump 版本。任何一项 fail / 跳过 → 停下问用户，不要自己决定\"这条不重要\"。\n\n## Overview\n\nczsc 是 **Rust + Python 混合包**：\n\n- crates.io 上发 6 个业务 crate（`czsc-derive`/`czsc-signal-macros` → `czsc-core` → `czsc-ta`/`czsc-utils` → `czsc-signals` → `czsc-trader` → `czsc` facade）\n- PyPI 上发 1 个 wheel（`czsc`，扩展模块 `czsc._native` 由 `crates/czsc-python` 通过 maturin 编译）\n\n两边**版本号必须严格一致**（宪法第一条 + PR-5）。**唯一版本源是 `Cargo.toml [workspace.package].version`**，pyproject.toml 用 `dynamic = [\"version\"]` 由 maturin 注入，`crates/czsc-python/build.rs` 在编译期 ratchet 禁止 pyproject.toml 硬编码 version。\n\n发版**完全靠 GitHub Actions 自动化**：\n\n| 触发 | Workflow | 行为 |\n|---|---|---|\n| `git push origin vX.Y.Z` | `.github/workflows/python-publish.yml` | 自动 build wheels + smoke + 推 PyPI（OIDC Trusted Publishing） |\n| `git push origin vX.Y.Z` | `.github/workflows/rust-publish.yml` | 默认 **dry-run**；真 publish 需 workflow_dispatch + `do_publish=true` |\n\n本 skill 的责任是**人手动做才不会错**的部分：版本决策、CHANGELOG 落档、预检、tag/push 时机、CI 监控、出错重发。\n\n## What this skill does / doesn't do\n\n| ✅ skill 替你做 | ❌ skill 不做 |\n|---|---|\n| 跑全套预检（fmt / clippy / pytest / maturin / stub） | 真按 PyPI 上传按钮（CI 干） |\n| 推下一版本号（基于 CHANGELOG 推 SemVer） | 真按 crates.io publish（CI workflow_dispatch 干） |\n| Bump `Cargo.toml` workspace version | 给 OIDC trusted publishing / CRATES_IO_TOKEN 配凭证（一次性人工事） |\n| 把 CHANGELOG `[Unreleased]` 落档成 `[X.Y.Z] — YYYY-MM-DD` | `git push origin master`、`git tag`、`git push --tags`——这些都要**先停下来明确征求授权**，不可逆 |\n| 提 `chore(release): bump X.Y.Z` commit | 跨语言 reviewer 工作（PR 评审走 requesting-code-review skill） |\n| 监控 publish workflow 跑完，失败时进入重发剧本 | |\n\n## Decision Tree\n\n```\n1. 当前在 master 上？working tree 干净？\n   └─ 否：先 commit 完手头改动，merge 进 master 再 release。\n        发版必须在 master 头部，避免分支漂移。\n\n2. 现在该发什么版本号？\n   ├─ 当前 rc 阶段（X.Y.Z-rc.N）\n   │   ├─ 上轮 RC 已经 publish 到 PyPI/crates.io？\n   │   │   ├─ 是：bump rc.N+1（哪怕只改了 docs，PyPI 版本号已占名不能复用）\n   │   │   └─ 否（rc.N wheel 未上传 / crate 未发）：可以在 rc.N 上修问题、复用 rc.N\n   │   └─ rc 期间累积满意，准备出第一个 stable：bump 到 X.Y.Z（去掉 -rc.N）\n   ├─ stable 阶段（X.Y.Z）\n   │   ├─ [Unreleased] 含 Breaking changes → bump X+1.0.0\n   │   ├─ 仅 Added/Changed（无 breaking） → bump X.Y+1.0\n   │   └─ 仅 Fixed/docs/internal     → bump X.Y.Z+1\n   └─ 不确定 → 让 skill 推荐并问用户确认（永远先问，别猜）\n\n3. 这次只发 Python 还是 Python + Rust 都发？\n   ├─ 改了 Rust crate 公共 API → 两边都发\n   ├─ 只改了 Python 端 facade / docs → 两边都发（版本号必须同步，不能 PyPI 走 1.0.1 而 crates.io 停 1.0.0）\n   └─ 默认：两边都发（除非用户明确说 \"skip rust\" / \"skip python\"）\n```\n\n## Workflow\n\n### Phase 0 — 准备（必做）\n\n**0.0 强制读 release checklist 全文**：\n\n```\nRead /Users/lifanngzhou/git-repo/czsc/docs/release_checklist.md\n```\n\n读完后**列出 9 节标题**给用户看，明确告知\"以下每一节都必须 ✅ 通过才能发版；本 skill 的 Phase 2 是 §3+§4+§5+§9 的最小子集，§1（代码/文档一致性）、§5（Linux aarch64/musllinux wheel 验证）、§7（发布后验证）等节本 skill 不能替代，你需要手动核完并告诉我结果\"。\n\n```bash\n# 0.1 切到 master + pull 最新\ngit checkout master\ngit pull --ff-only origin master\n\n# 0.2 working tree 干净\ngit status   # 必须 nothing to commit\n\n# 0.3 距上一个 tag 至少有 1 个 commit（否则没东西可发）\ngit describe --tags --abbrev=0\ngit log $(git describe --tags --abbrev=0)..HEAD --oneline | wc -l   # > 0\n\n# 0.4 CHANGELOG.md 的 [Unreleased] 非空\ngrep -A50 '^## \\[Unreleased\\]' CHANGELOG.md\n\n# 0.5 release_checklist.md §1 代码/文档一致性（含 3 段 rg 命令）\n#     —— 这一节本 skill 没复述，必须按 docs/release_checklist.md 跑\n```\n\n如果 [Unreleased] 是空的 → **停**，告诉用户：\"上一个 release 后没人写 CHANGELOG，发版前先补\"，让用户决定补还是放弃。\n\n如果 §1 的 `rg czsc.svc|czsc.signals.|streamlit|CZSC_USE_PYTHON|SignalsParser` 命中（说明 markdown 引用了已删除的 API）→ **停**，让用户先清理文档。\n\n### Phase 1 — 推荐下一版本号\n\n读 `Cargo.toml [workspace.package].version` 拿当前版本，读 CHANGELOG.md 的 `[Unreleased]` 块。\n\n按 [Decision Tree](#decision-tree) 第 2 步推荐下一个版本号，并**用 AskUserQuestion 让用户确认**，给出推荐理由：\n\n> 当前版本 1.0.0-rc.7。CHANGELOG [Unreleased] 含 Breaking changes（X 项）+ Added（Y 项）+ Fixed（Z 项）。\n> 推荐 bump 到 **1.0.0-rc.8**（仍在 rc 阶段，rc.7 已发 PyPI 不能复用号）。\n> 是否同意？\n\n### Phase 2 — Pre-flight 预检（必跑全套）\n\n这一节的 ratchet 都是 CHANGELOG 历史教训留下的，**不要跳任何一项**。\n\n> **本节与 `docs/release_checklist.md` 的对应关系**：\n> - 2.1 ↔ checklist §3（Rust 验证 + clippy）\n> - 2.2 ↔ checklist §3（cargo test 的 5 crate 子集）\n> - 2.3-2.4 ↔ checklist §3 最后一项（stub_gen + git diff ratchet）\n> - 2.5-2.6 ↔ checklist §4（Python 验证 + `--run-slow`）\n> - **未覆盖**：checklist §5（本地 wheel + Linux aarch64/musllinux docker 验证）—— 必须额外手跑\n>\n> 想一键跑完？用 checklist §9 的 bash 一键脚本（已串好 §3+§4 的全部命令）。\n\n```bash\n# 2.1 Rust 端格式 + clippy + 全 target typecheck（rc.3 教训：cargo check 不带 --all-targets 漏 test 模块）\ncargo fmt --all -- --check\ncargo clippy --workspace --all-targets -- -D warnings\ncargo check --workspace --all-targets\n\n# 2.2 Rust 单元测试（不带 python feature，绕开 pyo3-stub-gen 上游兼容性问题）\ncargo test --release -p czsc-core --lib\n\n# 2.3 重编 .so 与最新源对齐\nuv run --no-sync maturin develop --release\n\n# 2.4 重生成 stub 并校验无 drift\nPYO3_PYTHON=$(pwd)/.venv/bin/python3 cargo run --release --bin stub_gen -p czsc-python --no-default-features --features stub-gen\ngit diff --exit-code czsc/_native/__init__.pyi   # 必须 0 — stub 必须与 Rust 源一致\n\n# 2.5 Python 端测试 + lint\nuv run --no-sync pytest tests/unit tests/compat -q\nuv run --no-sync ruff format --check czsc tests\nuv run --no-sync ruff check czsc tests\n\n# 2.6 慢测试（发版必跑，平时不跑）\nuv run --no-sync pytest --run-slow -q\n```\n\n任何一步 fail → **停**，把失败摘要给用户，让用户决定修还是放弃发版。**不要在 fail 状态下继续 bump 版本号**——历史上 rc.2/3/4/5 重发都是因为预检不严，把已知错带上 CI。\n\n### Phase 3 — Bump 版本 + 落 CHANGELOG（可逆，skill 直接做）\n\n```bash\nNEW_VER=\"1.0.0-rc.8\"     # ← 来自 Phase 1 用户确认值\nTODAY=$(date +%Y-%m-%d)\n```\n\n1. **改 `Cargo.toml`** 的 `[workspace.package] version = \"...\"`，**同时**把 `[workspace.dependencies]` 里所有 `czsc-* = { path = \"...\", version = \"...\" }` 的 version 字段都同步成新值（grep 出来一并改，否则 `cargo publish` 会拒绝）。\n2. **跑一次 `cargo check --workspace`** 让 `crates/czsc-python/build.rs` 的 ratchet 重新校验 pyproject.toml 仍走 dynamic。\n3. **CHANGELOG.md**：把 `## [Unreleased]` 改成 `## [NEW_VER] — TODAY`，并在它**上方插一个新的空 `[Unreleased]`** 块，结构如下：\n   ```markdown\n   ## [Unreleased]\n\n   _（待填）_\n\n   ---\n\n   ## [1.0.0-rc.8] — 2026-05-29\n\n   ### Added\n   ...（搬下来的内容）\n   ```\n4. **再跑一次 maturin develop + 烟测**确认 bump 后 .so 还能装、`__version__` 正确：\n   ```bash\n   uv run --no-sync maturin develop --release\n   uv run --no-sync python -c \"import czsc; print(czsc.__version__)\"   # 必须等于 NEW_VER 的 PEP440 形式\n   ```\n5. **提 commit**：\n   ```bash\n   git add Cargo.toml CHANGELOG.md\n   # 如果 step 1 改到了 workspace.dependencies，那些也加\n   git commit -m \"chore(release): bump ${NEW_VER}\"\n   ```\n\n### Phase 4 — 打 tag + push（不可逆，**必须先停下来征求授权**）\n\n`git tag` 在本地是可逆的，但 `git push origin tag` **触发 CI** 是不可逆的（CI 会真上传 PyPI / 发 crates.io 真 publish）。所以：\n\n**先用 AskUserQuestion 确认**，比如：\n\n> Phase 3 完成。即将执行：\n> 1. `git tag v1.0.0-rc.8` （本地）\n> 2. `git push origin master` （推 release commit）\n> 3. `git push origin v1.0.0-rc.8` （触发 python-publish 真上传 PyPI；rust-publish 默认 dry-run）\n>\n> 一旦推 tag 就**不能撤回**：PyPI 上的版本号占名后永远不能复用，要修问题只能 bump rc.9。\n> 继续吗？\n\n用户确认后：\n\n```bash\ngit tag \"v${NEW_VER}\"           # SemVer 前缀必须是 v，CI 监听 v*\ngit push origin master           # 先推 commit 再推 tag，避免 CI checkout 不到 commit\ngit push origin \"v${NEW_VER}\"    # 这一行触发 python-publish + rust-publish\n```\n\n### Phase 4.5 — Push 之前最后一道 ratchet：checklist §1 / §5 / §6 是否手核完？\n\nPhase 0 强制读了 `docs/release_checklist.md`。Phase 2 自动跑了 §3/§4/§9。但下面这些**本 skill 不能替你自动核**，push tag 之前必须确认用户已经手动完成：\n\n- [ ] checklist **§1**（代码/文档一致性 —— 3 段 rg 命令均无输出 / `czsc.xxx` 引用都还存在 / 已退役关键字没残留）\n- [ ] checklist **§5**（本地 wheel 构建 + 用 docker `--platform linux/arm64` 或 alpine 镜像验证 ARM/musllinux 加载成功）\n- [ ] checklist **§6 step 1**（TestPyPI 演练 —— breaking 版本强烈建议）\n\n**用 AskUserQuestion 把这三项列出来，明确询问\"全部已完成？是 / 否 / 跳过 + 理由\"**。任一项\"否\" → 拦下，告诉用户先核完再回来；\"跳过\" → 把理由记录在 release commit message 的 trailer 里（`Skipped-checklist-items: §5 (理由)`），future 复盘时能 trace。\n\n### Phase 5 — 监控 CI（直到 publish 成功或失败）\n\n```bash\ngh run list --workflow=python-publish.yml --limit 3\ngh run watch <run-id>     # 跟到 publish-to-pypi job 跑完\ngh run list --workflow=rust-publish.yml --limit 3\n```\n\n需要看到：\n- ✅ `python-publish.yml` 全绿 → PyPI 已发\n- ✅ `rust-publish.yml` 在 tag push 触发下**只是 dry-run**（这是设计；要真 publish crates.io 需手动 workflow_dispatch）\n\n如果 python-publish 失败 → 进入 [Phase 6 重发剧本](#phase-6--重发剧本)。\n\n如果 python-publish 成功 → **告诉用户去手动触发 rust-publish.yml**：\n\n```bash\ngh workflow run rust-publish.yml -f do_publish=true -f start_layer=0 -f end_layer=5\ngh run watch <run-id>\n```\n\n注意 crates.io rate-limit ≈ 1 个新 crate / 10 分钟。第一次发 czsc 系列新 crate 时，常常 layer 0/1 成功、layer 2 后被 rate-limit 拒；用 `start_layer` 参数从失败 layer 续发。\n\n### Phase 5.5 — 发布后验证（checklist §7）\n\n发布成功后**必须按 `docs/release_checklist.md` §7 逐项核完**：\n\n- [ ] PyPI 页面 6 平台 + sdist 齐全\n- [ ] crates.io 6 个 crate 都 OK（czsc-derive / czsc-signal-macros / czsc-core / czsc-ta / czsc-utils / czsc-signals / czsc-trader / czsc）\n- [ ] GitHub Release 包含 wheel + sdist + sigstore 签名\n- [ ] **干净环境冒烟（Python）**：用 `uv venv --seed`（带 pip）创建 tmp venv 后 `pip install czsc==<X.Y.Z>` + `python -c \"import czsc; print(czsc.__version__)\"`。⚠️ 不要在 czsc 仓库根目录跑 —— python path 会优先加载本地 czsc/ 路径而不是 PyPI wheel，给假阳性\n- [ ] **`cargo add czsc@=<X.Y.Z>` 在干净项目 `cargo check` 真编通过**（不只是\"可解析\"！1.0.0-rc.8 实战教训：解析成功但 cargo check 失败）：\n  ```bash\n  TMPD=$(mktemp -d); cd \"$TMPD\"\n  cargo init --name release_smoke --quiet\n  cargo add 'czsc@=<X.Y.Z>' --quiet\n  cargo check 2>&1 | tail -20      # 必须无 error\n  cargo tree -i polars-core 2>&1   # 必须单一版本\n  cd - && rm -rf \"$TMPD\"\n  ```\n  常见两类失败 → 见 [Phase 6 重发剧本](#phase-6--重发剧本) 后两行\n- [ ] 至少跑一个 `docs/examples/` demo 确认无运行时回归\n\n任一项失败 → 立刻在 GitHub Issue 记录、按 [Phase 6 重发剧本](#phase-6--重发剧本) 处理。**不要 yank 已上传的 X.Y.Z 版本本身**——版本号永久占名，必须 bump 下一个 patch/rc 重发。但**误发的混淆版本可以也应该 yank**（如 1.0.0 stable 与 1.0.0-rc.* 并存时 yank stable，避免 SemVer 解析坑）。\n\n### Phase 6 — 重发剧本（出错后）\n\nCHANGELOG 里 rc.2 → rc.3 → rc.4 → rc.5 是连续 4 次重发，写得很细。**主要坑**：\n\n| 症状 | 根因 | 修法 |\n|---|---|---|\n| `python-publish` 在 \"Verify version consistency\" 失败 | SemVer 与 PEP440 不一致（如 `1.0.0-rc.4` ↔ `1.0.0rc4`），workflow 拿字符串硬比 | 这个 bug 已在 rc.5 修；新出现就检查 `packaging.version.canonicalize_version` 翻译是否还在 |\n| build-wheels macOS 卡 1h+ | `macos-13` Intel runner pool 紧张 | 已切到 `macos-latest` cross-compile；不要回退 |\n| aarch64 manylinux2014 编译 `ring` 失败 ARM assembler 报错 | manylinux 镜像 cross-gcc 没传 `__ARM_ARCH` | 已加 `CFLAGS_aarch64_unknown_linux_gnu=\"-D__ARM_ARCH=8\"`；不要回退 |\n| `cargo check` 本地过 CI 挂 | 本地没带 `--all-targets`，test 模块没被 typecheck | Phase 2.1 已强制 `--all-targets`；本地必跑 |\n| `rust-publish` 中途断（rate-limit） | crates.io 新 crate ≈ 1/10min | `gh workflow run rust-publish.yml -f start_layer=N`，N 是失败 layer |\n| **下游 `cargo add czsc@=<X.Y.Z>` 解析到错误 stable 版本**（rc.8 实战） | crates.io 同时有 `1.0.0` stable 与 `1.0.0-rc.*`；workspace.dependencies 写 `version = \"<X.Y.Z>\"` 不带 `=`，cargo 按 SemVer 选 stable（stable > prerelease） | (a) 紧急：`cargo yank --version 1.0.0 <crate>` × 8 个 czsc-* crate，强制下游解析跳过 stable；(b) 永久：把 workspace.dependencies 改 `version = \"=<X.Y.Z>\"` 严格匹配 + bump 下一个 rc 重发 |\n| **下游 `cargo add` 编不出来 — pyo3 / pyo3-stub-gen / numpy 无条件依赖**（rc.8 实战） | czsc-core / czsc-utils / czsc-signals / czsc-trader 把 pyo3 系列列成无条件 dep，纯 Rust 用户也被强制拉 PyO3 工具链 | 4 个 crate Cargo.toml 把 pyo3 系列改 `optional = true` + 加 `[features] python = [\"pyo3\", \"pyo3-stub-gen\", \"numpy\", ...]`；facade czsc 默认 features 为空（纯 Rust）；bump 下一个 rc 重发；本地 `cargo check --no-default-features` 验证纯 Rust 路径 |\n\n**安全 bump 规则**（rc.4 → rc.5 的教训）：\n\n- 如果 wheel **build 成功但 publish step 没跑/失败**（PyPI 上没出现这个版本号）→ 同号修 + force-push tag 是**不允许**的（tag 已推过、CI 已跑过、commit 已上 master）。**只能 bump 下一个 rc 号**，把修复打进新版本。\n- 检查 PyPI 是否已经收到：`pip index versions czsc` 或 https://pypi.org/project/czsc/#history\n- 检查 crates.io：`cargo search czsc-core --limit 1`\n\n## 关键文件参考\n\n| 文件 | 角色 |\n|---|---|\n| **`docs/release_checklist.md`** | **权威清单（必读）**，9 节 / 214 行，本 skill 是它的可执行子集；详见顶部 [Mandatory References](#-mandatory-references必读且必须逐项核完才能进-phase-3) |\n| `Cargo.toml` (workspace root) | 唯一版本源 `[workspace.package].version` |\n| `pyproject.toml` | 必须 `dynamic = [\"version\"]`，禁止硬编码版本（`build.rs` ratchet 拦） |\n| `CHANGELOG.md` | Keep a Changelog 格式，`[Unreleased]` → `[X.Y.Z] — YYYY-MM-DD` |\n| `.github/workflows/python-publish.yml` | tag `v*` 触发，wheels + smoke + PyPI |\n| `.github/workflows/rust-publish.yml` | tag `v*` 触发 dry-run；workflow_dispatch + `do_publish=true` 真发 |\n| `crates/czsc-python/build.rs` | 编译期 ratchet：pyproject.toml 不能硬编码 version |\n| `czsc/__init__.py` | `__version__ = importlib.metadata.version(\"czsc\")` 反查 |\n\n## 触发场景速查\n\n下面这些用户表达**都应该启用本 skill**：\n\n- \"发版 czsc rc.N\"、\"出 rc.N+1\"、\"准备 1.0.0 stable\"\n- \"bump 版本号\"、\"bump 到 X.Y.Z\"\n- \"release\"、\"publish czsc\"、\"推 PyPI\"、\"发 crates.io\"\n- \"CHANGELOG [Unreleased] 落档\"\n- \"tag vX.Y.Z\"、\"打 release tag\"\n- \"上次 publish 失败，重发\"、\"rc 重发\"\n\n## 不要做的事\n\n- ❌ **不要跳过 `docs/release_checklist.md` 的任何一节**——Phase 0 必须 Read 全文，Phase 2 跑 §3+§4+§9 子集，Phase 4.5 显式核 §1+§5+§6 step 1，Phase 5.5 核 §7。任一节\"省略\"都属违规\n- ❌ 不要在 fail 状态下跳过 Phase 2 预检——历史 4 次重发都是这么开始的\n- ❌ 不要替用户跑 `git push origin <tag>`——必须 AskUserQuestion 后再做\n- ❌ 不要为了\"快\"在 rc 期间 force-push 同号 tag——PyPI/crates.io 版本号占名后永久不能复用\n- ❌ 不要在 pyproject.toml 里写死 `version = \"X.Y.Z\"`——会被 build.rs 编译期拦下\n- ❌ 不要只 bump `[workspace.package].version` 而漏掉 `[workspace.dependencies]` 里 czsc-* 的 version 字段——`cargo publish` 会拒绝\n- ❌ 不要在 master 之外的分支打 release tag——CI checkout 的是 tag 指向的 commit，但 master 历史会缺失\n\n<!-- File: .claude/skills/czsc-write-signal-function/agents/openai.yaml (Tokens: ~53 | Category: anthropic-skill) -->\ninterface:\n  display_name: \"CZSC Signal Writer\"\n  short_description: \"Write Rust CZSC signal functions and wire registries\"\n  default_prompt: \"Use $czsc-write-signal-function to implement and register a new CZSC signal function.\"\n\n<!-- File: .claude/skills/czsc-write-signal-function/references/event-driven-signal-pipeline.md (Tokens: ~1067 | Category: anthropic-skill) -->\n# Event-Driven Signal Pipeline (rs_czsc)\n\n## 1. 总体调用链\n\n1. `CzscTrader::update` 接收一根 `RawBar`\n2. `CzscSignals::update_signals` 计算本根所有 K线级信号\n3. `CzscTrader::update` 额外执行 Trader 级信号（pos 系列）\n4. 合并信号后调用每个 `Position::update`\n5. `Position` 按 `opens + exits` 顺序匹配 `Event`\n6. `Event` 内部通过 `signals_not -> signals_all -> signals_any` 判定\n7. 匹配后产生命令（`LO/LE/SO/SE/...`）并更新持仓记录\n\n## 2. 关键文件\n\n- `crates/czsc-trader/src/trader.rs`\n  - 交易主入口；组织信号计算与仓位更新\n- `crates/czsc-trader/src/signals/czsc_signals.rs`\n  - K线级信号执行器；维护 `s` 与 `sigs`\n- `crates/czsc-signals/src/registry.rs`\n  - 汇总 `inventory` 自动收集的 `SignalDescriptor` 到运行时注册表\n- `crates/czsc-signals/src/types.rs`\n  - 信号函数签名类型定义\n- `crates/czsc-core/src/objects/signal.rs`\n  - `Signal` 7段格式、`is_match`\n- `crates/czsc-core/src/objects/event.rs`\n  - `Event` 匹配逻辑\n- `crates/czsc-core/src/objects/position.rs`\n  - `Position::update` 执行开平仓规则\n- `crates/czsc-core/src/objects/state.rs`\n  - `TraderState` trait（给 Trader 级信号读状态）\n\n## 3. 两类信号函数\n\n### K线级信号（bar / tas / cxt）\n\n- 签名：\n`fn(&CZSC, &ParamView, &mut TaCache) -> Vec<Signal>`\n- 注册方式：函数上 `#[signal(category = \"kline\", ...)]` 自动收集\n- 调用路径：`CzscSignals::update_signals`\n- 适用场景：仅依赖某个周期的 K 线结构和指标\n\n### Trader级信号（pos）\n\n- 签名：\n`fn(&dyn TraderState, &ParamView) -> Vec<Signal>`\n- 注册方式：函数上 `#[signal(category = \"trader\", ...)]` 自动收集\n- 调用路径：`CzscTrader::update` 中 `freq.is_none()` 分支\n- 适用场景：需要 `Position` + `CZSC` 联合状态\n\n## 4. 信号字符串规则\n\n`Signal` 必须满足：\n- 格式：`k1_k2_k3_v1_v2_v3_score`\n- 总段数：7 段\n- `score`：0~100\n\n`CzscSignals` 会把它拆成：\n- key：`k1_k2_k3`\n- value：`v1_v2_v3_score`\n\n`Event` 匹配时用 `Signal::is_match`：\n- `score >= 事件要求score`\n- `v1/v2/v3` 精确匹配或事件侧为 `任意`\n\n## 5. 开发时最常见断点\n\n- 注册表 name 与 `SignalConfig.name` 不一致（大小写、`_V`/`_v`）\n- 输出不是 7 段，导致 `Signal::from_str` 失败\n- `freq` 设置错误：\n  - K线级应为 `Some(freq)`\n  - Trader级应为 `None`\n- 数据不足未做边界检查，触发索引错误或无意义信号\n\n## 6. 最小联调路径\n\n1. 在 `czsc-signals` 实现函数并添加 `#[signal(...)]` 标注\n2. 构造 `SignalConfig`\n3. 用 `CzscTrader::update` 喂历史 bars\n4. 检查：\n   - `trader.signals.s` 中是否有目标 key\n   - `trader.signals.sigs` 中是否出现目标 `Signal`\n   - `position.operates` 是否按预期变化\n\n<!-- File: .claude/skills/czsc-write-signal-function/references/signal-function-patterns.md (Tokens: ~1577 | Category: anthropic-skill) -->\n# Signal Function Patterns\n\n## 0. 注释规范（必须）\n\n每个新信号函数都必须包含以下注释层级：\n\n- 函数文档注释（`///`）至少写清 4 件事：\n  - 信号在策略中的业务含义\n  - 参数模板字符串（`param_template`）\n  - 核心判定逻辑（触发条件）\n  - 边界行为（数据不足返回什么）\n- 关键分支前写“原因注释”，解释判定依据和设计意图。\n- 与 Python/旧版行为对齐时，标注“对齐对象”和“为何这样对齐”。\n\n## 1. K线级函数模板（bar/tas/cxt）\n\n```rust\nuse crate::params::ParamView;\nuse crate::types::TaCache;\nuse crate::utils::sig::{get_str_param, get_usize_param};\nuse czsc_core::analyze::CZSC;\nuse czsc_core::objects::signal::Signal;\nuse czsc_signal_macros::signal;\n\n/// xxx_v240101: 示例信号\n///\n/// 参数模板：\"{freq}_D{di}{key}_示例V240101\"\n/// 信号语义：当满足示例条件时输出目标状态，否则输出“其他”。\n/// 边界行为：当 bars 不足以支持 di 回看时，返回空信号。\n#[signal(\n    category = \"kline\",\n    name = \"xxx_V240101\",\n    template = \"{freq}_D{di}{key}_示例V240101\",\n    opcode = \"XxxV240101\",\n    param_kind = \"XxxV240101\"\n)]\npub fn xxx_v240101(\n    czsc: &CZSC,\n    params: &ParamView,\n    cache: &mut TaCache,\n) -> Vec<Signal> {\n    let di = get_usize_param(params, \"di\", 1);\n    let key = get_str_param(params, \"key\", \"DEFAULT\");\n\n    // 1) 边界检查：数据不足时不输出错误信号，直接返回空结果。\n    if czsc.bars_raw.len() < di + 2 {\n        return vec![];\n    }\n\n    // 2) 计算 k1/k2/k3 与 v1/v2/v3：\n    // k1/k2/k3 用于事件匹配 key，v1/v2/v3 承载状态值语义。\n    let k1 = czsc.freq.to_string();\n    let k2 = format!(\"D{}{}\", di, key);\n    let k3 = \"示例V240101\";\n    let v1 = \"其他\";\n    let v2 = \"任意\";\n    let v3 = \"任意\";\n\n    // 3) 严格 7 段\n    let sig_str = format!(\"{}_{}_{}_{}_{}_{}_0\", k1, k2, k3, v1, v2, v3);\n    Signal::from_str(&sig_str).map_or_else(|_| vec![], |s| vec![s])\n}\n```\n\n## 2. Trader级函数模板（pos）\n\n```rust\nuse crate::params::ParamView;\nuse crate::utils::sig::get_str_param;\nuse czsc_core::objects::signal::Signal;\nuse czsc_core::objects::state::TraderState;\nuse czsc_signal_macros::signal;\nuse std::str::FromStr;\n\n/// pos_xxx_v240101: 示例 Trader 级信号\n///\n/// 参数模板：\"{pos_name}_示例V240101\"\n/// 信号语义：根据仓位是否存在输出“有效/其他”。\n/// 边界行为：缺少 pos_name 或查询不到仓位时输出“其他”。\n#[signal(\n    category = \"trader\",\n    name = \"pos_xxx_V240101\",\n    template = \"{pos_name}_示例V240101\",\n    opcode = \"PosXxxV240101\",\n    param_kind = \"PosXxxV240101\"\n)]\npub fn pos_xxx_v240101(cat: &dyn TraderState, params: &ParamView) -> Vec<Signal> {\n    let pos_name = get_str_param(params, \"pos_name\", \"\").to_string();\n\n    let k1 = format!(\"{}_状态\", pos_name);\n    let k2 = \"其他\";\n    let k3 = \"示例V240101\";\n\n    // Trader 级信号必须解释“为何读取 trader 状态”，避免后续误改为纯 K线逻辑。\n    let v1 = if cat.get_position(&pos_name).is_some() {\n        \"有效\"\n    } else {\n        \"其他\"\n    };\n\n    let sig_str = format!(\"{}_{}_{}_{}_任意_任意_0\", k1, k2, k3, v1);\n    Signal::from_str(&sig_str).map_or_else(|_| vec![], |s| vec![s])\n}\n```\n\n## 3. 注册模板\n\n通过 `#[signal(...)]` 自动注册，无需手写 `registry.rs` 列表。\n关键字段：\n\n```rust\n#[signal(\n    category = \"kline|trader\",\n    name = \"..._Vxxxxxx\",\n    template = \"...\",\n    opcode = \"...\",\n    param_kind = \"...\"\n)]\n```\n\n## 4. 参数与模板约束\n\n- `params` key 名与模板占位符保持一致。\n- 模板中 `freq` 表示周期；Trader 级常常不用 `freq` 字段做路由，依赖 `freq1` 之类业务参数。\n- 维护 `k2/k3` 语义稳定，避免同名逻辑漂移。\n\n## 5. 事件触发兼容性检查\n\n新增信号用于事件时，先写出事件侧信号字符串，再倒推函数输出：\n\n1. 事件侧 `Signal` 是否 7 段且 score 合法\n2. 事件侧 `k1_k2_k3` 是否与函数输出完全一致\n3. 事件侧 `v1/v2/v3` 是否允许 `任意`\n4. 事件侧 score 是否不高于函数输出 score\n\n## 6. 常见坑\n\n- 在 `SignalConfig` 里用错注册名（尤其 `_V` 大写）\n- `freq: None` / `Some` 配置反了，导致函数完全不被调度\n- 直接 `unwrap` 导致边界数据 panic；优先 `map_or_else` 或早返回\n- 函数输出多信号时 key 冲突未预期，后写会覆盖 `s` 字典同 key 值\n\n<!-- File: .claude/skills/czsc-write-signal-function/SKILL.md (Tokens: ~1611 | Category: anthropic-skill) -->\n---\nname: czsc-write-signal-function\ndescription: 为 rs_czsc 编写或重构 Rust 信号函数（bar/tas/cxt/pos）并接入事件驱动链路（`#[signal]` 自动注册、SignalConfig、Event/Position 匹配）的工作流。遇到“新增信号函数”“修改信号模板”“注册信号函数”“排查信号不触发”时使用。\n---\n\n# CZSC Signal Authoring\n\n## Overview\n\n用这个技能在 `rs_czsc` 中稳定完成信号函数开发：\n1. 判断信号类型（K线级 / Trader级）\n2. 编写函数并保持 `Signal` 7段格式\n3. 注册到正确注册表\n4. 用 `SignalConfig` 和测试验证是否能触发 `Event -> Position`\n\n先读：\n- `references/event-driven-signal-pipeline.md`\n- `references/signal-function-patterns.md`\n\n需要快速起草函数时，先运行：\n- `scripts/new_signal_stub.py`\n\n## Decision Tree\n\n1. 需要访问仓位（`Position`）或策略状态吗？\n- 是：写 Trader 级信号（`pos.rs` 风格），用 `#[signal(category = \"trader\", ...)]` 自动注册。\n- 否：写 K线级信号（`bar/tas/cxt` 风格），用 `#[signal(category = \"kline\", ...)]` 自动注册。\n\n2. 需要技术指标缓存吗？\n- 是：使用 `TaCache`，优先走 `update_*_cache`。\n- 否：保留 `_cache` 参数但不使用。\n\n3. 需要多个输出信号吗？\n- 是：返回 `Vec<Signal>`，每个信号都保持 7 段格式。\n- 否：返回单元素 `Vec`。\n\n## Workflow\n\n1. 明确输入输出\n- 明确函数输入参数（`params`）和默认值。\n- 明确 `k1/k2/k3` 模板和 `v1/v2/v3` 语义。\n- 明确“数据不足时”返回策略：通常返回 `vec![]` 或 `其他` 信号。\n\n2. 实现函数\n- K线级函数签名：`fn(&CZSC, &ParamView, &mut TaCache) -> Vec<Signal>`。\n- Trader级函数签名：`fn(&dyn TraderState, &ParamView) -> Vec<Signal>`。\n- 参数解析优先复用工具：`get_usize_param` / `get_str_param`。\n- 必须写详细注释（硬性格式，不可省略小节）：\n  - 标题行：`/// <func_name>：<一句话功能>`\n  - `///`\n  - `/// 参数模板：\\`\"...\"\\``\n  - `///`\n  - `/// 信号逻辑：`\n  - `/// 1. ...`\n  - `/// 2. ...`\n  - `/// 3. ...`\n  - `///`\n  - `/// 信号列表示例：`\n  - `/// - Signal('...')`\n  - `/// - Signal('...')`\n  - `///`\n  - `/// 参数说明：`\n  - `/// - <param>: <含义与默认值>`\n  - `/// - <param>: <含义与默认值>`\n  - 与 Python 或历史版本对齐时，必须补一行：`/// 对齐说明：...`\n- 关键分支注释：说明为什么这么判定，而不是只写“做了什么”。\n- 用 `format!` 拼出完整字符串：`k1_k2_k3_v1_v2_v3_score`。\n- 用 `Signal::from_str(...)` 或 `parse::<Signal>()` 做最终构造。\n\n3. 接入注册表\n- 在函数上添加 `#[signal(...)]`，由 `inventory` 自动收集。\n- 注册名与函数名保持一一对应（注意 `_V` 与 `_v` 大小写风格）。\n- 在 `#[signal(...)]` 中给出 `template`，确保 `SignalConfig` 反解析和人类阅读一致。\n\n4. 接入调用侧\n- K线级：通过 `SignalConfig { name, freq: Some(...), params }` 在 `CzscSignals::update_signals` 中执行。\n- Trader级：通过 `SignalConfig { name, freq: None, params }` 在 `CzscTrader::update` 的 Trader 信号分支执行。\n\n5. 验证\n- 至少验证：\n  - 函数在样本上可运行，不 panic。\n  - 输出信号可被 `Signal` 正常解析（7段、score 0~100）。\n  - 注册后能被 `SignalConfig.name` 命中。\n  - 若用于交易事件，`Event.matches_signals*` 能按预期触发。\n  - 注释完整：他人仅看注释可理解参数、边界、输出语义和关键判定。\n- 优先补充/运行相关测试：`signal_compare_tests`、`trader_tests` 或新增针对性测试。\n- 注释格式校验（提交前必须人工检查）：\n  - 每个新/改信号函数都包含 `参数模板/信号逻辑/信号列表示例/参数说明` 四段。\n  - `信号列表示例` 至少 2 条，且与当前函数输出字段一致（`k1_k2_k3_v1_v2_v3_score`）。\n\n## Guardrails\n\n- 不要输出非 7 段信号；否则会在 `Signal::from_str` 失败。\n- 不要忽略大小写差异；注册表键是精确匹配。\n- 不要在数据长度不足时硬算；先做边界检查。\n- 不要绕过 `TaCache` 重复全量计算重指标。\n- 不要在函数里偷偷改全局状态；保持纯计算风格（Trader级仅读取状态）。\n- 不要写空洞注释（如“计算信号”）；注释要解释判定依据和业务语义。\n\n## Resources\n\n- 架构与触发链路：`references/event-driven-signal-pipeline.md`\n- 函数模板与常见坑：`references/signal-function-patterns.md`\n- 骨架生成器：`scripts/new_signal_stub.py`\n\n<!-- File: .claude/skills/signal-functions/references/signals-ang.md (Tokens: ~788 | Category: anthropic-skill) -->\n# ang 模块信号索引\n\n> 源码: `crates/czsc-signals/src/ang.rs`\n> 共 10 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `adtm_up_dw_line_V230603` | `\"{freq}_D{di}N{n}M{m}TH{th}_ADTMV230603` | ADTM 能量异动多空信号 | [详细文档](signals/adtm_up_dw_line_V230603.md) |\n| `amv_up_dw_line_V230603` | `\"{freq}_D{di}N{n}M{m}_AMV能量V230603` | AMV 能量多空信号 | [详细文档](signals/amv_up_dw_line_V230603.md) |\n| `asi_up_dw_line_V230603` | `\"{freq}_D{di}N{n}P{p}_ASI多空V230603` | ASI 多空信号 | [详细文档](signals/asi_up_dw_line_V230603.md) |\n| `bias_up_dw_line_V230618` | `\"{freq}_D{di}N{n}M{m}P{p}TH1{th1}TH2{th2}TH3{th3}_BIAS乖离率V230618` | BIAS 三周期共振信号 | [详细文档](signals/bias_up_dw_line_V230618.md) |\n| `cmo_up_dw_line_V230605` | `\"{freq}_D{di}N{n}M{m}_CMO能量V230605` | CMO 能量阈值信号 | [详细文档](signals/cmo_up_dw_line_V230605.md) |\n| `dema_up_dw_line_V230605` | `\"{freq}_D{di}N{n}_DEMA短线趋势V230605` | DEMA 短线趋势信号 | [详细文档](signals/dema_up_dw_line_V230605.md) |\n| `demakder_up_dw_line_V230605` | `\"{freq}_D{di}N{n}TH{th}TL{tl}_DEMAKER价格趋势V230605` | DEMAKER 价格趋势信号 | [详细文档](signals/demakder_up_dw_line_V230605.md) |\n| `emv_up_dw_line_V230605` | `\"{freq}_D{di}_EMV简易波动V230605` | EMV 简易波动多空信号 | [详细文档](signals/emv_up_dw_line_V230605.md) |\n| `er_up_dw_line_V230604` | `\"{freq}_D{di}W{w}N{n}_ER价格动量V230604` | ER 价格动量分层信号 | [详细文档](signals/er_up_dw_line_V230604.md) |\n| `skdj_up_dw_line_V230611` | `\"{freq}_D{di}N{n}M{m}UP{up}DW{dw}_SKDJ随机波动V230611` | SKDJ 随机波动信号 | [详细文档](signals/skdj_up_dw_line_V230611.md) |\n\n<!-- File: .claude/skills/signal-functions/references/signals-bar.md (Tokens: ~3000 | Category: anthropic-skill) -->\n# bar 模块信号索引\n\n> 源码: `crates/czsc-signals/src/bar.rs`\n> 共 46 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `bar_accelerate_V221110` | `\"{freq}_D{di}W{window}_加速V221110` | 区间加速走势判定 | [详细文档](signals/bar_accelerate_V221110.md) |\n| `bar_accelerate_V221118` | `\"{freq}_D{di}W{window}#{ma_type}#{timeperiod}_加速V221118` | 均线偏离加速判定 | [详细文档](signals/bar_accelerate_V221118.md) |\n| `bar_accelerate_V240428` | `\"{freq}_D{di}W{w}T{t}_加速V240428` | 滚动差分加速判定 | [详细文档](signals/bar_accelerate_V240428.md) |\n| `bar_amount_acc_V230214` | `\"{freq}_D{di}N{n}_累计超{t}千万` | 区间累计成交额信号 | [详细文档](signals/bar_amount_acc_V230214.md) |\n| `bar_big_solid_V230215` | `\"{freq}_D{di}N{n}_MIDV230215` | 窗口最大实体中位多空信号 | [详细文档](signals/bar_big_solid_V230215.md) |\n| `bar_bpm_V230227` | `\"{freq}_D{di}N{n}T{th}_绝对动量V230227` | 绝对动量分层 | [详细文档](signals/bar_bpm_V230227.md) |\n| `bar_break_V240428` | `\"{freq}_D{di}W{w}_事件V240428` | 收盘极值突破 | [详细文档](signals/bar_break_V240428.md) |\n| `bar_channel_V230508` | `\"{freq}_D{di}M{m}_通道V230507` | 窄幅通道方向判定 | [详细文档](signals/bar_channel_V230508.md) |\n| `bar_classify_V240606` | `\"{freq}_D{di}收盘位置_分类V240606` | 单根K线收盘位置分类 | [详细文档](signals/bar_classify_V240606.md) |\n| `bar_classify_V240607` | `\"{freq}_D{di}K2收盘位置_分类V240607` | 两根K线收盘位置分类 | [详细文档](signals/bar_classify_V240607.md) |\n| `bar_decision_V240608` | `\"{freq}_W{w}N{n}Q{q}放量_决策区域V240608` | 放量反向决策区 | [详细文档](signals/bar_decision_V240608.md) |\n| `bar_decision_V240616` | `\"{freq}_W{w}N{n}强弱_决策区域V240616` | 新高新低后的强弱决策 | [详细文档](signals/bar_decision_V240616.md) |\n| `bar_dual_thrust_V230403` | `\"{freq}_D{di}通道突破#{N}#{K1}#{K2}_BS辅助V230403` | Dual Thrust 通道突破 | [详细文档](signals/bar_dual_thrust_V230403.md) |\n| `bar_eight_V230702` | `\"{freq}_D{di}#8K_走势分类V230702` | 8K 走势分类 | [详细文档](signals/bar_eight_V230702.md) |\n| `bar_end_V221211` | `\"{freq}_{freq1}结束_BS辅助221211` | 判断大周期K线是否闭合 | [详细文档](signals/bar_end_V221211.md) |\n| `bar_fake_break_V230204` | `\"{freq}_D{di}N{n}M{m}_假突破V230204` | 区间假突破判定 | [详细文档](signals/bar_fake_break_V230204.md) |\n| `bar_fang_liang_break_V221216` | `\"{freq}_D{di}TH{th}#{ma_type}#{timeperiod}_突破V221216` | 放量突破与缩量回踩 | [详细文档](signals/bar_fang_liang_break_V221216.md) |\n| `bar_limit_down_V230525` | `\"{freq}_跌停后无下影线长实体阳线_短线V230525` | 跌停后反包阳线 | [详细文档](signals/bar_limit_down_V230525.md) |\n| `bar_mean_amount_V221112` | `\"{freq}_D{di}K{n}B均额_{th1}至{th2}千万` | 区间均额分类信号 | [详细文档](signals/bar_mean_amount_V221112.md) |\n| `bar_operate_span_V221111` | `\"{freq}_T{t1}#{t2}_时间区间V221111` | 日内时间区间过滤 | [详细文档](signals/bar_operate_span_V221111.md) |\n| `bar_plr_V240427` | `\"{freq}_D{di}W{w}T{t}M{m}_盈亏比V240427` | 盈亏比约束 | [详细文档](signals/bar_plr_V240427.md) |\n| `bar_polyfit_V240428` | `\"{freq}_D{di}W{w}_分类V240428` | 一阶二阶拟合分类 | [详细文档](signals/bar_polyfit_V240428.md) |\n| `bar_r_breaker_V230326` | `\"{freq}_RBreaker_BS辅助V230326` | RBreaker 价格位判定 | [详细文档](signals/bar_r_breaker_V230326.md) |\n| `bar_reversal_V230227` | `\"{freq}_D{di}A{avg_bp}_反转V230227` | 末根反转迹象判定 | [详细文档](signals/bar_reversal_V230227.md) |\n| `bar_section_momentum_V221112` | `\"{freq}_D{di}K{n}B_阈值{th}BPV221112` | 区间动量强弱与波动 | [详细文档](signals/bar_section_momentum_V221112.md) |\n| `bar_shuang_fei_V230507` | `\"{freq}_D{di}双飞_短线V230507` | 双飞涨停形态 | [详细文档](signals/bar_shuang_fei_V230507.md) |\n| `bar_single_V230214` | `\"{freq}_D{di}T{t}_状态V230214` | 单K状态信号 | [详细文档](signals/bar_single_V230214.md) |\n| `bar_single_V230506` | `\"{freq}_D{di}单K趋势N{n}_BS辅助V230506` | 单K趋势分层信号 | [详细文档](signals/bar_single_V230506.md) |\n| `bar_td9_V240616` | `\"{freq}_神奇九转N{n}_BS辅助V240616` | 神奇九转计数 | [详细文档](signals/bar_td9_V240616.md) |\n| `bar_time_V230327` | `\"{freq}_日内时间_分段V230327` | 日内时间分段信号 | [详细文档](signals/bar_time_V230327.md) |\n| `bar_tnr_V230629` | `\"{freq}_D{di}TNR{timeperiod}_趋势V230629` | TNR 分层信号 | [详细文档](signals/bar_tnr_V230629.md) |\n| `bar_tnr_V230630` | `\"{freq}_D{di}TNR{timeperiod}K{k}_趋势V230630` | TNR 噪音变化判定 | [详细文档](signals/bar_tnr_V230630.md) |\n| `bar_trend_V240209` | `\"{freq}_D{di}N{N}趋势跟踪_BS辅助V240209` | 趋势跟踪结构判定 | [详细文档](signals/bar_trend_V240209.md) |\n| `bar_triple_V230506` | `\"{freq}_D{di}三K加速_裸K形态V230506` | 三K加速形态信号 | [详细文档](signals/bar_triple_V230506.md) |\n| `bar_vol_bs1_V230224` | `\"{freq}_D{di}N{n}量价_BS1辅助V230224` | 量价高低点辅助 | [详细文档](signals/bar_vol_bs1_V230224.md) |\n| `bar_vol_grow_V221112` | `\"{freq}_D{di}K{n}B_放量V221112` | 成交量放大信号 | [详细文档](signals/bar_vol_grow_V221112.md) |\n| `bar_volatility_V241013` | `\"{freq}_波动率分层W{w}N{n}_完全分类V241013` | 波动率三层分类 | [详细文档](signals/bar_volatility_V241013.md) |\n| `bar_weekday_V230328` | `\"{freq}_周内时间_分段V230328` | 周内时间分段信号 | [详细文档](signals/bar_weekday_V230328.md) |\n| `bar_window_ps_V230731` | `\"{freq}_W{w}M{m}N{n}L{l}_支撑压力位V230731` | 支撑压力位分位特征 | [详细文档](signals/bar_window_ps_V230731.md) |\n| `bar_window_ps_V230801` | `\"{freq}_N{n}W{w}_支撑压力位V230801` | 支撑压力位窗口极值 | [详细文档](signals/bar_window_ps_V230801.md) |\n| `bar_window_std_V230731` | `\"{freq}_D{di}W{w}M{m}N{n}_窗口波动V230731` | 窗口波动分层特征 | [详细文档](signals/bar_window_std_V230731.md) |\n| `bar_zdf_V221203` | `\"{freq}_D{di}{mode}_{t1}至{t2}` | 单根涨跌幅区间信号 | [详细文档](signals/bar_zdf_V221203.md) |\n| `bar_zdt_V230331` | `\"{freq}_D{di}_涨跌停V230331` | 涨跌停识别信号 | [详细文档](signals/bar_zdt_V230331.md) |\n| `bar_zfzd_V241013` | `\"{freq}_窄幅震荡N{n}_形态V241013` | 窄幅震荡（全重叠） | [详细文档](signals/bar_zfzd_V241013.md) |\n| `bar_zfzd_V241014` | `\"{freq}_窄幅震荡N{n}_形态V241014` | 窄幅震荡（最大实体重叠） | [详细文档](signals/bar_zfzd_V241014.md) |\n| `bar_zt_count_V230504` | `\"{freq}_D{di}W{window}涨停计数_裸K形态V230504` | 窗口涨停计数 | [详细文档](signals/bar_zt_count_V230504.md) |\n\n<!-- File: .claude/skills/signal-functions/references/signals-byi.md (Tokens: ~419 | Category: anthropic-skill) -->\n# byi 模块信号索引\n\n> 源码: `crates/czsc-signals/src/byi.rs`\n> 共 5 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `byi_bi_end_V230106` | `\"{freq}_D0停顿分型_BE辅助V230106` | 分型停顿辅助笔结束信号 | [详细文档](signals/byi_bi_end_V230106.md) |\n| `byi_bi_end_V230107` | `\"{freq}_D0验证分型_BE辅助V230107` | 验证分型辅助笔结束信号 | [详细文档](signals/byi_bi_end_V230107.md) |\n| `byi_fx_num_V230628` | `\"{freq}_D{di}笔分型数大于{num}_BE辅助V230628` | 前笔分型数量约束信号 | [详细文档](signals/byi_fx_num_V230628.md) |\n| `byi_second_bs_V230324` | `\"{freq}_D{di}MACD{fastperiod}#{slowperiod}#{signalperiod}回抽零轴_BS2辅助V230324` | 二类买卖点辅助信号 | [详细文档](signals/byi_second_bs_V230324.md) |\n| `byi_symmetry_zs_V221107` | `\"{freq}_D{di}B_对称中枢` | 对称中枢识别信号 | [详细文档](signals/byi_symmetry_zs_V221107.md) |\n\n<!-- File: .claude/skills/signal-functions/references/signals-cat.md (Tokens: ~203 | Category: anthropic-skill) -->\n# cat 模块信号索引\n\n> 源码: `crates/czsc-signals/src/cat.rs`\n> 共 2 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `cat_macd_V230518` | `\"{freq1}#{freq2}_MACD交叉_联立V230518` | 高低级别 MACD 交叉联立信号 | [详细文档](signals/cat_macd_V230518.md) |\n| `cat_macd_V230520` | `\"{freq1}#{freq2}_MACD交叉_联立V230520` | 高低级别 MACD 缩柱联立信号 | [详细文档](signals/cat_macd_V230520.md) |\n\n<!-- File: .claude/skills/signal-functions/references/signals-clv.md (Tokens: ~131 | Category: anthropic-skill) -->\n# clv 模块信号索引\n\n> 源码: `crates/czsc-signals/src/clv.rs`\n> 共 1 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `clv_up_dw_line_V230605` | `\"{freq}_D{di}N{n}_CLV多空V230605` | CLV 多空信号 | [详细文档](signals/clv_up_dw_line_V230605.md) |\n\n<!-- File: .claude/skills/signal-functions/references/signals-coo.md (Tokens: ~416 | Category: anthropic-skill) -->\n# coo 模块信号索引\n\n> 源码: `crates/czsc-signals/src/coo.rs`\n> 共 5 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `coo_cci_V230323` | `\"{freq}_D{di}CCI{n}#{ma_type}#{m}_BS辅助V230323` | CCI 结合均线的多空与方向信号 | [详细文档](signals/coo_cci_V230323.md) |\n| `coo_kdj_V230322` | `\"{freq}_D{di}KDJ{fastk_period}#{slowk_period}#{slowd_period}#{ma_type}#{n}_BS辅助V230322` | 均线与 KDJ 配合多空信号 | [详细文档](signals/coo_kdj_V230322.md) |\n| `coo_sar_V230325` | `\"{freq}_D{di}N{n}SAR_BS辅助V230325` | SAR 与区间极值配合信号 | [详细文档](signals/coo_sar_V230325.md) |\n| `coo_td_V221110` | `\"{freq}_D{di}K_TD` | TD 神奇九转信号（旧版模板） | [详细文档](signals/coo_td_V221110.md) |\n| `coo_td_V221111` | `\"{freq}_D{di}TD_BS辅助V221111` | TD 神奇九转信号 | [详细文档](signals/coo_td_V221111.md) |\n\n<!-- File: .claude/skills/signal-functions/references/signals-cvolp.md (Tokens: ~155 | Category: anthropic-skill) -->\n# cvolp 模块信号索引\n\n> 源码: `crates/czsc-signals/src/cvolp.rs`\n> 共 1 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `cvolp_up_dw_line_V230612` | `\"{freq}_D{di}N{n}M{m}UP{up}DW{dw}_CVOLP动量变化率V230612` | CVOLP 动量变化率信号 | [详细文档](signals/cvolp_up_dw_line_V230612.md) |\n\n<!-- File: .claude/skills/signal-functions/references/signals-cxt_trader.md (Tokens: ~218 | Category: anthropic-skill) -->\n# cxt_trader 模块信号索引\n\n> 源码: `crates/czsc-signals/src/cxt_trader.rs`\n> 共 2 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `cxt_intraday_V230701` | `\"{freq1}#{freq2}_D{di}日_走势分类V230701` | 30分钟日内走势分类 | [详细文档](signals/cxt_intraday_V230701.md) |\n| `cxt_zhong_shu_gong_zhen_V221221` | `\"{freq1}_{freq2}_中枢共振V221221` | 大小级别中枢共振 | [详细文档](signals/cxt_zhong_shu_gong_zhen_V221221.md) |\n\n<!-- File: .claude/skills/signal-functions/references/signals-cxt.md (Tokens: ~2784 | Category: anthropic-skill) -->\n# cxt 模块信号索引\n\n> 源码: `crates/czsc-signals/src/cxt.rs`\n> 共 41 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `cxt_bi_base_V230228` | `\"{freq}_D0BL{bi_init_length}_V230228` | 笔基础状态信号 | [详细文档](signals/cxt_bi_base_V230228.md) |\n| `cxt_bi_end_V230104` | `\"{freq}_D0{ma_type}#{timeperiod}T{th}_BE辅助V230104` | 单均线辅助判断笔结束 | [详细文档](signals/cxt_bi_end_V230104.md) |\n| `cxt_bi_end_V230105` | `\"{freq}_D0{ma_type}#{timeperiod}T{th}_BE辅助V230105` | K线形态+均线辅助判断笔结束 | [详细文档](signals/cxt_bi_end_V230105.md) |\n| `cxt_bi_end_V230222` | `\"{freq}_D1MO{max_overlap}_BE辅助V230222` | 未完成笔分型新高新低次数 | [详细文档](signals/cxt_bi_end_V230222.md) |\n| `cxt_bi_end_V230224` | `\"{freq}_D1_BE辅助V230224` | 量价配合笔结束辅助 | [详细文档](signals/cxt_bi_end_V230224.md) |\n| `cxt_bi_end_V230312` | `\"{freq}_D0MACD{fastperiod}#{slowperiod}#{signalperiod}_BE辅助V230312` | MACD辅助判断笔结束 | [详细文档](signals/cxt_bi_end_V230312.md) |\n| `cxt_bi_end_V230320` | `\"{freq}_D0质数窗口MO{max_overlap}_BE辅助V230320` | 质数窗口笔结束辅助 | [详细文档](signals/cxt_bi_end_V230320.md) |\n| `cxt_bi_end_V230322` | `\"{freq}_D0分型配合{ma_type}#{timeperiod}_BE辅助V230322` | 分型配合均线的笔结束辅助 | [详细文档](signals/cxt_bi_end_V230322.md) |\n| `cxt_bi_end_V230324` | `\"{freq}_D0{ma_type}#{timeperiod}均线突破_BE辅助V230324` | 笔结束分型均线突破 | [详细文档](signals/cxt_bi_end_V230324.md) |\n| `cxt_bi_end_V230618` | `\"{freq}_D{di}MO{max_overlap}_BE辅助V230618` | 笔结束小中枢辅助 | [详细文档](signals/cxt_bi_end_V230618.md) |\n| `cxt_bi_end_V230815` | `\"{freq}_快速突破_BE辅助V230815` | 快速突破反向笔 | [详细文档](signals/cxt_bi_end_V230815.md) |\n| `cxt_bi_status_V230101` | `\"{freq}_D1_表里关系V230101` | 笔表里关系信号 | [详细文档](signals/cxt_bi_status_V230101.md) |\n| `cxt_bi_status_V230102` | `\"{freq}_D1_表里关系V230102` | 笔表里关系信号 | [详细文档](signals/cxt_bi_status_V230102.md) |\n| `cxt_bi_stop_V230815` | `\"{freq}_距离{th}BP_止损V230815` | 笔止损距离状态 | [详细文档](signals/cxt_bi_stop_V230815.md) |\n| `cxt_bi_trend_V230824` | `\"{freq}_D{di}N{n}TH{th}_形态V230824` | N笔形态判断 | [详细文档](signals/cxt_bi_trend_V230824.md) |\n| `cxt_bi_trend_V230913` | `\"{freq}_D{di}N{n}笔趋势_高低点辅助判断V230913` | 笔趋势高低点回归信号 | [详细文档](signals/cxt_bi_trend_V230913.md) |\n| `cxt_bi_zdf_V230601` | `\"{freq}_D{di}N{n}_分层V230601` | BI涨跌幅分层 | [详细文档](signals/cxt_bi_zdf_V230601.md) |\n| `cxt_bs_V240526` | `\"{freq}_趋势跟随_BS辅助V240526` | 趋势跟随 BS 辅助 | [详细文档](signals/cxt_bs_V240526.md) |\n| `cxt_bs_V240527` | `\"{freq}_趋势跟随_BS辅助V240527` | 未完成笔上的趋势跟随 BS 辅助 | [详细文档](signals/cxt_bs_V240527.md) |\n| `cxt_decision_V240526` | `\"{freq}_分型区域N{n}_决策区域V240526` | 分型区域决策 | [详细文档](signals/cxt_decision_V240526.md) |\n| `cxt_decision_V240612` | `\"{freq}_W{w}N{n}高低点_决策区域V240612` | 高低点N档决策区间 | [详细文档](signals/cxt_decision_V240612.md) |\n| `cxt_decision_V240613` | `\"{freq}_放量笔N{n}BS2_决策区域V240613` | 放量笔N4BS2决策区 | [详细文档](signals/cxt_decision_V240613.md) |\n| `cxt_decision_V240614` | `\"{freq}_放量笔N{n}_决策区域V240614` | 放量新高/新低决策区 | [详细文档](signals/cxt_decision_V240614.md) |\n| `cxt_double_zs_V230311` | `\"{freq}_D{di}双中枢_BS1辅助V230311` | 双中枢 BS1 辅助 | [详细文档](signals/cxt_double_zs_V230311.md) |\n| `cxt_eleven_bi_V230622` | `\"{freq}_D{di}十一笔_形态V230622` | 十一笔形态分类信号 | [详细文档](signals/cxt_eleven_bi_V230622.md) |\n| `cxt_first_buy_V221126` | `\"{freq}_D{di}B_BUY1V221126` | 一买信号 | [详细文档](signals/cxt_first_buy_V221126.md) |\n| `cxt_first_sell_V221126` | `\"{freq}_D{di}B_SELL1V221126` | 一卖信号 | [详细文档](signals/cxt_first_sell_V221126.md) |\n| `cxt_five_bi_V230619` | `\"{freq}_D{di}五笔_形态V230619` | 五笔形态分类信号 | [详细文档](signals/cxt_five_bi_V230619.md) |\n| `cxt_fx_power_V221107` | `\"{freq}_D{di}F_分型强弱V221107` | 倒数分型强弱 | [详细文档](signals/cxt_fx_power_V221107.md) |\n| `cxt_nine_bi_V230621` | `\"{freq}_D{di}九笔_形态V230621` | 九笔形态分类信号 | [详细文档](signals/cxt_nine_bi_V230621.md) |\n| `cxt_overlap_V240526` | `\"{freq}_顶底重合_支撑压力V240526` | 收盘价与最近分型区间重合次数 | [详细文档](signals/cxt_overlap_V240526.md) |\n| `cxt_overlap_V240612` | `\"{freq}_SNR顺畅N{n}_支撑压力V240612` | 顺畅笔分型支撑压力信号 | [详细文档](signals/cxt_overlap_V240612.md) |\n| `cxt_range_oscillation_V230620` | `\"{freq}_D{di}TH{th}_区间震荡V230620` | 区间震荡笔数统计 | [详细文档](signals/cxt_range_oscillation_V230620.md) |\n| `cxt_second_bs_V230320` | `\"{freq}_D{di}#{ma_type}#{timeperiod}_BS2辅助V230320` | 均线辅助识别第二类买卖点 | [详细文档](signals/cxt_second_bs_V230320.md) |\n| `cxt_second_bs_V240524` | `\"{freq}_D{di}W{w}T{t}_第二买卖点V240524` | 第二买卖点重叠计数信号 | [详细文档](signals/cxt_second_bs_V240524.md) |\n| `cxt_seven_bi_V230620` | `\"{freq}_D{di}七笔_形态V230620` | 七笔形态分类信号 | [详细文档](signals/cxt_seven_bi_V230620.md) |\n| `cxt_third_bs_V230318` | `\"{freq}_D{di}#{ma_type}#{timeperiod}_BS3辅助V230318` | 均线辅助识别第三类买卖点 | [详细文档](signals/cxt_third_bs_V230318.md) |\n| `cxt_third_bs_V230319` | `\"{freq}_D{di}#{ma_type}#{timeperiod}_BS3辅助V230319` | 带均线形态的第三类买卖点辅助 | [详细文档](signals/cxt_third_bs_V230319.md) |\n| `cxt_third_buy_V230228` | `\"{freq}_D{di}_三买辅助V230228` | 笔三买辅助 | [详细文档](signals/cxt_third_buy_V230228.md) |\n| `cxt_three_bi_V230618` | `\"{freq}_D{di}三笔_形态V230618` | 三笔形态分类信号 | [详细文档](signals/cxt_three_bi_V230618.md) |\n| `cxt_ubi_end_V230816` | `\"{freq}_UBI_BE辅助V230816` | UBI 新高新低次数信号 | [详细文档](signals/cxt_ubi_end_V230816.md) |\n\n<!-- File: .claude/skills/signal-functions/references/signals-jcc.md (Tokens: ~1181 | Category: anthropic-skill) -->\n# jcc 模块信号索引\n\n> 源码: `crates/czsc-signals/src/jcc.rs`\n> 共 19 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `jcc_ci_tou_V221101` | `\"{freq}_D{di}Z{z}TH{th}_刺透形态` | 刺透形态 | [详细文档](signals/jcc_ci_tou_V221101.md) |\n| `jcc_fan_ji_xian_V221121` | `\"{freq}_D{di}_反击线` | 反击线 | [详细文档](signals/jcc_fan_ji_xian_V221121.md) |\n| `jcc_fen_shou_xian_V20221113` | `\"{freq}_D{di}K_分手线` | 分手线 | [详细文档](signals/jcc_fen_shou_xian_V20221113.md) |\n| `jcc_gap_yin_yang_V221121` | `\"{freq}_D{di}K_并列阴阳` | 跳空并列阴阳 | [详细文档](signals/jcc_gap_yin_yang_V221121.md) |\n| `jcc_ping_tou_V221113` | `\"{freq}_D{di}TH{th}_平头形态` | 平头形态 | [详细文档](signals/jcc_ping_tou_V221113.md) |\n| `jcc_san_fa_V20221115` | `\"{freq}_D{di}K_三法` | 三法形态 | [详细文档](signals/jcc_san_fa_V20221115.md) |\n| `jcc_san_fa_V20221118` | `\"{freq}_D{di}K_三法A` | 三法形态A | [详细文档](signals/jcc_san_fa_V20221118.md) |\n| `jcc_san_szx_V221122` | `\"{freq}_D{di}T{th}_三星` | 三星形态 | [详细文档](signals/jcc_san_szx_V221122.md) |\n| `jcc_san_xing_xian_V221023` | `\"{freq}_D{di}TH{th}_伞形线` | 伞形线形态信号 | [详细文档](signals/jcc_san_xing_xian_V221023.md) |\n| `jcc_shan_chun_V221121` | `\"{freq}_D{di}B_山川形态` | 山川形态 | [详细文档](signals/jcc_shan_chun_V221121.md) |\n| `jcc_szx_V221111` | `\"{freq}_D{di}TH{th}_十字线` | 十字线 | [详细文档](signals/jcc_szx_V221111.md) |\n| `jcc_ta_xing_V221124` | `\"{freq}_D{di}K_塔形` | 塔形顶底 | [详细文档](signals/jcc_ta_xing_V221124.md) |\n| `jcc_ten_mo_V221028` | `\"{freq}_D{di}_吞没形态` | 吞没形态 | [详细文档](signals/jcc_ten_mo_V221028.md) |\n| `jcc_three_crow_V221108` | `\"{freq}_D{di}_三只乌鸦` | 三只乌鸦 | [详细文档](signals/jcc_three_crow_V221108.md) |\n| `jcc_two_crow_V221108` | `\"{freq}_D{di}K_两只乌鸦` | 两只乌鸦 | [详细文档](signals/jcc_two_crow_V221108.md) |\n| `jcc_wu_yun_gai_ding_V221101` | `\"{freq}_D{di}Z{z}TH{th}_乌云盖顶` | 乌云盖顶 | [详细文档](signals/jcc_wu_yun_gai_ding_V221101.md) |\n| `jcc_xing_xian_V221118` | `\"{freq}_D{di}TH{th}_星形线` | 星形线 | [详细文档](signals/jcc_xing_xian_V221118.md) |\n| `jcc_yun_xian_V221118` | `\"{freq}_D{di}_孕线` | 孕线形态 | [详细文档](signals/jcc_yun_xian_V221118.md) |\n| `jcc_zhu_huo_xian_V221027` | `\"{freq}_D{di}T{th}F{zf}_烛火线` | 烛火线 | [详细文档](signals/jcc_zhu_huo_xian_V221027.md) |\n\n<!-- File: .claude/skills/signal-functions/references/signals-kcatr.md (Tokens: ~149 | Category: anthropic-skill) -->\n# kcatr 模块信号索引\n\n> 源码: `crates/czsc-signals/src/kcatr.rs`\n> 共 1 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `kcatr_up_dw_line_V230823` | `\"{freq}_D{di}N{n}M{m}T{th}_KCATR多空V230823` | ATR 通道突破多空 | [详细文档](signals/kcatr_up_dw_line_V230823.md) |\n\n<!-- File: .claude/skills/signal-functions/references/signals-ntmdk.md (Tokens: ~137 | Category: anthropic-skill) -->\n# ntmdk 模块信号索引\n\n> 源码: `crates/czsc-signals/src/ntmdk.rs`\n> 共 1 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `ntmdk_V230824` | `\"{freq}_D{di}M{m}_NTMDK多空V230824` | M 日前收盘价对比多空 | [详细文档](signals/ntmdk_V230824.md) |\n\n<!-- File: .claude/skills/signal-functions/references/signals-obv.md (Tokens: ~208 | Category: anthropic-skill) -->\n# obv 模块信号索引\n\n> 源码: `crates/czsc-signals/src/obv.rs`\n> 共 2 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `obv_up_dw_line_V230719` | `\"{freq}_D{di}N{n}M{m}MO{max_overlap}_OBV能量V230719` | OBV 交叉信号 | [详细文档](signals/obv_up_dw_line_V230719.md) |\n| `obvm_line_V230610` | `\"{freq}_D{di}N{n}M{m}_OBV能量V230610` | OBV 双 EMA 能量信号 | [详细文档](signals/obvm_line_V230610.md) |\n\n<!-- File: .claude/skills/signal-functions/references/signals-pos.md (Tokens: ~1190 | Category: anthropic-skill) -->\n# pos 模块信号索引\n\n> 源码: `crates/czsc-signals/src/pos.rs`\n> 共 16 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `pos_bar_stop_V230524` | `\"{pos_name}_{freq1}N{n}K_止损V230524` | 按开仓点附近N根K线极值止损 | [详细文档](signals/pos_bar_stop_V230524.md) |\n| `pos_fix_exit_V230624` | `\"{pos_name}_固定{th}BP止盈止损_出场V230624` | 固定 BP 止盈止损 | [详细文档](signals/pos_fix_exit_V230624.md) |\n| `pos_fx_stop_V230414` | `\"{freq1}_{pos_name}N{n}_止损V230414` | 按开仓点附近分型止损 | [详细文档](signals/pos_fx_stop_V230414.md) |\n| `pos_holds_V230414` | `\"{pos_name}_{freq1}N{n}M{m}_趋势判断V230414` | 开仓后 N 根K线收益与阈值比较 | [详细文档](signals/pos_holds_V230414.md) |\n| `pos_holds_V230807` | `\"{pos_name}_{freq1}N{n}M{m}T{t}_BS辅助V230807` | 开仓后收益在 (t, m) 之间触发保本 | [详细文档](signals/pos_holds_V230807.md) |\n| `pos_holds_V240428` | `\"{pos_name}_{freq1}H{h}T{t}N{n}_保本V240428` | 最大盈利回撤比例保本 | [详细文档](signals/pos_holds_V240428.md) |\n| `pos_holds_V240608` | `\"{pos_name}_{freq1}W{w}N{n}_保本V240608` | 跌破/升破开仓前窗口极值后，回到成本价指定档位保本 | [详细文档](signals/pos_holds_V240608.md) |\n| `pos_ma_V230414` | `\"{pos_name}_{freq1}#{ma_type}#{timeperiod}_持有状态V230414` | 判断开仓后是否升破/跌破均线 | [详细文档](signals/pos_ma_V230414.md) |\n| `pos_profit_loss_V230624` | `\"{pos_name}_{freq1}YKB{ykb}N{n}_盈亏比判断V230624` | 盈亏比阈值判断 | [详细文档](signals/pos_profit_loss_V230624.md) |\n| `pos_status_V230808` | `\"{pos_name}_持仓状态_BS辅助V230808` | 持仓状态 | [详细文档](signals/pos_status_V230808.md) |\n| `pos_stop_V240331` | `\"{pos_name}_{freq1}#{n}_止损V240331` | 最近 N 根K线追踪止损 | [详细文档](signals/pos_stop_V240331.md) |\n| `pos_stop_V240428` | `\"{pos_name}_{freq1}T{t}N{n}_止损V240428` | 按开仓前离散价位跳数止损 | [详细文档](signals/pos_stop_V240428.md) |\n| `pos_stop_V240608` | `\"{pos_name}_{freq1}W{w}N{n}_止损V240608` | 开仓后突破开仓前窗口极值 N 档止损 | [详细文档](signals/pos_stop_V240608.md) |\n| `pos_stop_V240614` | `\"{pos_name}_{freq1}N{n}_止损V240614` | 开仓后低于/高于成本价的 K线数量计数止损 | [详细文档](signals/pos_stop_V240614.md) |\n| `pos_stop_V240717` | `\"{pos_name}_{freq1}N{n}T{timeperiod}_止损V240717` | 基于开仓时 ATR 的计数止损 | [详细文档](signals/pos_stop_V240717.md) |\n| `pos_take_V240428` | `\"{pos_name}_{freq1}T{t}N{n}_止盈V240428` | 倍量阳/阴线计数止盈 | [详细文档](signals/pos_take_V240428.md) |\n\n<!-- File: .claude/skills/signal-functions/references/signals-pressure.md (Tokens: ~332 | Category: anthropic-skill) -->\n# pressure 模块信号索引\n\n> 源码: `crates/czsc-signals/src/pressure.rs`\n> 共 4 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `pressure_support_V240222` | `\"{freq}_D{di}W{w}高低点验证_支撑压力V240222` | 高低点验证支撑压力位 | [详细文档](signals/pressure_support_V240222.md) |\n| `pressure_support_V240402` | `\"{freq}_D{di}W{w}_支撑压力V240402` | 分型区间支撑压力位 | [详细文档](signals/pressure_support_V240402.md) |\n| `pressure_support_V240406` | `\"{freq}_D{di}W{w}_支撑压力V240406` | 分型密集支撑压力位 | [详细文档](signals/pressure_support_V240406.md) |\n| `pressure_support_V240530` | `\"{freq}_D{di}W{w}N{n}_支撑压力V240530` | 关键重叠K线支撑压力位 | [详细文档](signals/pressure_support_V240530.md) |\n\n<!-- File: .claude/skills/signal-functions/references/signals-tas.md (Tokens: ~4540 | Category: anthropic-skill) -->\n# tas 模块信号索引\n\n> 源码: `crates/czsc-signals/src/tas.rs`\n> 共 59 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `cci_decision_V240620` | `\"{freq}_N{n}CCI_决策区域V240620` | CCI 逆势决策区域 | [详细文档](signals/cci_decision_V240620.md) |\n| `tas_accelerate_V230531` | `\"{freq}_D{di}N{n}T{t}_BOLL加速V230531` | BOLL 通道加速信号 | [详细文档](signals/tas_accelerate_V230531.md) |\n| `tas_angle_V230802` | `\"{freq}_D{di}N{n}T{th}_笔角度V230802` | 笔角度偏离信号 | [详细文档](signals/tas_angle_V230802.md) |\n| `tas_atr_V230630` | `\"{freq}_D{di}ATR{timeperiod}_波动V230630` | ATR 波动分层信号 | [详细文档](signals/tas_atr_V230630.md) |\n| `tas_atr_break_V230424` | `\"{freq}_D{di}ATR{timeperiod}T{th}突破_BS辅助V230424` | ATR 通道突破 | [详细文档](signals/tas_atr_break_V230424.md) |\n| `tas_boll_bc_V221118` | `\"{freq}_D{di}N{n}M{m}L{line}#BOLL{timeperiod}_背驰V221118` | BOLL背驰辅助信号 | [详细文档](signals/tas_boll_bc_V221118.md) |\n| `tas_boll_cc_V230312` | `\"{freq}_D{di}BOLL{timeperiod}S{nbdev}SP{sp}_BS辅助V230312` | 布林进出场信号 | [详细文档](signals/tas_boll_cc_V230312.md) |\n| `tas_boll_power_V221112` | `\"{freq}_D{di}BOLL{timeperiod}_强弱V221112` | BOLL强弱分层信号 | [详细文档](signals/tas_boll_power_V221112.md) |\n| `tas_boll_vt_V230212` | `\"{freq}_D{di}BOLL{timeperiod}S{nbdev}MO{max_overlap}_BS辅助V230212` | BOLL 通道突破进出场信号 | [详细文档](signals/tas_boll_vt_V230212.md) |\n| `tas_cci_base_V230402` | `\"{freq}_D{di}CCI{timeperiod}#{min_count}#{max_count}_BS辅助V230402` | CCI 极值连续计数信号 | [详细文档](signals/tas_cci_base_V230402.md) |\n| `tas_cross_status_V230619` | `\"{freq}_D{di}MACD{fastperiod}#{slowperiod}#{signalperiod}_金死叉V230619` | 0轴上下金死叉次数 | [详细文档](signals/tas_cross_status_V230619.md) |\n| `tas_cross_status_V230624` | `\"{freq}_D{di}N{n}MD{md}_MACD交叉数量V230624` | 指定金死叉数值 | [详细文档](signals/tas_cross_status_V230624.md) |\n| `tas_cross_status_V230625` | `\"{freq}_D{di}N{n}MD{md}J{j}S{s}_MACD交叉数量V230625` | 指定金叉/死叉次数后状态 | [详细文档](signals/tas_cross_status_V230625.md) |\n| `tas_dif_layer_V241010` | `\"{freq}_DIF分层W{w}T{t}_完全分类V241010` | DIF 三层分类 | [详细文档](signals/tas_dif_layer_V241010.md) |\n| `tas_dif_zero_V240612` | `\"{freq}_DIF靠近零轴T{t}_BS辅助V240612` | DIF靠近零轴买卖点信号（基于最近一笔） | [详细文档](signals/tas_dif_zero_V240612.md) |\n| `tas_dif_zero_V240614` | `\"{freq}_DIF靠近零轴W{w}T{t}_BS辅助V240614` | DIF靠近零轴买卖点信号 | [详细文档](signals/tas_dif_zero_V240614.md) |\n| `tas_dma_bs_V240608` | `\"{freq}_N{n}双均线{t1}#{t2}顺势_BS辅助V240608` | 双均线顺势回调买卖点 | [详细文档](signals/tas_dma_bs_V240608.md) |\n| `tas_double_ma_V221203` | `\"{freq}_D{di}T{th}#{ma_type}#{timeperiod1}#{timeperiod2}_JX辅助V221203` | 双均线多空强弱信号 | [详细文档](signals/tas_double_ma_V221203.md) |\n| `tas_double_ma_V230511` | `\"{freq}_D{di}#{ma_type}#{t1}#{t2}_BS辅助V230511` | 双均线反向信号 | [详细文档](signals/tas_double_ma_V230511.md) |\n| `tas_double_ma_V240208` | `\"{freq}_D{di}N{N}M{M}双均线_BS辅助V240208` | 双均线交叉结构信号 | [详细文档](signals/tas_double_ma_V240208.md) |\n| `tas_first_bs_V230217` | `\"{freq}_D{di}N{n}#{ma_type}#{timeperiod}_BS1辅助V230217` | 均线结合K线形态的一买一卖辅助 | [详细文档](signals/tas_first_bs_V230217.md) |\n| `tas_hlma_V230301` | `\"{freq}_D{di}#{ma_type}#{timeperiod}HLMA_BS辅助V230301` | HMA/LMA 多空信号 | [详细文档](signals/tas_hlma_V230301.md) |\n| `tas_kdj_base_V221101` | `\"{freq}_D{di}K#KDJ{fastk_period}#{slowk_period}#{slowd_period}_KDJ辅助V221101` | KDJ基础辅助信号 | [详细文档](signals/tas_kdj_base_V221101.md) |\n| `tas_kdj_evc_V221201` | `\"{freq}_D{di}T{th}KDJ{fastk_period}#{slowk_period}#{slowd_period}#{key}值突破{c1}#{c2}_KDJ极值V221201` | KDJ 极值计数信号 | [详细文档](signals/tas_kdj_evc_V221201.md) |\n| `tas_kdj_evc_V230401` | `\"{freq}_D{di}T{th}KDJ{fastk_period}#{slowk_period}#{slowd_period}#{key}值突破{min_count}#{max_count}_BS辅助V230401` | KDJ 极值计数信号 | [详细文档](signals/tas_kdj_evc_V230401.md) |\n| `tas_low_trend_V230627` | `\"{freq}_D{di}N{n}TH{th}_趋势230627` | 阴跌/小阳趋势信号 | [详细文档](signals/tas_low_trend_V230627.md) |\n| `tas_ma_base_V221101` | `\"{freq}_D{di}{ma_type}#{timeperiod}_分类V221101` | 单均线多空与方向信号 | [详细文档](signals/tas_ma_base_V221101.md) |\n| `tas_ma_base_V221203` | `\"{freq}_D{di}{ma_type}#{timeperiod}T{th}_分类V221203` | 单均线多空与距离分层信号 | [详细文档](signals/tas_ma_base_V221203.md) |\n| `tas_ma_base_V230313` | `\"{freq}_D{di}#{ma_type}#{timeperiod}MO{max_overlap}_BS辅助V230313` | 单均线开平仓辅助信号（带重叠约束） | [详细文档](signals/tas_ma_base_V230313.md) |\n| `tas_ma_cohere_V230512` | `\"{freq}_D{di}SMA{ma_seq}_均线系统V230512` | 均线系统粘合/扩散状态 | [详细文档](signals/tas_ma_cohere_V230512.md) |\n| `tas_ma_round_V221206` | `\"{freq}_D{di}TH{th}#碰{ma_type}#{timeperiod}_BE辅助V221206` | 笔端点触碰均线信号 | [详细文档](signals/tas_ma_round_V221206.md) |\n| `tas_ma_system_V230513` | `\"{freq}_D{di}SMA{ma_seq}_均线系统V230513` | 均线系统多空排列 | [详细文档](signals/tas_ma_system_V230513.md) |\n| `tas_macd_base_V221028` | `\"{freq}_D{di}MACD{fastperiod}#{slowperiod}#{signalperiod}#{key}_BS辅助V221028` | MACD/DIF/DEA 多空与方向信号 | [详细文档](signals/tas_macd_base_V221028.md) |\n| `tas_macd_base_V230320` | `\"{freq}_D{di}MACD{fastperiod}#{slowperiod}#{signalperiod}MO{max_overlap}#{key}_BS辅助V230320` | MACD/DIF/DEA 多空与方向信号（含重叠约束） | [详细文档](signals/tas_macd_base_V230320.md) |\n| `tas_macd_bc_V221201` | `\"{freq}_D{di}N{n}M{m}#MACD{fastperiod}#{slowperiod}#{signalperiod}_BCV221201` | MACD背驰辅助信号 | [详细文档](signals/tas_macd_bc_V221201.md) |\n| `tas_macd_bc_V230803` | `\"{freq}_MACD双分型背驰_BS辅助V230803` | 双分型 MACD 背驰信号 | [详细文档](signals/tas_macd_bc_V230803.md) |\n| `tas_macd_bc_V230804` | `\"{freq}_D{di}MACD背驰_BS辅助V230804` | MACD 黄白线背驰信号 | [详细文档](signals/tas_macd_bc_V230804.md) |\n| `tas_macd_bc_V240307` | `\"{freq}_D{di}N{n}柱子背驰_BS辅助V240307` | MACD 柱背驰计次信号 | [详细文档](signals/tas_macd_bc_V240307.md) |\n| `tas_macd_bc_ubi_V230804` | `\"{freq}_MACD背驰_UBI观察V230804` | 未完成笔 MACD 背驰观察 | [详细文档](signals/tas_macd_bc_ubi_V230804.md) |\n| `tas_macd_bs1_V230312` | `\"{freq}_D{di}MACD{fastperiod}#{slowperiod}#{signalperiod}_BS1辅助V230312` | MACD 辅助一买一卖（笔结构） | [详细文档](signals/tas_macd_bs1_V230312.md) |\n| `tas_macd_bs1_V230313` | `\"{freq}_D{di}MACD{fastperiod}#{slowperiod}#{signalperiod}_BS1辅助V230313` | MACD 红绿柱第一买卖点 | [详细文档](signals/tas_macd_bs1_V230313.md) |\n| `tas_macd_bs1_V230411` | `\"{freq}_D{di}T{tha}#{thb}#{thc}_BS1辅助V230411` | MACD DIF 五笔背驰信号 | [详细文档](signals/tas_macd_bs1_V230411.md) |\n| `tas_macd_bs1_V230412` | `\"{freq}_D{di}T{tha}#{thb}_BS1辅助V230412` | MACD DIF 五笔背驰简化信号 | [详细文档](signals/tas_macd_bs1_V230412.md) |\n| `tas_macd_change_V221105` | `\"{freq}_D{di}K{n}#MACD{fastperiod}#{slowperiod}#{signalperiod}变色次数_BS辅助V221105` | MACD变色次数信号 | [详细文档](signals/tas_macd_change_V221105.md) |\n| `tas_macd_direct_V221106` | `\"{freq}_D{di}K#MACD{fastperiod}#{slowperiod}#{signalperiod}方向_BS辅助V221106` | MACD柱方向信号 | [详细文档](signals/tas_macd_direct_V221106.md) |\n| `tas_macd_dist_V230408` | `\"{freq}_{key}分层W{w}N{n}_BS辅助V230408` | DIF/DEA/MACD等宽分层信号 | [详细文档](signals/tas_macd_dist_V230408.md) |\n| `tas_macd_dist_V230409` | `\"{freq}_{key}远离W{w}N{n}T{t}_BS辅助V230409` | DIF/DEA/MACD远离零轴信号 | [详细文档](signals/tas_macd_dist_V230409.md) |\n| `tas_macd_dist_V230410` | `\"{freq}_{key}多空分层W{w}N{n}_BS辅助V230410` | DIF/DEA/MACD多空分层信号 | [详细文档](signals/tas_macd_dist_V230410.md) |\n| `tas_macd_first_bs_V221201` | `\"{freq}_D{di}MACD{fastperiod}#{slowperiod}#{signalperiod}_BS1辅助V221201` | MACD一买一卖辅助信号 | [详细文档](signals/tas_macd_first_bs_V221201.md) |\n| `tas_macd_first_bs_V221216` | `\"{freq}_D{di}MACD{fastperiod}#{slowperiod}#{signalperiod}_BS1辅助V221216` | MACD 第一买卖点（扩展版） | [详细文档](signals/tas_macd_first_bs_V221216.md) |\n| `tas_macd_power_V221108` | `\"{freq}_D{di}K#MACD{fastperiod}#{slowperiod}#{signalperiod}强弱_BS辅助V221108` | MACD强弱分层信号 | [详细文档](signals/tas_macd_power_V221108.md) |\n| `tas_macd_second_bs_V221201` | `\"{freq}_D{di}MACD{fastperiod}#{slowperiod}#{signalperiod}_BS2辅助V221201` | MACD 第二买卖点 | [详细文档](signals/tas_macd_second_bs_V221201.md) |\n| `tas_macd_xt_V221208` | `\"{freq}_D{di}K#MACD{fastperiod}#{slowperiod}#{signalperiod}形态_BS辅助V221208` | MACD 柱形态信号 | [详细文档](signals/tas_macd_xt_V221208.md) |\n| `tas_rsi_base_V230227` | `\"{freq}_D{di}T{th}RSI{timeperiod}_RSI辅助V230227` | RSI超买超卖与方向信号 | [详细文档](signals/tas_rsi_base_V230227.md) |\n| `tas_rumi_V230704` | `\"{freq}_D{di}F{timeperiod1}S{timeperiod2}R{rumi_window}_BS辅助V230704` | RUMI 零轴切换信号 | [详细文档](signals/tas_rumi_V230704.md) |\n| `tas_sar_base_V230425` | `\"{freq}_D{di}MO{max_overlap}SAR_BS辅助V230425` | SAR 基础多空信号 | [详细文档](signals/tas_sar_base_V230425.md) |\n| `tas_second_bs_V230228` | `\"{freq}_D{di}N{n}#{ma_type}#{timeperiod}_BS2辅助V230228` | 均线结合K线形态的二买二卖辅助 | [详细文档](signals/tas_second_bs_V230228.md) |\n| `tas_second_bs_V230303` | `\"{freq}_D{di}{ma_type}#{timeperiod}_BS2辅助V230303` | 利用笔和均线辅助二买二卖 | [详细文档](signals/tas_second_bs_V230303.md) |\n| `tas_slope_V231019` | `\"{freq}_D{di}DIF{n}斜率T{th}_BS辅助V231019` | DIF 斜率分位多空 | [详细文档](signals/tas_slope_V231019.md) |\n\n<!-- File: .claude/skills/signal-functions/references/signals-vol.md (Tokens: ~478 | Category: anthropic-skill) -->\n# vol 模块信号索引\n\n> 源码: `crates/czsc-signals/src/vol.rs`\n> 共 6 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `vol_double_ma_V230214` | `\"{freq}_D{di}VOL双均线{ma_type}#{t1}#{t2}_BS辅助V230214` | 成交量双均线多空信号 | [详细文档](signals/vol_double_ma_V230214.md) |\n| `vol_gao_di_V221218` | `\"{freq}_D{di}K_量柱V221218` | 高量柱与低量柱信号 | [详细文档](signals/vol_gao_di_V221218.md) |\n| `vol_single_ma_V230214` | `\"{freq}_D{di}VOL#{ma_type}#{timeperiod}_分类V230214` | 单成交量均线多空与方向信号 | [详细文档](signals/vol_single_ma_V230214.md) |\n| `vol_ti_suo_V221216` | `\"{freq}_D{di}K_量柱V221216` | 梯量与缩量柱信号 | [详细文档](signals/vol_ti_suo_V221216.md) |\n| `vol_window_V230731` | `\"{freq}_D{di}W{w}M{m}N{n}_窗口能量V230731` | 窗口成交量分层特征 | [详细文档](signals/vol_window_V230731.md) |\n| `vol_window_V230801` | `\"{freq}_D{di}W{w}_窗口能量V230801` | 窗口成交量先后顺序特征 | [详细文档](signals/vol_window_V230801.md) |\n\n<!-- File: .claude/skills/signal-functions/references/signals-xl.md (Tokens: ~503 | Category: anthropic-skill) -->\n# xl 模块信号索引\n\n> 源码: `crates/czsc-signals/src/xl.rs`\n> 共 7 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `xl_bar_basis_V240411` | `\"{freq}_N{n}_形态V240411` | 吞没形态信号 | [详细文档](signals/xl_bar_basis_V240411.md) |\n| `xl_bar_basis_V240412` | `\"{freq}_N{n}#TH{th}_形态V240412` | 长蜡烛形态信号 | [详细文档](signals/xl_bar_basis_V240412.md) |\n| `xl_bar_position_V240328` | `\"{freq}_N{n}_BS辅助V240328` | 相对高低位置识别信号 | [详细文档](signals/xl_bar_position_V240328.md) |\n| `xl_bar_trend_V240329` | `\"{freq}_N{n}M{m}_十字线反转V240329` | 十字孕线反转信号 | [详细文档](signals/xl_bar_trend_V240329.md) |\n| `xl_bar_trend_V240330` | `\"{freq}_N{n}M{m}#{ma_type}_双均线过滤V240330` | 双均线过滤信号 | [详细文档](signals/xl_bar_trend_V240330.md) |\n| `xl_bar_trend_V240331` | `\"{freq}_N{n}_突破信号V240331` | 通道突破信号 | [详细文档](signals/xl_bar_trend_V240331.md) |\n| `xl_bar_trend_V240623` | `\"{freq}_N{n}通道_突破信号V240623` | 通道突破连续信号 | [详细文档](signals/xl_bar_trend_V240623.md) |\n\n<!-- File: .claude/skills/signal-functions/references/signals-zdy_trader.md (Tokens: ~251 | Category: anthropic-skill) -->\n# zdy_trader 模块信号索引\n\n> 源码: `crates/czsc-signals/src/zdy_trader.rs`\n> 共 4 个信号\n\n| 信号名 | 参数模板 | 说明 | 详细文档 |\n|--------|----------|------|----------|\n| `zdy_stop_loss_V230406` | `` | 笔操作止损逻辑 | [详细文档](signals/zdy_stop_loss_V230406.md) |\n| `zdy_take_profit_V230406` | `` | 笔操作止盈逻辑 | [详细文档](signals/zdy_take_profit_V230406.md) |\n| `zdy_take_profit_V230407` | `` | 按力度提前止盈 | [详细文档](signals/zdy_take_profit_V230407.md) |\n| `zdy_vibrate_V230406` | `` | 中枢震荡短差辅助 | [详细文档](signals/zdy_vibrate_V230406.md) |\n\n<!-- File: .claude/skills/signal-functions/references/signals/adtm_up_dw_line_V230603.md (Tokens: ~384 | Category: anthropic-skill) -->\n# adtm_up_dw_line_V230603：ADTM 能量异动多空信号\n\n> 模块: `ang.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}N{n}M{m}TH{th}_ADTMV230603`\n\n## 信号逻辑\n\n1. 计算 `N` 窗口 `up_sum` 与 `M` 窗口 `dw_sum`；\n2. 计算 `adtm = (up_sum - dw_sum) / max(up_sum, dw_sum)`；\n3. `up_sum > dw_sum` 或 `adtm > th/10` 判 `看多`；\n4. `up_sum < dw_sum` 或 `adtm < th/10` 判 `看空`，否则 `其他`。\n\n## 信号列表示例\n\n- `Signal('60分钟_D1N30M20TH5_ADTMV230603_看多_任意_任意_0')`\n- `Signal('60分钟_D1N30M20TH5_ADTMV230603_看空_任意_任意_0')`\n\n## 参数说明\n\n- `di`：信号计算截止在倒数第 `di` 根K线，默认 `1`；\n- `n`：`up_sum` 窗口，默认 `30`；\n- `m`：`dw_sum` 窗口，默认 `20`；\n- `th`：阈值（除以 10 使用），默认 `5`。\n\n## 对齐说明\n\n与 Python `adtm_up_dw_line_V230603` 的条件优先级与阈值口径一致。\n\n<!-- File: .claude/skills/signal-functions/references/signals/amv_up_dw_line_V230603.md (Tokens: ~309 | Category: anthropic-skill) -->\n# amv_up_dw_line_V230603：AMV 能量多空信号\n\n> 模块: `ang.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}N{n}M{m}_AMV能量V230603`\n\n## 信号逻辑\n\n1. 计算 `N` 与 `M` 窗口成交额加权均价；\n2. 形成 `amv1` 与 `amv2`；\n3. `amv1 > amv2` 判 `看多`，否则 `看空`。\n\n## 信号列表示例\n\n- `Signal('60分钟_D1N30M120_AMV能量V230603_看多_任意_任意_0')`\n- `Signal('60分钟_D1N30M120_AMV能量V230603_看空_任意_任意_0')`\n\n## 参数说明\n\n- `di`：信号计算截止在倒数第 `di` 根K线，默认 `1`；\n- `n`：短窗口，默认 `30`；\n- `m`：长窗口，默认 `120`。\n\n## 对齐说明\n\n与 Python `amv_up_dw_line_V230603` 的加权均价公式一致。\n\n<!-- File: .claude/skills/signal-functions/references/signals/asi_up_dw_line_V230603.md (Tokens: ~321 | Category: anthropic-skill) -->\n# asi_up_dw_line_V230603：ASI 多空信号\n\n> 模块: `ang.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}N{n}P{p}_ASI多空V230603`\n\n## 信号逻辑\n\n1. 基于最近 `p` 根K线计算 SI 序列并累加得 ASI；\n2. 将最新 ASI 与 `p` 窗口 ASI 均值比较；\n3. `asi_last > asi_mean` 判 `看多`，否则 `看空`。\n\n## 信号列表示例\n\n- `Signal('60分钟_D1N30P120_ASI多空V230603_看多_任意_任意_0')`\n- `Signal('60分钟_D1N30P120_ASI多空V230603_看空_任意_任意_0')`\n\n## 参数说明\n\n- `di`：信号计算截止在倒数第 `di` 根K线，默认 `1`；\n- `n`：SI 公式中的常数项，默认 `30`；\n- `p`：窗口长度，默认 `120`。\n\n## 对齐说明\n\n按 Python `asi_up_dw_line_V230603` 的原始向量公式逐项对齐实现。\n\n<!-- File: .claude/skills/signal-functions/references/signals/bar_accelerate_V221110.md (Tokens: ~330 | Category: anthropic-skill) -->\n# bar_accelerate_V221110：区间加速走势判定\n\n> 模块: `bar.rs` | 类别: `kline`\n\n## 参数模板\n\n`\"{freq}_D{di}W{window}_加速V221110`\n\n## 信号逻辑\n\n1. 取倒数第 `di` 根截止的最近 `window` 根K线，计算区间最高/最低；\n2. 若末根收盘位于区间上20%且阳线占比>=80%，判 `上涨`；\n3. 若末根收盘位于区间下20%且阴线占比>=80%，判 `下跌`，否则 `其他`。\n\n## 信号列表示例\n\n- `Signal('60分钟_D1W13_加速V221110_上涨_任意_任意_0')`\n- `Signal('60分钟_D1W13_加速V221110_下跌_任意_任意_0')`\n\n## 参数说明\n\n- `di`：倒数第 `di` 根K线，默认 `1`；\n- `window`：观察窗口长度，默认 `10`。\n\n## 对齐说明\n\n收盘位置与阳阴占比阈值对齐 Python `bar_accelerate_V221110`。\n\n<!-- ... +229 more modular skills available via /api/skills/waditu/czsc?path={path} -->\n</yakaai_skills>"}