aishare-txt 2025.11.6.13__tar.gz → 2025.11.24.23__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 (34) hide show
  1. {aishare_txt-2025.11.6.13 → aishare_txt-2025.11.24.23}/AIShareTxt/__init__.py +1 -1
  2. {aishare_txt-2025.11.6.13 → aishare_txt-2025.11.24.23}/AIShareTxt/core/analyzer.py +58 -17
  3. {aishare_txt-2025.11.6.13 → aishare_txt-2025.11.24.23}/AIShareTxt/core/config.py +2 -2
  4. {aishare_txt-2025.11.6.13 → aishare_txt-2025.11.24.23}/AIShareTxt/core/report_generator.py +67 -15
  5. {aishare_txt-2025.11.6.13 → aishare_txt-2025.11.24.23}/AIShareTxt/docs/README_/351/207/215/346/236/204/350/257/264/346/230/216.md +1 -1
  6. {aishare_txt-2025.11.6.13 → aishare_txt-2025.11.24.23}/AIShareTxt/indicators/technical_indicators.py +17 -7
  7. {aishare_txt-2025.11.6.13 → aishare_txt-2025.11.24.23}/AIShareTxt/utils/utils.py +21 -4
  8. {aishare_txt-2025.11.6.13/aishare_txt.egg-info → aishare_txt-2025.11.24.23}/PKG-INFO +5 -4
  9. {aishare_txt-2025.11.6.13 → aishare_txt-2025.11.24.23}/README.md +4 -4
  10. {aishare_txt-2025.11.6.13 → aishare_txt-2025.11.24.23/aishare_txt.egg-info}/PKG-INFO +5 -4
  11. {aishare_txt-2025.11.6.13 → aishare_txt-2025.11.24.23}/aishare_txt.egg-info/requires.txt +1 -0
  12. {aishare_txt-2025.11.6.13 → aishare_txt-2025.11.24.23}/requirements.txt +1 -0
  13. {aishare_txt-2025.11.6.13 → aishare_txt-2025.11.24.23}/setup.py +1 -1
  14. {aishare_txt-2025.11.6.13 → aishare_txt-2025.11.24.23}/AIShareTxt/ai/__init__.py +0 -0
  15. {aishare_txt-2025.11.6.13 → aishare_txt-2025.11.24.23}/AIShareTxt/ai/client.py +0 -0
  16. {aishare_txt-2025.11.6.13 → aishare_txt-2025.11.24.23}/AIShareTxt/ai/providers/__init__.py +0 -0
  17. {aishare_txt-2025.11.6.13 → aishare_txt-2025.11.24.23}/AIShareTxt/core/__init__.py +0 -0
  18. {aishare_txt-2025.11.6.13 → aishare_txt-2025.11.24.23}/AIShareTxt/core/data_fetcher.py +0 -0
  19. {aishare_txt-2025.11.6.13 → aishare_txt-2025.11.24.23}/AIShareTxt/docs/AI_INTEGRATION.md +0 -0
  20. {aishare_txt-2025.11.6.13 → aishare_txt-2025.11.24.23}/AIShareTxt/docs//351/207/215/346/236/204/345/256/214/346/210/220/346/200/273/347/273/223.md" +0 -0
  21. {aishare_txt-2025.11.6.13 → aishare_txt-2025.11.24.23}/AIShareTxt/examples/legacy_api.py +0 -0
  22. {aishare_txt-2025.11.6.13 → aishare_txt-2025.11.24.23}/AIShareTxt/indicators/__init__.py +0 -0
  23. {aishare_txt-2025.11.6.13 → aishare_txt-2025.11.24.23}/AIShareTxt/tests/__init__.py +0 -0
  24. {aishare_txt-2025.11.6.13 → aishare_txt-2025.11.24.23}/AIShareTxt/utils/__init__.py +0 -0
  25. {aishare_txt-2025.11.6.13 → aishare_txt-2025.11.24.23}/AIShareTxt/utils/stock_list.py +0 -0
  26. {aishare_txt-2025.11.6.13 → aishare_txt-2025.11.24.23}/LICENSE +0 -0
  27. {aishare_txt-2025.11.6.13 → aishare_txt-2025.11.24.23}/MANIFEST.in +0 -0
  28. {aishare_txt-2025.11.6.13 → aishare_txt-2025.11.24.23}/aishare_txt.egg-info/SOURCES.txt +0 -0
  29. {aishare_txt-2025.11.6.13 → aishare_txt-2025.11.24.23}/aishare_txt.egg-info/dependency_links.txt +0 -0
  30. {aishare_txt-2025.11.6.13 → aishare_txt-2025.11.24.23}/aishare_txt.egg-info/entry_points.txt +0 -0
  31. {aishare_txt-2025.11.6.13 → aishare_txt-2025.11.24.23}/aishare_txt.egg-info/not-zip-safe +0 -0
  32. {aishare_txt-2025.11.6.13 → aishare_txt-2025.11.24.23}/aishare_txt.egg-info/top_level.txt +0 -0
  33. {aishare_txt-2025.11.6.13 → aishare_txt-2025.11.24.23}/requirements-dev.txt +0 -0
  34. {aishare_txt-2025.11.6.13 → aishare_txt-2025.11.24.23}/setup.cfg +0 -0
@@ -5,7 +5,7 @@ AIShareTxt - 股票技术指标分析工具包
5
5
  AI集成分析和报告生成功能。
6
6
  """
7
7
 
8
- __version__ = "2025.11.06.13"
8
+ __version__ = "2025.11.24.23"
9
9
  __author__ = "AIShareTxt Team"
10
10
 
11
11
  # 导入核心类
@@ -9,7 +9,7 @@ import warnings
9
9
  from .data_fetcher import StockDataFetcher
10
10
  from ..indicators.technical_indicators import TechnicalIndicators
11
11
  from .report_generator import ReportGenerator
12
- from ..utils.utils import Logger, LoggerManager, Utils, DataValidator, ErrorHandler
12
+ from ..utils.utils import Logger, LoggerManager, Utils, DataValidator, ErrorHandler, PerformanceMonitor
13
13
  from .config import IndicatorConfig as Config
14
14
 
15
15
  warnings.filterwarnings('ignore')
@@ -120,9 +120,10 @@ class StockAnalyzer:
120
120
  # 生成报告
121
121
  self.logger.info("生成分析报告...")
122
122
  report = self.report_generator.generate_report(
123
- stock_code,
124
- self.indicators,
125
- self.stock_info
123
+ stock_code,
124
+ self.indicators,
125
+ self.stock_info,
126
+ self.stock_data
126
127
  )
127
128
 
128
129
  if monitor:
@@ -172,9 +173,10 @@ class StockAnalyzer:
172
173
 
173
174
  # 生成报告(不包含基本信息和资金流)
174
175
  report = self.report_generator.generate_report(
175
- stock_code,
176
- self.indicators,
177
- None # 不包含基本信息
176
+ stock_code,
177
+ self.indicators,
178
+ None, # 不包含基本信息
179
+ self.stock_data
178
180
  )
179
181
 
180
182
  return report
@@ -312,7 +314,7 @@ class StockAnalyzer:
312
314
  'Bollinger Bands': f"参数: {self.config.BOLLINGER_BANDS_CONFIG}"
313
315
  },
314
316
  '量价指标': {
315
- 'VWAP': f"成交量加权平均价,周期: {self.config.VWAP_PERIOD}",
317
+ 'VWMA': f"成交量加权移动平均,周期: {self.config.VWMA_PERIOD}",
316
318
  'OBV': "能量潮指标"
317
319
  },
318
320
  '趋势强度': {
@@ -382,6 +384,15 @@ def quick_test(stock_code):
382
384
 
383
385
  # 执行分析
384
386
  report = analyzer.analyze_stock(stock_code, enable_performance_monitor=True)
387
+
388
+ # 检查分析结果是否为错误信息
389
+ if report and (report.startswith("错误:") or report.startswith("数据质量验证失败") or
390
+ report.startswith("指标验证失败") or report.startswith("分析过程中出错") or
391
+ "无数据" in report or "计算失败" in report):
392
+ print("\n" + report)
393
+ logger.error(f"快速测试股票 {stock_code} 失败: {report}")
394
+ return False
395
+
385
396
  print("\n" + report)
386
397
 
387
398
  # 显示分析摘要
@@ -403,8 +414,45 @@ def quick_test(stock_code):
403
414
 
404
415
  def main():
405
416
  """主函数"""
406
- analyzer = StockAnalyzer()
407
417
  utils = Utils()
418
+
419
+ # 首先检查命令行参数(包括帮助参数)
420
+ stock_code = utils.parse_command_line_args()
421
+ if stock_code:
422
+ # 如果提供了股票代码,则初始化分析器并进行快速测试
423
+ analyzer = StockAnalyzer()
424
+ logger = LoggerManager.get_logger('stock_analyzer')
425
+
426
+ print("股票技术指标分析器 (重构版)")
427
+ print(utils.create_separator())
428
+ print("提示:可以在命令行直接运行 python stock_analyzer.py 000001 来快速测试")
429
+ logger.info("股票技术指标分析器启动")
430
+
431
+ # 验证分析环境
432
+ print("\n验证分析环境...")
433
+ logger.info("开始验证分析环境")
434
+ is_valid, errors = analyzer.validate_analysis_environment()
435
+ if not is_valid:
436
+ print("环境验证失败:")
437
+ logger.error("环境验证失败")
438
+ for error in errors:
439
+ print(f" [错误] {error}")
440
+ logger.error(f"环境错误: {error}")
441
+ return
442
+ else:
443
+ print("环境验证通过")
444
+ logger.info("环境验证通过")
445
+
446
+ logger.info(f"使用命令行参数启动快速测试: {stock_code}")
447
+ result = quick_test(stock_code)
448
+ if result:
449
+ print("\n分析完成!")
450
+ else:
451
+ print("\n分析失败,请检查日志获取详细信息。")
452
+ return
453
+
454
+ # 如果没有提供命令行参数,则进入交互模式
455
+ analyzer = StockAnalyzer()
408
456
  logger = LoggerManager.get_logger('stock_analyzer')
409
457
 
410
458
  print("股票技术指标分析器 (重构版)")
@@ -424,16 +472,9 @@ def main():
424
472
  logger.error(f"环境错误: {error}")
425
473
  return
426
474
  else:
427
- print("环境验证通过")
475
+ print("环境验证通过")
428
476
  logger.info("环境验证通过")
429
477
 
430
- # 检查命令行参数
431
- stock_code = utils.parse_command_line_args()
432
- if stock_code:
433
- logger.info(f"使用命令行参数启动快速测试: {stock_code}")
434
- quick_test(stock_code)
435
- return
436
-
437
478
  # 交互模式
438
479
  while True:
439
480
  try:
@@ -55,8 +55,8 @@ class IndicatorConfig:
55
55
  # ATR配置
56
56
  ATR_PERIOD = 14
57
57
 
58
- # VWAP配置
59
- VWAP_PERIOD = 14
58
+ # VWMA配置
59
+ VWMA_PERIOD = 14
60
60
 
61
61
  # BIAS乖离率配置
62
62
  BIAS_PERIODS = [5, 10, 20]
@@ -14,15 +14,16 @@ class ReportGenerator:
14
14
  def __init__(self):
15
15
  self.config = Config()
16
16
 
17
- def generate_report(self, stock_code, indicators, stock_info=None):
17
+ def generate_report(self, stock_code, indicators, stock_info=None, stock_data=None):
18
18
  """
19
19
  生成完整的股票分析报告
20
-
20
+
21
21
  Args:
22
22
  stock_code (str): 股票代码
23
23
  indicators (dict): 指标数据字典
24
24
  stock_info (dict): 股票基本信息
25
-
25
+ stock_data (pd.DataFrame): 股票历史数据
26
+
26
27
  Returns:
27
28
  str: 格式化的报告文本
28
29
  """
@@ -47,7 +48,11 @@ class ReportGenerator:
47
48
  report.extend(self._generate_fund_flow_section(indicators))
48
49
  report.extend(self._generate_trend_strength_section(indicators))
49
50
  report.extend(self._generate_summary_section(indicators))
50
-
51
+
52
+ # 最近5天OLHCV数据
53
+ if stock_data is not None:
54
+ report.extend(self._generate_recent_ohlcv_section(stock_data))
55
+
51
56
  # 报告尾部
52
57
  report.extend(self._generate_footer())
53
58
 
@@ -169,11 +174,11 @@ class ReportGenerator:
169
174
  section.append("\n【四、量价辅助指标】")
170
175
  section.append(self.config.REPORT_CONFIG['section_separator'])
171
176
 
172
- # VWAP
173
- if 'VWAP_14' in indicators:
174
- section.append("成交量加权平均价 (VWAP):")
175
- section.append(f" 14日VWAP: {indicators.get('VWAP_14', 0):.{self.config.DISPLAY_PRECISION['price']}f}")
176
- section.append(f" 价格关系: {self._get_vwap_relationship(indicators)}")
177
+ # VWMA
178
+ if 'VWMA_14' in indicators:
179
+ section.append("成交量加权移动平均 (VWMA):")
180
+ section.append(f" 14日VWMA: {indicators.get('VWMA_14', 0):.{self.config.DISPLAY_PRECISION['price']}f}")
181
+ section.append(f" 价格关系: {self._get_vwma_relationship(indicators)}")
177
182
 
178
183
  # OBV
179
184
  if 'OBV_current' in indicators:
@@ -280,7 +285,7 @@ class ReportGenerator:
280
285
  summary = self._collect_summary_items(indicators)
281
286
 
282
287
  for item in summary:
283
- section.append(f" {item}")
288
+ section.append(f"- {item}")
284
289
 
285
290
  return section
286
291
 
@@ -353,11 +358,11 @@ class ReportGenerator:
353
358
  else:
354
359
  return "价格在带内"
355
360
 
356
- def _get_vwap_relationship(self, indicators):
357
- """获取VWAP关系"""
361
+ def _get_vwma_relationship(self, indicators):
362
+ """获取VWMA关系"""
358
363
  current_price = indicators.get('current_price', 0)
359
- vwap = indicators.get('VWAP_14', 0)
360
- return "价格>VWAP" if current_price > vwap else "价格<VWAP"
364
+ vwma = indicators.get('VWMA_14', 0)
365
+ return "价格>VWMA" if current_price > vwma else "价格<VWMA"
361
366
 
362
367
  def _generate_obv_analysis(self, indicators):
363
368
  """生成OBV分析"""
@@ -779,5 +784,52 @@ class ReportGenerator:
779
784
  summary.append(f"超大单:净流入{super_amount_wan:.{self.config.DISPLAY_PRECISION['volume_wan']}f}万元({super_ratio:+.1f}%)")
780
785
  else:
781
786
  summary.append(f"超大单:净流出{abs(super_amount_wan):.{self.config.DISPLAY_PRECISION['volume_wan']}f}万元({super_ratio:+.1f}%)")
782
-
787
+
783
788
  return summary
789
+
790
+ def _generate_recent_ohlcv_section(self, stock_data):
791
+ """生成最近5天OLHCV数据部分"""
792
+ section = []
793
+ section.append("\n【十、最近5天交易数据】")
794
+ section.append(self.config.REPORT_CONFIG['section_separator'])
795
+
796
+ # 获取最近5天数据
797
+ recent_data = stock_data.tail(5)
798
+
799
+ # 表头
800
+ section.append("日期 开盘价 最高价 最低价 收盘价 成交量(万手) 成交额(亿元)")
801
+ section.append("─" * 70)
802
+
803
+ for idx, row in recent_data.iterrows():
804
+ # 格式化日期
805
+ date_str = idx.strftime('%m-%d') if hasattr(idx, 'strftime') else str(idx)[:5]
806
+
807
+ # 格式化价格数据
808
+ open_price = f"{row['open']:.2f}"
809
+ high_price = f"{row['high']:.2f}"
810
+ low_price = f"{row['low']:.2f}"
811
+ close_price = f"{row['close']:.2f}"
812
+
813
+ # 计算涨跌幅
814
+ if idx != recent_data.index[0]: # 不是第一行
815
+ prev_close = recent_data.loc[recent_data.index[recent_data.index.get_loc(idx) - 1], 'close']
816
+ change_percent = ((row['close'] - prev_close) / prev_close * 100)
817
+ change_sign = "▲" if change_percent > 0 else "▼" if change_percent < 0 else "─"
818
+ close_price = f"{row['close']:.2f}{change_sign}"
819
+ else:
820
+ close_price = f"{row['close']:.2f}"
821
+
822
+ # 格式化成交量 (转换为万手)
823
+ volume_wan_hands = row['volume'] / 10000
824
+ volume_str = f"{volume_wan_hands:.1f}"
825
+
826
+ # 格式化成交额 (转换为亿元)
827
+ amount = row.get('amount', row['close'] * row['volume']) # 如果没有amount字段,用估算值
828
+ amount_yi = amount / 100000000
829
+ amount_str = f"{amount_yi:.2f}"
830
+
831
+ # 组合一行数据
832
+ line = f"{date_str} {open_price:>8} {high_price:>8} {low_price:>8} {close_price:>10} {volume_str:>10} {amount_str:>12}"
833
+ section.append(line)
834
+
835
+ return section
@@ -32,7 +32,7 @@
32
32
  - **指标类别**:
33
33
  - 移动平均线(MA、EMA、WMA)
34
34
  - 均线衍生指标(BIAS、MACD、布林带)
35
- - 量价指标(VWAP、OBV)
35
+ - 量价指标(VWMA、OBV)
36
36
  - 趋势强度指标(ADX、DMI)
37
37
  - 动量振荡指标(RSI、KD)
38
38
  - 波动率指标(ATR)
@@ -144,12 +144,23 @@ class TechnicalIndicators:
144
144
  indicators = {}
145
145
 
146
146
  try:
147
- # VWAP (Volume Weighted Average Price)
148
- typical_price = (high + low + close) / 3
149
- vwap_period = self.config.VWAP_PERIOD
150
- if len(typical_price) >= vwap_period:
151
- price_volume = typical_price[-vwap_period:] * volume[-vwap_period:]
152
- indicators['VWAP_14'] = np.sum(price_volume) / np.sum(volume[-vwap_period:])
147
+ # VWMA (Volume Weighted Moving Average)
148
+ close_price = close
149
+ volume_weighted_sum = 0
150
+ total_volume = 0
151
+ vwma_period = self.config.VWMA_PERIOD
152
+
153
+ if len(close_price) >= vwma_period:
154
+ # 取最近vwma_period周期的数据计算VWMA
155
+ recent_close = close_price[-vwma_period:]
156
+ recent_volume = volume[-vwma_period:]
157
+
158
+ # 计算每个周期的成交量权重
159
+ volume_weighted_sum = np.sum(recent_close * recent_volume)
160
+ total_volume = np.sum(recent_volume)
161
+
162
+ if total_volume > 0:
163
+ indicators['VWMA_14'] = volume_weighted_sum / total_volume
153
164
 
154
165
  # OBV (On Balance Volume)
155
166
  close_float = close.astype(np.float64)
@@ -459,7 +470,6 @@ class TechnicalIndicators:
459
470
  # OBV背离验证
460
471
  if len(obv) >= 20 and len(close) >= 20:
461
472
  try:
462
- from scipy.signal import argrelextrema
463
473
  indicators['OBV_DIVERGENCE'] = self._detect_obv_divergence(obv, close, obv_config)
464
474
  except ImportError:
465
475
  indicators['OBV_DIVERGENCE'] = "需要scipy库进行背离分析"
@@ -272,12 +272,29 @@ class Utils:
272
272
  str or None: 股票代码,如果没有提供则返回None
273
273
  """
274
274
  if len(sys.argv) > 1:
275
- stock_code = sys.argv[1].strip()
276
- if Utils.validate_stock_code(stock_code):
277
- return stock_code
275
+ arg = sys.argv[1].strip()
276
+
277
+ # 处理帮助参数
278
+ if arg in ['-h', '--help', 'help']:
279
+ print("\n股票技术指标分析器 (重构版)")
280
+ print("\n使用方法:")
281
+ print(" aishare [股票代码] - 分析指定股票")
282
+ print(" aishare -h/--help - 显示帮助信息")
283
+ print("\n示例:")
284
+ print(" aishare 000001 - 分析平安银行")
285
+ print(" aishare 600036 - 分析招商银行")
286
+ print("\n交互模式:")
287
+ print(" 不带参数运行将进入交互模式,可以输入股票代码进行分析")
288
+ print(" 输入 'quit' 或 'exit' 退出程序")
289
+ sys.exit(0)
290
+
291
+ # 处理股票代码
292
+ if Utils.validate_stock_code(arg):
293
+ return arg
278
294
  else:
279
- print(f"错误:股票代码 '{stock_code}' 格式不正确")
295
+ print(f"错误:股票代码 '{arg}' 格式不正确")
280
296
  print("正确格式:6位数字,如 000001")
297
+ print("使用 'aishare --help' 查看更多帮助信息")
281
298
  return None
282
299
  return None
283
300
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aishare-txt
3
- Version: 2025.11.6.13
3
+ Version: 2025.11.24.23
4
4
  Summary: 中国股票技术指标文本生成工具包,用于为金融分析相关领域的AI智能体提供上下文服务。
5
5
  Home-page: https://gitee.com/chaofanat/aishare-txt
6
6
  Author: AIShareTxt Team
@@ -23,6 +23,7 @@ Requires-Dist: pandas>=1.5.0
23
23
  Requires-Dist: numpy>=1.21.0
24
24
  Requires-Dist: requests>=2.28.0
25
25
  Requires-Dist: pandas_market_calendars>=1.1.0
26
+ Requires-Dist: scipy>=1.9.0
26
27
  Requires-Dist: openai>=1.0.0
27
28
  Requires-Dist: zhipuai>=2.0.0
28
29
  Provides-Extra: dev
@@ -229,7 +230,7 @@ AIShareTxt/
229
230
 
230
231
  ### 成交量指标
231
232
  - OBV能量潮指标
232
- - VWAP成交量加权平均价
233
+ - VWMA成交量加权移动平均
233
234
  - 量比指标
234
235
 
235
236
  ### 波动率指标
@@ -462,8 +463,8 @@ batch_analysis()
462
463
 
463
464
  ## 📞 联系方式
464
465
 
465
- - 项目主页: https://github.com/chaofanat/aishare-txt
466
- - 问题反馈: https://github.com/chaofanat/aishare-txt/issues
466
+ - 项目主页: https://github.com/chaofanat/AIShareTxt
467
+ - 问题反馈: https://github.com/chaofanat/AIShareTxt/issues
467
468
  - 邮箱: chaofanat@gmail.com
468
469
 
469
470
  ## 🙏 致谢
@@ -177,7 +177,7 @@ AIShareTxt/
177
177
 
178
178
  ### 成交量指标
179
179
  - OBV能量潮指标
180
- - VWAP成交量加权平均价
180
+ - VWMA成交量加权移动平均
181
181
  - 量比指标
182
182
 
183
183
  ### 波动率指标
@@ -410,8 +410,8 @@ batch_analysis()
410
410
 
411
411
  ## 📞 联系方式
412
412
 
413
- - 项目主页: https://github.com/chaofanat/aishare-txt
414
- - 问题反馈: https://github.com/chaofanat/aishare-txt/issues
413
+ - 项目主页: https://github.com/chaofanat/AIShareTxt
414
+ - 问题反馈: https://github.com/chaofanat/AIShareTxt/issues
415
415
  - 邮箱: chaofanat@gmail.com
416
416
 
417
417
  ## 🙏 致谢
@@ -420,4 +420,4 @@ batch_analysis()
420
420
  - [akshare](https://github.com/akfamily/akshare) - 金融数据接口
421
421
  - [TA-Lib](https://mrjbq7.github.io/ta-lib/) - 技术分析库
422
422
  - [pandas](https://pandas.pydata.org/) - 数据分析库
423
- - [numpy](http://www.numpy.org/) - 科学计算库
423
+ - [numpy](http://www.numpy.org/) - 科学计算库
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aishare-txt
3
- Version: 2025.11.6.13
3
+ Version: 2025.11.24.23
4
4
  Summary: 中国股票技术指标文本生成工具包,用于为金融分析相关领域的AI智能体提供上下文服务。
5
5
  Home-page: https://gitee.com/chaofanat/aishare-txt
6
6
  Author: AIShareTxt Team
@@ -23,6 +23,7 @@ Requires-Dist: pandas>=1.5.0
23
23
  Requires-Dist: numpy>=1.21.0
24
24
  Requires-Dist: requests>=2.28.0
25
25
  Requires-Dist: pandas_market_calendars>=1.1.0
26
+ Requires-Dist: scipy>=1.9.0
26
27
  Requires-Dist: openai>=1.0.0
27
28
  Requires-Dist: zhipuai>=2.0.0
28
29
  Provides-Extra: dev
@@ -229,7 +230,7 @@ AIShareTxt/
229
230
 
230
231
  ### 成交量指标
231
232
  - OBV能量潮指标
232
- - VWAP成交量加权平均价
233
+ - VWMA成交量加权移动平均
233
234
  - 量比指标
234
235
 
235
236
  ### 波动率指标
@@ -462,8 +463,8 @@ batch_analysis()
462
463
 
463
464
  ## 📞 联系方式
464
465
 
465
- - 项目主页: https://github.com/chaofanat/aishare-txt
466
- - 问题反馈: https://github.com/chaofanat/aishare-txt/issues
466
+ - 项目主页: https://github.com/chaofanat/AIShareTxt
467
+ - 问题反馈: https://github.com/chaofanat/AIShareTxt/issues
467
468
  - 邮箱: chaofanat@gmail.com
468
469
 
469
470
  ## 🙏 致谢
@@ -4,6 +4,7 @@ pandas>=1.5.0
4
4
  numpy>=1.21.0
5
5
  requests>=2.28.0
6
6
  pandas_market_calendars>=1.1.0
7
+ scipy>=1.9.0
7
8
  openai>=1.0.0
8
9
  zhipuai>=2.0.0
9
10
 
@@ -5,6 +5,7 @@ pandas>=1.5.0
5
5
  numpy>=1.21.0
6
6
  requests>=2.28.0
7
7
  pandas_market_calendars>=1.1.0
8
+ scipy>=1.9.0
8
9
 
9
10
 
10
11
 
@@ -42,7 +42,7 @@ dev_requires = read_requirements("requirements-dev.txt")
42
42
 
43
43
  setup(
44
44
  name="aishare-txt",
45
- version="2025.11.06.13",
45
+ version="2025.11.24.23",
46
46
  author="AIShareTxt Team",
47
47
  author_email="chaofanat@gmail.com",
48
48
  description="中国股票技术指标文本生成工具包,用于为金融分析相关领域的AI智能体提供上下文服务。",