@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.
- package/README.md +134 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +48 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/market-client.d.ts +27 -0
- package/dist/lib/market-client.d.ts.map +1 -0
- package/dist/lib/market-client.js +698 -0
- package/dist/lib/market-client.js.map +1 -0
- package/dist/lib/stock-market.plugin.d.ts +10 -0
- package/dist/lib/stock-market.plugin.d.ts.map +1 -0
- package/dist/lib/stock-market.plugin.js +33 -0
- package/dist/lib/stock-market.plugin.js.map +1 -0
- package/dist/lib/stock-market.strategy.d.ts +119 -0
- package/dist/lib/stock-market.strategy.d.ts.map +1 -0
- package/dist/lib/stock-market.strategy.js +99 -0
- package/dist/lib/stock-market.strategy.js.map +1 -0
- package/dist/lib/tools/basic-info.tool.d.ts +16 -0
- package/dist/lib/tools/basic-info.tool.d.ts.map +1 -0
- package/dist/lib/tools/basic-info.tool.js +83 -0
- package/dist/lib/tools/basic-info.tool.js.map +1 -0
- package/dist/lib/tools/kline-history.tool.d.ts +26 -0
- package/dist/lib/tools/kline-history.tool.d.ts.map +1 -0
- package/dist/lib/tools/kline-history.tool.js +68 -0
- package/dist/lib/tools/kline-history.tool.js.map +1 -0
- package/dist/lib/tools/money-flow.tool.d.ts +16 -0
- package/dist/lib/tools/money-flow.tool.d.ts.map +1 -0
- package/dist/lib/tools/money-flow.tool.js +80 -0
- package/dist/lib/tools/money-flow.tool.js.map +1 -0
- package/dist/lib/tools/quote-realtime.tool.d.ts +16 -0
- package/dist/lib/tools/quote-realtime.tool.d.ts.map +1 -0
- package/dist/lib/tools/quote-realtime.tool.js +65 -0
- package/dist/lib/tools/quote-realtime.tool.js.map +1 -0
- package/dist/lib/tools/technical-indicators.tool.d.ts +16 -0
- package/dist/lib/tools/technical-indicators.tool.d.ts.map +1 -0
- package/dist/lib/tools/technical-indicators.tool.js +88 -0
- package/dist/lib/tools/technical-indicators.tool.js.map +1 -0
- package/dist/lib/tools/us-stock-search.tool.d.ts +16 -0
- package/dist/lib/tools/us-stock-search.tool.d.ts.map +1 -0
- package/dist/lib/tools/us-stock-search.tool.js +42 -0
- package/dist/lib/tools/us-stock-search.tool.js.map +1 -0
- package/dist/lib/toolset.d.ts +10 -0
- package/dist/lib/toolset.d.ts.map +1 -0
- package/dist/lib/toolset.js +31 -0
- package/dist/lib/toolset.js.map +1 -0
- package/dist/lib/types.d.ts +85 -0
- package/dist/lib/types.d.ts.map +1 -0
- package/dist/lib/types.js +13 -0
- package/dist/lib/types.js.map +1 -0
- 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
|
package/dist/index.d.ts
ADDED
|
@@ -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"}
|