@helloxiaohu/plugin-stock-market 0.0.2

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 (50) hide show
  1. package/README.md +134 -0
  2. package/dist/index.d.ts +24 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +48 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/lib/market-client.d.ts +27 -0
  7. package/dist/lib/market-client.d.ts.map +1 -0
  8. package/dist/lib/market-client.js +698 -0
  9. package/dist/lib/market-client.js.map +1 -0
  10. package/dist/lib/stock-market.plugin.d.ts +10 -0
  11. package/dist/lib/stock-market.plugin.d.ts.map +1 -0
  12. package/dist/lib/stock-market.plugin.js +33 -0
  13. package/dist/lib/stock-market.plugin.js.map +1 -0
  14. package/dist/lib/stock-market.strategy.d.ts +119 -0
  15. package/dist/lib/stock-market.strategy.d.ts.map +1 -0
  16. package/dist/lib/stock-market.strategy.js +99 -0
  17. package/dist/lib/stock-market.strategy.js.map +1 -0
  18. package/dist/lib/tools/basic-info.tool.d.ts +16 -0
  19. package/dist/lib/tools/basic-info.tool.d.ts.map +1 -0
  20. package/dist/lib/tools/basic-info.tool.js +83 -0
  21. package/dist/lib/tools/basic-info.tool.js.map +1 -0
  22. package/dist/lib/tools/kline-history.tool.d.ts +26 -0
  23. package/dist/lib/tools/kline-history.tool.d.ts.map +1 -0
  24. package/dist/lib/tools/kline-history.tool.js +68 -0
  25. package/dist/lib/tools/kline-history.tool.js.map +1 -0
  26. package/dist/lib/tools/money-flow.tool.d.ts +16 -0
  27. package/dist/lib/tools/money-flow.tool.d.ts.map +1 -0
  28. package/dist/lib/tools/money-flow.tool.js +80 -0
  29. package/dist/lib/tools/money-flow.tool.js.map +1 -0
  30. package/dist/lib/tools/quote-realtime.tool.d.ts +16 -0
  31. package/dist/lib/tools/quote-realtime.tool.d.ts.map +1 -0
  32. package/dist/lib/tools/quote-realtime.tool.js +65 -0
  33. package/dist/lib/tools/quote-realtime.tool.js.map +1 -0
  34. package/dist/lib/tools/technical-indicators.tool.d.ts +16 -0
  35. package/dist/lib/tools/technical-indicators.tool.d.ts.map +1 -0
  36. package/dist/lib/tools/technical-indicators.tool.js +88 -0
  37. package/dist/lib/tools/technical-indicators.tool.js.map +1 -0
  38. package/dist/lib/tools/us-stock-search.tool.d.ts +16 -0
  39. package/dist/lib/tools/us-stock-search.tool.d.ts.map +1 -0
  40. package/dist/lib/tools/us-stock-search.tool.js +42 -0
  41. package/dist/lib/tools/us-stock-search.tool.js.map +1 -0
  42. package/dist/lib/toolset.d.ts +10 -0
  43. package/dist/lib/toolset.d.ts.map +1 -0
  44. package/dist/lib/toolset.js +31 -0
  45. package/dist/lib/toolset.js.map +1 -0
  46. package/dist/lib/types.d.ts +85 -0
  47. package/dist/lib/types.d.ts.map +1 -0
  48. package/dist/lib/types.js +13 -0
  49. package/dist/lib/types.js.map +1 -0
  50. package/package.json +37 -0
package/README.md ADDED
@@ -0,0 +1,134 @@
1
+ # @xpert-ai/plugin-stock-market
2
+
3
+ Comprehensive stock market data plugin for A-shares, Hong Kong, and US markets.
4
+
5
+ ## Features
6
+
7
+ - **Real-time Quotes**: Get current stock prices, volume, and market data
8
+ - **K-line Charts**: Historical OHLCV data for technical analysis
9
+ - **Technical Indicators**: MA, MACD, RSI, KDJ calculations
10
+ - **Stock Search**: Search stocks by code or name
11
+ - **Multi-market Support**: A-shares (SH/SZ), Hong Kong, and US markets
12
+
13
+ ## Installation
14
+
15
+ ```bash
16
+ npm install @xpert-ai/plugin-stock-market
17
+ ```
18
+
19
+ ## Configuration
20
+
21
+ ```typescript
22
+ {
23
+ source: 'sina' | 'tencent', // Data source (default: 'sina')
24
+ timeout: 5000, // Request timeout in ms
25
+ cacheEnabled: true, // Enable data caching
26
+ cacheTTL: 300 // Cache TTL in seconds
27
+ }
28
+ ```
29
+
30
+ ## Tools
31
+
32
+ ### 1. stock_market_get_quote
33
+ Get real-time stock quotes.
34
+
35
+ **Parameters**:
36
+ - `code` (string, required): Stock code (e.g., "600519", "00700", "AAPL")
37
+ - `market` (enum, optional): Market type - "auto", "sh", "sz", "hk", "us" (default: "auto")
38
+
39
+ **Example**:
40
+ ```typescript
41
+ // Get quote for 茅台
42
+ { code: "600519" }
43
+
44
+ // Get quote for Tencent (HK)
45
+ { code: "00700", market: "hk" }
46
+ ```
47
+
48
+ ### 2. stock_market_get_kline
49
+ Get K-line (candlestick) data.
50
+
51
+ **Parameters**:
52
+ - `code` (string, required): Stock code
53
+ - `period` (enum): "1d", "1w", "1m", "3m", "6m", "1y", "ytd"
54
+ - `market` (enum, optional): Market type
55
+
56
+ **Example**:
57
+ ```typescript
58
+ { code: "600519", period: "1m" }
59
+ ```
60
+
61
+ ### 3. stock_market_get_technical
62
+ Get technical indicators.
63
+
64
+ **Parameters**:
65
+ - `code` (string, required): Stock code
66
+ - `indicators` (array): List of indicators - "ma", "macd", "rsi", "kdj"
67
+ - `period` (enum, optional): Time period for calculation
68
+
69
+ **Example**:
70
+ ```typescript
71
+ {
72
+ code: "600519",
73
+ indicators: ["ma", "macd", "rsi"]
74
+ }
75
+ ```
76
+
77
+ ### 4. stock_market_search
78
+ Search for stocks.
79
+
80
+ **Parameters**:
81
+ - `keyword` (string, required): Search keyword
82
+ - `market` (enum, optional): Filter by market
83
+
84
+ **Example**:
85
+ ```typescript
86
+ { keyword: "茅台" }
87
+ { keyword: "Apple" }
88
+ ```
89
+
90
+ ## Data Sources
91
+
92
+ - **Primary**: Sina Finance (free, stable)
93
+ - **Backup**: Tencent Finance
94
+ - **HK/US**: Snowball / Yahoo Finance
95
+
96
+ ## Error Handling
97
+
98
+ The plugin uses unified error codes:
99
+
100
+ | Code | Description |
101
+ |------|-------------|
102
+ | 1001 | Invalid stock code format |
103
+ | 2001 | Stock not found |
104
+ | 2002 | No data available |
105
+ | 3001 | API error |
106
+ | 3003 | Rate limit exceeded |
107
+
108
+ ## Output Format
109
+
110
+ ### Text Format (default)
111
+ ```
112
+ 【贵州茅台(600519)】
113
+ 当前价: 1690.00 元
114
+ 涨跌额: +12.00 元
115
+ 涨跌幅: +0.72%
116
+ ...
117
+ ```
118
+
119
+ ### JSON Format
120
+ ```json
121
+ {
122
+ "success": true,
123
+ "data": {
124
+ "code": "600519",
125
+ "name": "贵州茅台",
126
+ "price": 1690.00,
127
+ ...
128
+ }
129
+ }
130
+ ```
131
+
132
+ ## License
133
+
134
+ MIT
@@ -0,0 +1,24 @@
1
+ /**
2
+ * 股票行情工具集插件入口
3
+ */
4
+ import type { XpertPlugin } from '@xpert-ai/plugin-sdk';
5
+ import { z } from 'zod';
6
+ declare const ConfigSchema: z.ZodObject<{
7
+ source: z.ZodDefault<z.ZodOptional<z.ZodEnum<["sina", "tencent"]>>>;
8
+ timeout: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
9
+ cacheEnabled: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
10
+ cacheTTL: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
11
+ }, "strip", z.ZodTypeAny, {
12
+ timeout?: number;
13
+ source?: "sina" | "tencent";
14
+ cacheEnabled?: boolean;
15
+ cacheTTL?: number;
16
+ }, {
17
+ timeout?: number;
18
+ source?: "sina" | "tencent";
19
+ cacheEnabled?: boolean;
20
+ cacheTTL?: number;
21
+ }>;
22
+ declare const plugin: XpertPlugin<z.infer<typeof ConfigSchema>>;
23
+ export default plugin;
24
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAIvD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAYvB,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;EAKhB,CAAA;AAEF,QAAA,MAAM,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CA2BrD,CAAA;AAED,eAAe,MAAM,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,48 @@
1
+ /**
2
+ * 股票行情工具集插件入口
3
+ */
4
+ import { readFileSync } from 'fs';
5
+ import { fileURLToPath } from 'url';
6
+ import { dirname, join } from 'path';
7
+ import { z } from 'zod';
8
+ import { StockMarketPlugin } from './lib/stock-market.plugin.js';
9
+ import { icon } from './lib/types.js';
10
+ const __filename = fileURLToPath(import.meta.url);
11
+ const __dirname = dirname(__filename);
12
+ const packageJson = JSON.parse(readFileSync(join(__dirname, '../package.json'), 'utf8'));
13
+ const ConfigSchema = z.object({
14
+ source: z.enum(['sina', 'tencent']).optional().default('sina'),
15
+ timeout: z.number().optional().default(5000),
16
+ cacheEnabled: z.boolean().optional().default(true),
17
+ cacheTTL: z.number().optional().default(300)
18
+ });
19
+ const plugin = {
20
+ meta: {
21
+ name: packageJson.name,
22
+ version: packageJson.version,
23
+ category: 'tools',
24
+ icon: {
25
+ type: 'image',
26
+ value: icon
27
+ },
28
+ displayName: 'Stock Market',
29
+ description: 'Comprehensive stock market data including real-time quotes, K-line charts, technical indicators, and stock search for A-shares, Hong Kong, and US markets',
30
+ keywords: ['stock', 'market', 'quotes', 'kline', 'technical', 'A股', '港股', '美股'],
31
+ author: 'XpertAI Team',
32
+ },
33
+ config: {
34
+ schema: ConfigSchema,
35
+ },
36
+ register(ctx) {
37
+ ctx.logger.log('register stock-market plugin');
38
+ return { module: StockMarketPlugin, global: true };
39
+ },
40
+ async onStart(ctx) {
41
+ ctx.logger.log('stock-market plugin started');
42
+ },
43
+ async onStop(ctx) {
44
+ ctx.logger.log('stock-market plugin stopped');
45
+ },
46
+ };
47
+ export default plugin;
48
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAA;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAA;AACnC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AACpC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AAErC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACjD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;AAErC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC,CAGtF,CAAA;AAED,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5B,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;IAC9D,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAC5C,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAClD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;CAC7C,CAAC,CAAA;AAEF,MAAM,MAAM,GAA8C;IACxD,IAAI,EAAE;QACJ,IAAI,EAAE,WAAW,CAAC,IAAI;QACtB,OAAO,EAAE,WAAW,CAAC,OAAO;QAC5B,QAAQ,EAAE,OAAO;QACjB,IAAI,EAAE;YACJ,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,IAAI;SACZ;QACD,WAAW,EAAE,cAAc;QAC3B,WAAW,EAAE,2JAA2J;QACxK,QAAQ,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;QAC/E,MAAM,EAAE,cAAc;KACvB;IACD,MAAM,EAAE;QACN,MAAM,EAAE,YAAY;KACrB;IACD,QAAQ,CAAC,GAAG;QACV,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAA;QAC9C,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;IACpD,CAAC;IACD,KAAK,CAAC,OAAO,CAAC,GAAG;QACf,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAA;IAC/C,CAAC;IACD,KAAK,CAAC,MAAM,CAAC,GAAG;QACd,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAA;IAC/C,CAAC;CACF,CAAA;AAED,eAAe,MAAM,CAAA"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * 股票市场数据客户端
3
+ * 支持新浪财经 (A股、港股) 和腾讯财经 (美股)
4
+ */
5
+ import { MarketType, StockQuote, KlineData, KlinePoint, StockSearchResult, MoneyFlow } from './types.js';
6
+ export declare function detectMarket(code: string): MarketType;
7
+ export declare function formatCodeForSina(code: string, market?: MarketType): string;
8
+ export declare function normalizeCode(code: string, market?: MarketType): string;
9
+ export declare function fetchRealtimeQuotes(codes: string[]): Promise<Map<string, StockQuote>>;
10
+ export declare function fetchKlineData(code: string, period?: 'day' | 'week' | 'month', count?: number): Promise<KlineData | null>;
11
+ export declare function calculateMA(data: KlinePoint[], periods: number[]): {
12
+ [period: string]: number;
13
+ };
14
+ export declare function calculateMACD(data: KlinePoint[]): {
15
+ dif: number;
16
+ dea: number;
17
+ macd: number;
18
+ } | null;
19
+ export declare function calculateRSI(data: KlinePoint[], period?: number): number | null;
20
+ export declare function calculateKDJ(data: KlinePoint[]): {
21
+ k: number;
22
+ d: number;
23
+ j: number;
24
+ } | null;
25
+ export declare function searchStock(keyword: string): Promise<StockSearchResult[]>;
26
+ export declare function fetchMoneyFlow(code: string): Promise<MoneyFlow | null>;
27
+ //# sourceMappingURL=market-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"market-client.d.ts","sourceRoot":"","sources":["../../src/lib/market-client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AA8DxG,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAoBrD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,UAAU,GAAG,MAAM,CAc3E;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,UAAU,GAAG,MAAM,CAYvE;AA0GD,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAqB3F;AAuED,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,MAAM,GAAE,KAAK,GAAG,MAAM,GAAG,OAAe,EACxC,KAAK,GAAE,MAAY,GAClB,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAiD3B;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG;IAAE,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAY/F;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CA6BnG;AAeD,wBAAgB,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,MAAM,GAAE,MAAW,GAAG,MAAM,GAAG,IAAI,CAsBnF;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAmB3F;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CA8C/E;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAqC5E"}