stock-analysis-plugin 0.2.0__tar.gz → 0.2.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (166) hide show
  1. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/PKG-INFO +4 -4
  2. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/README.md +3 -3
  3. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/dsh/index.ts +3 -3
  4. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/dsh/package.json +1 -1
  5. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/hermes/schemas.py +3 -3
  6. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/openclaw/index.ts +3 -3
  7. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/openclaw/package.json +1 -1
  8. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/package-lock.json +2 -2
  9. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/package.json +1 -1
  10. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/pi/index.ts +3 -3
  11. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/pyproject.toml +1 -1
  12. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/skills/dragon-head/SKILL.md +1 -1
  13. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/skills/emotion-cycle/SKILL.md +1 -1
  14. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tests/e2e/test_provider_network.py +1 -1
  15. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tests/test_stock_data_failover.py +360 -11
  16. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tests/test_stock_data_short_term.py +109 -0
  17. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tests/test_trading_calendar.py +26 -0
  18. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tools/screener.py +3 -2
  19. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tools/stock_data.py +320 -61
  20. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tools/trading_calendar.py +20 -4
  21. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/.github/release.yml +0 -0
  22. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/.github/workflows/autofix.yml +0 -0
  23. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/.github/workflows/ci.yml +0 -0
  24. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/.github/workflows/publish.yml +0 -0
  25. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/.gitignore +0 -0
  26. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/.npmignore +0 -0
  27. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/AGENTS.md +0 -0
  28. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/CLAUDE.md +0 -0
  29. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/docs/hermes-integration.en.md +0 -0
  30. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/docs/hermes-integration.md +0 -0
  31. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/docs/openclaw-integration.md +0 -0
  32. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/docs/pi-integration.en.md +0 -0
  33. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/docs/pi-integration.md +0 -0
  34. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/dsh/README.md +0 -0
  35. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/dsh/cordis.patch.yml +0 -0
  36. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/hermes/__init__.py +0 -0
  37. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/hermes/plugin.yaml +0 -0
  38. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/hermes/tools.py +0 -0
  39. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/openclaw/.npmignore +0 -0
  40. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/openclaw/README.md +0 -0
  41. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/openclaw/openclaw.plugin.json +0 -0
  42. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/requirements-dev.txt +0 -0
  43. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/ruff.toml +0 -0
  44. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/schemas/market_review_schema.json +0 -0
  45. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/schemas/report_schema.json +0 -0
  46. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/scripts/setup-python.mjs +0 -0
  47. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/scripts/sync-version.sh +0 -0
  48. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/scripts/venv-python.mjs +0 -0
  49. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/skills/bottom-volume/SKILL.md +0 -0
  50. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/skills/bottom-volume/scripts/gather.py +0 -0
  51. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/skills/box-oscillation/SKILL.md +0 -0
  52. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/skills/box-oscillation/scripts/gather.py +0 -0
  53. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/skills/bull-trend/SKILL.md +0 -0
  54. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/skills/bull-trend/scripts/gather.py +0 -0
  55. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/skills/chan-theory/SKILL.md +0 -0
  56. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/skills/chan-theory/scripts/gather.py +0 -0
  57. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/skills/dragon-head/scripts/gather.py +0 -0
  58. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/skills/emotion-cycle/scripts/gather.py +0 -0
  59. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/skills/event-driven/SKILL.md +0 -0
  60. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/skills/event-driven/scripts/gather.py +0 -0
  61. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/skills/expectation-repricing/SKILL.md +0 -0
  62. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/skills/expectation-repricing/scripts/gather.py +0 -0
  63. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/skills/growth-quality/SKILL.md +0 -0
  64. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/skills/growth-quality/scripts/gather.py +0 -0
  65. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/skills/hot-theme/SKILL.md +0 -0
  66. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/skills/hot-theme/scripts/gather.py +0 -0
  67. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/skills/ma-crossover/SKILL.md +0 -0
  68. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/skills/ma-crossover/scripts/gather.py +0 -0
  69. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/skills/market-review/SKILL.md +0 -0
  70. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/skills/market-review/scripts/gather.py +0 -0
  71. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/skills/one-yang-three-yin/SKILL.md +0 -0
  72. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/skills/one-yang-three-yin/scripts/gather.py +0 -0
  73. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/skills/shrink-pullback/SKILL.md +0 -0
  74. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/skills/shrink-pullback/scripts/gather.py +0 -0
  75. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/skills/stock-analysis/SKILL.md +0 -0
  76. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/skills/stock-analysis/references/short-term-trading.md +0 -0
  77. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/skills/stock-analysis/scripts/gather.py +0 -0
  78. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/skills/stock-screener/SKILL.md +0 -0
  79. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/skills/stock-screener/scripts/gather.py +0 -0
  80. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/skills/strategy-backtest/SKILL.md +0 -0
  81. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/skills/strategy-backtest/scripts/gather.py +0 -0
  82. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/skills/volume-breakout/SKILL.md +0 -0
  83. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/skills/volume-breakout/scripts/gather.py +0 -0
  84. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/skills/wave-theory/SKILL.md +0 -0
  85. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/skills/wave-theory/scripts/gather.py +0 -0
  86. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/skills/wisburg-research/SKILL.md +0 -0
  87. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/strategies/examples/bottom_volume.yaml +0 -0
  88. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/strategies/examples/box_oscillation.yaml +0 -0
  89. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/strategies/examples/bull_trend.yaml +0 -0
  90. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/strategies/examples/dragon_head.yaml +0 -0
  91. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/strategies/examples/emotion_cycle.yaml +0 -0
  92. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/strategies/examples/ma_crossover.yaml +0 -0
  93. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/strategies/examples/rsi_oversold.yaml +0 -0
  94. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/strategies/examples/shrink_pullback.yaml +0 -0
  95. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/strategies/examples/volume_breakout.yaml +0 -0
  96. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/templates/_macros.j2 +0 -0
  97. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/templates/market_review/full.md.j2 +0 -0
  98. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/templates/stock_analysis/brief.md.j2 +0 -0
  99. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/templates/stock_analysis/full.md.j2 +0 -0
  100. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tests/__init__.py +0 -0
  101. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tests/_stubs/dsh-tools.ts +0 -0
  102. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tests/_stubs/openclaw-sdk.ts +0 -0
  103. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tests/_stubs/typebox.ts +0 -0
  104. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tests/conftest.py +0 -0
  105. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tests/e2e/dsh_tool_spy.mjs +0 -0
  106. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tests/e2e/host_smoke.mjs +0 -0
  107. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tests/e2e/test_dsh_e2e.ts +0 -0
  108. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tests/e2e/test_hermes_llm.py +0 -0
  109. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tests/e2e/test_host_to_python.py +0 -0
  110. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tests/e2e/test_openclaw_e2e.ts +0 -0
  111. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tests/e2e/test_pi_e2e.ts +0 -0
  112. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tests/e2e/test_pi_llm.ts +0 -0
  113. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tests/test_alert_rules.py +0 -0
  114. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tests/test_anomaly_detect.py +0 -0
  115. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tests/test_backtest.py +0 -0
  116. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tests/test_backtest_advanced.py +0 -0
  117. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tests/test_capabilities.py +0 -0
  118. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tests/test_diagnostics.py +0 -0
  119. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tests/test_dsh_integration.ts +0 -0
  120. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tests/test_gather.py +0 -0
  121. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tests/test_hermes_integration.py +0 -0
  122. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tests/test_import_parser.py +0 -0
  123. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tests/test_market_regime.py +0 -0
  124. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tests/test_market_review.py +0 -0
  125. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tests/test_openclaw_integration.ts +0 -0
  126. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tests/test_pattern.py +0 -0
  127. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tests/test_pi_integration.ts +0 -0
  128. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tests/test_position_context.py +0 -0
  129. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tests/test_report_renderer.py +0 -0
  130. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tests/test_risk_screening.py +0 -0
  131. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tests/test_screener.py +0 -0
  132. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tests/test_search_intel.py +0 -0
  133. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tests/test_sentiment.py +0 -0
  134. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tests/test_signal_tracker.py +0 -0
  135. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tests/test_skill_workflows.py +0 -0
  136. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tests/test_stock_data.py +0 -0
  137. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tests/test_subproc.py +0 -0
  138. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tests/test_technical.py +0 -0
  139. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tests/test_watchlist.py +0 -0
  140. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tests/test_watchlist_context.py +0 -0
  141. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tools/__init__.py +0 -0
  142. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tools/_subproc.py +0 -0
  143. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tools/alert_rules.py +0 -0
  144. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tools/anomaly_detect.py +0 -0
  145. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tools/backtest.py +0 -0
  146. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tools/capabilities.py +0 -0
  147. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tools/diagnostics.py +0 -0
  148. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tools/gather.py +0 -0
  149. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tools/import_parser.py +0 -0
  150. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tools/market_regime.py +0 -0
  151. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tools/market_review.py +0 -0
  152. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tools/name_resolver.py +0 -0
  153. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tools/pattern.py +0 -0
  154. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tools/position_context.py +0 -0
  155. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tools/report_renderer.py +0 -0
  156. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tools/requirements.txt +0 -0
  157. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tools/risk_screening.py +0 -0
  158. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tools/search_intel.py +0 -0
  159. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tools/signal_tracker.py +0 -0
  160. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tools/technical.py +0 -0
  161. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tools/volume_analysis.py +0 -0
  162. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tools/watchlist.py +0 -0
  163. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tools/watchlist_context.py +0 -0
  164. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/tsconfig.json +0 -0
  165. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/typings/openclaw/index.d.ts +0 -0
  166. {stock_analysis_plugin-0.2.0 → stock_analysis_plugin-0.2.2}/typings/pi-agent/index.d.ts +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: stock-analysis-plugin
3
- Version: 0.2.0
3
+ Version: 0.2.2
4
4
  Summary: Hermes plugin for stock analysis, screening, and strategy backtesting across A/HK/US/JP/KR/TW markets
5
5
  Project-URL: Homepage, https://github.com/Weaxs/stock-analysis-plugin
6
6
  Project-URL: Repository, https://github.com/Weaxs/stock-analysis-plugin
@@ -266,7 +266,7 @@ Agent 会自动调用行情 → 技术面 → 基本面 → 资金面 → 消息
266
266
  | 工具 | 说明 |
267
267
  |------|------|
268
268
  | `get_kline` | K 线数据(OHLCV),支持日/周/月线 |
269
- | `get_quote` | 实时行情快照 |
269
+ | `get_quote` | 实时行情快照(非交易时段返回最近交易日收盘价并以 as_of/stale 标注) |
270
270
  | `get_capital_flow` | 资金流向(仅 A 股) |
271
271
  | `get_news` | 个股相关新闻 |
272
272
  | `get_financials` | 财务指标 |
@@ -277,8 +277,8 @@ Agent 会自动调用行情 → 技术面 → 基本面 → 资金面 → 消息
277
277
  | `get_sector_constituents` | 板块成分股查询(仅 A 股,板块名模糊匹配) |
278
278
  | `resolve_stock_sectors` | 个股所属板块查询(A 股行业+概念 / 港股 GICS) |
279
279
  | `get_market_stats` | 市场统计(涨跌家数、涨停等) |
280
- | `get_limit_up_pool` | 涨停池/涨停板复盘(连板数、封板资金、炸板次数等,仅 A 股) |
281
- | `get_dragon_tiger` | 龙虎榜(净买额/上榜原因/解读,仅 A 股) |
280
+ | `get_limit_up_pool` | 涨停池/涨停板复盘(连板数、封板资金、炸板次数等,仅 A 股;非交易日自动回退到最近交易日并以 requested_date/stale 标注) |
281
+ | `get_dragon_tiger` | 龙虎榜(净买额/上榜原因/解读,仅 A 股;非交易日自动回退到最近交易日并以 requested_date/stale 标注) |
282
282
  | `get_hot_stocks` | 全市场人气热搜榜(东财→雪球→百度,仅 A 股) |
283
283
  | `get_fundamental_context` | 基本面综合上下文 |
284
284
 
@@ -236,7 +236,7 @@ Agent 会自动调用行情 → 技术面 → 基本面 → 资金面 → 消息
236
236
  | 工具 | 说明 |
237
237
  |------|------|
238
238
  | `get_kline` | K 线数据(OHLCV),支持日/周/月线 |
239
- | `get_quote` | 实时行情快照 |
239
+ | `get_quote` | 实时行情快照(非交易时段返回最近交易日收盘价并以 as_of/stale 标注) |
240
240
  | `get_capital_flow` | 资金流向(仅 A 股) |
241
241
  | `get_news` | 个股相关新闻 |
242
242
  | `get_financials` | 财务指标 |
@@ -247,8 +247,8 @@ Agent 会自动调用行情 → 技术面 → 基本面 → 资金面 → 消息
247
247
  | `get_sector_constituents` | 板块成分股查询(仅 A 股,板块名模糊匹配) |
248
248
  | `resolve_stock_sectors` | 个股所属板块查询(A 股行业+概念 / 港股 GICS) |
249
249
  | `get_market_stats` | 市场统计(涨跌家数、涨停等) |
250
- | `get_limit_up_pool` | 涨停池/涨停板复盘(连板数、封板资金、炸板次数等,仅 A 股) |
251
- | `get_dragon_tiger` | 龙虎榜(净买额/上榜原因/解读,仅 A 股) |
250
+ | `get_limit_up_pool` | 涨停池/涨停板复盘(连板数、封板资金、炸板次数等,仅 A 股;非交易日自动回退到最近交易日并以 requested_date/stale 标注) |
251
+ | `get_dragon_tiger` | 龙虎榜(净买额/上榜原因/解读,仅 A 股;非交易日自动回退到最近交易日并以 requested_date/stale 标注) |
252
252
  | `get_hot_stocks` | 全市场人气热搜榜(东财→雪球→百度,仅 A 股) |
253
253
  | `get_fundamental_context` | 基本面综合上下文 |
254
254
 
@@ -147,7 +147,7 @@ export function apply(ctx: Context) {
147
147
  ctx.tools.register(
148
148
  pyTool({
149
149
  name: "get_quote",
150
- description: "获取股票实时行情报价(现价、涨跌幅、量比等)。支持A股、港股、美股、日股、韩股、台股",
150
+ description: "获取股票实时行情报价(现价、涨跌幅、量比等)。支持A股、港股、美股、日股、韩股、台股;非交易时段返回最近交易日收盘价并以 as_of/stale 标注",
151
151
  parameters: {
152
152
  symbol: { type: "string", required: true, description: "股票代码(A股如600519,美股如AAPL,港股如00700.HK)" },
153
153
  },
@@ -402,7 +402,7 @@ export function apply(ctx: Context) {
402
402
  description:
403
403
  "获取A股涨停池/涨停板复盘——当日涨停个股,含连板数、封板资金、炸板次数、首末次封板时间、所属行业。短线情绪与龙头战法核心数据",
404
404
  parameters: {
405
- date: { type: "string", description: "日期(YYYYMMDD),默认当日" },
405
+ date: { type: "string", description: "日期(YYYYMMDD),默认当日;非交易日或未来日期自动回退到最近交易日(返回含 requested_date 与 stale 标注)" },
406
406
  },
407
407
  script: "stock_data.py",
408
408
  argv: (p) => {
@@ -419,7 +419,7 @@ export function apply(ctx: Context) {
419
419
  description:
420
420
  "获取A股龙虎榜——上榜个股净买额/买入额/卖出额/上榜原因/解读,可按个股过滤",
421
421
  parameters: {
422
- date: { type: "string", description: "日期(YYYY-MM-DD),默认当日" },
422
+ date: { type: "string", description: "日期(YYYY-MM-DD),默认当日;非交易日或未来日期自动回退到最近交易日(返回含 requested_date 与 stale 标注)" },
423
423
  symbol: { type: "string", description: "A股股票代码(可选,按个股过滤),如 600519" },
424
424
  top: { type: "number", description: "返回前N条,默认 20" },
425
425
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@weaxs/dsh-stock-analysis",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "description": "DeepSeek Harness (dsh) plugin for stock analysis, screening, and strategy backtesting across A/HK/US/JP/KR/TW markets",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -24,7 +24,7 @@ TOOL_SCHEMAS = [
24
24
  },
25
25
  {
26
26
  "name": "get_quote",
27
- "description": "获取股票实时行情报价(现价、涨跌幅、量比等)。支持A股、港股、美股、日股、韩股、台股",
27
+ "description": "获取股票实时行情报价(现价、涨跌幅、量比等)。支持A股、港股、美股、日股、韩股、台股;非交易时段返回最近交易日收盘价并以 as_of/stale 标注",
28
28
  "parameters": {
29
29
  "type": "object",
30
30
  "properties": {
@@ -246,7 +246,7 @@ TOOL_SCHEMAS = [
246
246
  "properties": {
247
247
  "date": {
248
248
  "type": "string",
249
- "description": "日期(YYYYMMDD),默认当日",
249
+ "description": "日期(YYYYMMDD),默认当日;非交易日或未来日期自动回退到最近交易日(返回含 requested_date 与 stale 标注)",
250
250
  },
251
251
  },
252
252
  },
@@ -259,7 +259,7 @@ TOOL_SCHEMAS = [
259
259
  "properties": {
260
260
  "date": {
261
261
  "type": "string",
262
- "description": "日期(YYYY-MM-DD),默认当日",
262
+ "description": "日期(YYYY-MM-DD),默认当日;非交易日或未来日期自动回退到最近交易日(返回含 requested_date 与 stale 标注)",
263
263
  },
264
264
  "symbol": {
265
265
  "type": "string",
@@ -88,7 +88,7 @@ export default definePluginEntry({
88
88
 
89
89
  api.registerTool({
90
90
  name: "get_quote",
91
- description: "获取股票实时行情报价(现价、涨跌幅、量比等)。支持A股、港股、美股、日股、韩股、台股",
91
+ description: "获取股票实时行情报价(现价、涨跌幅、量比等)。支持A股、港股、美股、日股、韩股、台股;非交易时段返回最近交易日收盘价并以 as_of/stale 标注",
92
92
  parameters: Type.Object({
93
93
  symbol: Type.String({ description: "股票代码(A股如600519,美股如AAPL,港股如00700.HK)" }),
94
94
  }),
@@ -363,7 +363,7 @@ export default definePluginEntry({
363
363
  "获取A股涨停池/涨停板复盘——当日涨停个股,含连板数、封板资金、炸板次数、首末次封板时间、所属行业。短线情绪与龙头战法核心数据",
364
364
  parameters: Type.Object({
365
365
  date: Type.Optional(
366
- Type.String({ description: "日期(YYYYMMDD),默认当日" })
366
+ Type.String({ description: "日期(YYYYMMDD),默认当日;非交易日或未来日期自动回退到最近交易日(返回含 requested_date 与 stale 标注)" })
367
367
  ),
368
368
  }),
369
369
  async execute(_id, params) {
@@ -380,7 +380,7 @@ export default definePluginEntry({
380
380
  "获取A股龙虎榜——上榜个股净买额/买入额/卖出额/上榜原因/解读,可按个股过滤",
381
381
  parameters: Type.Object({
382
382
  date: Type.Optional(
383
- Type.String({ description: "日期(YYYY-MM-DD),默认当日" })
383
+ Type.String({ description: "日期(YYYY-MM-DD),默认当日;非交易日或未来日期自动回退到最近交易日(返回含 requested_date 与 stale 标注)" })
384
384
  ),
385
385
  symbol: Type.Optional(
386
386
  Type.String({ description: "A股股票代码(可选,按个股过滤),如 600519" })
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@weaxs/openclaw-stock-analysis",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "description": "OpenClaw plugin for stock analysis, screening, and strategy backtesting across A/HK/US/JP/KR/TW markets",
5
5
  "type": "module",
6
6
  "main": "./index.ts",
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@weaxs/stock-analysis-plugin",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@weaxs/stock-analysis-plugin",
9
- "version": "0.2.0",
9
+ "version": "0.2.2",
10
10
  "hasInstallScript": true,
11
11
  "license": "MIT",
12
12
  "devDependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@weaxs/stock-analysis-plugin",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "description": "Pi Agent extension for stock analysis, screening, and strategy backtesting across A/HK/US markets",
5
5
  "type": "module",
6
6
  "main": "./pi/index.ts",
@@ -63,7 +63,7 @@ export default (pi: ExtensionAPI) => {
63
63
  pi.registerTool({
64
64
  name: "get_quote",
65
65
  description:
66
- "获取股票实时行情报价(现价、涨跌幅、量比等)。支持A股、港股、美股、日股、韩股、台股",
66
+ "获取股票实时行情报价(现价、涨跌幅、量比等)。支持A股、港股、美股、日股、韩股、台股;非交易时段返回最近交易日收盘价并以 as_of/stale 标注",
67
67
  parameters: {
68
68
  type: "object",
69
69
  properties: {
@@ -401,7 +401,7 @@ export default (pi: ExtensionAPI) => {
401
401
  properties: {
402
402
  date: {
403
403
  type: "string",
404
- description: "日期(YYYYMMDD),默认当日",
404
+ description: "日期(YYYYMMDD),默认当日;非交易日或未来日期自动回退到最近交易日(返回含 requested_date 与 stale 标注)",
405
405
  },
406
406
  },
407
407
  },
@@ -423,7 +423,7 @@ export default (pi: ExtensionAPI) => {
423
423
  properties: {
424
424
  date: {
425
425
  type: "string",
426
- description: "日期(YYYY-MM-DD),默认当日",
426
+ description: "日期(YYYY-MM-DD),默认当日;非交易日或未来日期自动回退到最近交易日(返回含 requested_date 与 stale 标注)",
427
427
  },
428
428
  symbol: {
429
429
  type: "string",
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "stock-analysis-plugin"
3
- version = "0.2.0"
3
+ version = "0.2.2"
4
4
  description = "Hermes plugin for stock analysis, screening, and strategy backtesting across A/HK/US/JP/KR/TW markets"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.10"
@@ -24,7 +24,7 @@ python3 scripts/gather.py <symbol>
24
24
  同时用 resolve_stock_sectors 确认个股所属板块,再用 get_sector_constituents 拉取同板块个股列表——后续「龙头 vs 跟风」的强弱对比都在这个板块池内进行。
25
25
  获取不到板块池或池内个股同期表现时,只评估候选股的强势特征,不给出“龙头/龙一”结论。
26
26
 
27
- 短线情绪与资金席位补充:`get_limit_up_pool`(涨停池的连板数、首末次封板时间、封板资金、炸板次数)用于确认板块内个股的高度与封板质量;`get_dragon_tiger`(龙虎榜)用于查看上榜个股的席位净买额与上榜原因。
27
+ 短线情绪与资金席位补充:`get_limit_up_pool`(涨停池的连板数、首末次封板时间、封板资金、炸板次数)用于确认板块内个股的高度与封板质量;`get_dragon_tiger`(龙虎榜)用于查看上榜个股的席位净买额与上榜原因。两者在非交易日或未来日期会自动回退到最近交易日的数据(返回含 `requested_date` 与 `stale: true` 标注),解读时以 `date` 字段的实际数据日期为准,不得把回退数据当成请求日当日数据。
28
28
 
29
29
  ### 2. 相对强弱验证
30
30
 
@@ -17,7 +17,7 @@ description: 市场情绪周期:用市场宽度、涨跌停、成交额和热
17
17
  python3 scripts/gather.py [A|HK|US]
18
18
  ```
19
19
 
20
- A 股情绪另有两个直接数据源:`get_limit_up_pool`(涨停池:连板梯队高度、炸板率、封板资金)与 `get_hot_stocks`(全市场人气热搜榜)。
20
+ A 股情绪另有两个直接数据源:`get_limit_up_pool`(涨停池:连板梯队高度、炸板率、封板资金)与 `get_hot_stocks`(全市场人气热搜榜)。`get_limit_up_pool` 在非交易日或未来日期会回退到最近交易日数据(返回含 `requested_date` 与 `stale: true`),情绪判断以其 `date` 字段的实际数据日期为准。
21
21
 
22
22
  ### 2. 情绪指标
23
23
 
@@ -107,7 +107,7 @@ class TestScreenerNetwork:
107
107
  assert 0 <= sent["score"] <= 100, f"sentiment score out of range: {sent}"
108
108
 
109
109
  def test_screen_a_with_sentiment(self):
110
- out = _run_cli("screener.py", ["screen", "--market", "A", "--top", "3"], timeout=180)
110
+ out = _run_cli("screener.py", ["screen", "--market", "A", "--top", "3"], timeout=300)
111
111
  assert isinstance(out, dict) and "candidates" in out, f"unexpected shape: {list(out)}"
112
112
  assert out["l2_enabled"] is False
113
113
  self._assert_sentiment(out)