@aalis/plugin-okx-trading 0.1.0

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 (42) hide show
  1. package/README.md +21 -0
  2. package/dist/client.d.ts +194 -0
  3. package/dist/client.d.ts.map +1 -0
  4. package/dist/client.js +371 -0
  5. package/dist/client.js.map +1 -0
  6. package/dist/index.d.ts +22 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js +128 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/tools/_shared.d.ts +15 -0
  11. package/dist/tools/_shared.d.ts.map +1 -0
  12. package/dist/tools/_shared.js +17 -0
  13. package/dist/tools/_shared.js.map +1 -0
  14. package/dist/tools/account.d.ts +4 -0
  15. package/dist/tools/account.d.ts.map +1 -0
  16. package/dist/tools/account.js +364 -0
  17. package/dist/tools/account.js.map +1 -0
  18. package/dist/tools/algo.d.ts +4 -0
  19. package/dist/tools/algo.d.ts.map +1 -0
  20. package/dist/tools/algo.js +138 -0
  21. package/dist/tools/algo.js.map +1 -0
  22. package/dist/tools/market.d.ts +4 -0
  23. package/dist/tools/market.d.ts.map +1 -0
  24. package/dist/tools/market.js +422 -0
  25. package/dist/tools/market.js.map +1 -0
  26. package/dist/tools/orders.d.ts +4 -0
  27. package/dist/tools/orders.d.ts.map +1 -0
  28. package/dist/tools/orders.js +91 -0
  29. package/dist/tools/orders.js.map +1 -0
  30. package/dist/tools/rubik.d.ts +4 -0
  31. package/dist/tools/rubik.d.ts.map +1 -0
  32. package/dist/tools/rubik.js +86 -0
  33. package/dist/tools/rubik.js.map +1 -0
  34. package/dist/tools/trade.d.ts +4 -0
  35. package/dist/tools/trade.d.ts.map +1 -0
  36. package/dist/tools/trade.js +357 -0
  37. package/dist/tools/trade.js.map +1 -0
  38. package/dist/tools/transfer.d.ts +4 -0
  39. package/dist/tools/transfer.d.ts.map +1 -0
  40. package/dist/tools/transfer.js +160 -0
  41. package/dist/tools/transfer.js.map +1 -0
  42. package/package.json +36 -0
package/README.md ADDED
@@ -0,0 +1,21 @@
1
+ # @aalis/plugin-okx-trading
2
+
3
+ 运行时插件
4
+
5
+ ## 角色
6
+
7
+ 运行时插件
8
+
9
+ ## 安装
10
+
11
+ ```bash
12
+ pnpm add @aalis/plugin-okx-trading
13
+ ```
14
+
15
+ ## 文档
16
+
17
+ 详见 [docs/plugins/plugin-okx-trading.md](../../docs/plugins/plugin-okx-trading.md)。
18
+
19
+ ## 许可
20
+
21
+ 见仓库根目录 LICENSE。
@@ -0,0 +1,194 @@
1
+ export interface OkxCredentials {
2
+ apiKey: string;
3
+ secretKey: string;
4
+ passphrase: string;
5
+ }
6
+ export interface OkxClientOptions {
7
+ credentials: OkxCredentials;
8
+ baseUrl: string;
9
+ /** 是否模拟盘 */
10
+ demo: boolean;
11
+ timeoutMs: number;
12
+ }
13
+ export interface OkxApiResponse<T = unknown> {
14
+ code: string;
15
+ msg: string;
16
+ data: T;
17
+ }
18
+ export declare class OkxClient {
19
+ private opts;
20
+ constructor(opts: OkxClientOptions);
21
+ /** 发送已签名的 API 请求 */
22
+ request<T = unknown>(method: 'GET' | 'POST', path: string, params?: Record<string, unknown>): Promise<OkxApiResponse<T>>;
23
+ /** 查询账户余额 */
24
+ getBalance(ccy?: string): Promise<OkxApiResponse<unknown>>;
25
+ /** 查询持仓 */
26
+ getPositions(instType?: string, instId?: string): Promise<OkxApiResponse<unknown>>;
27
+ /** 查询账户配置 */
28
+ getAccountConfig(): Promise<OkxApiResponse<unknown>>;
29
+ /** 设置杠杆倍数 */
30
+ setLeverage(instId: string, lever: string, mgnMode: 'cross' | 'isolated', posSide?: string): Promise<OkxApiResponse<unknown>>;
31
+ /** 设置持仓模式 */
32
+ setPositionMode(posMode: 'long_short_mode' | 'net_mode'): Promise<OkxApiResponse<unknown>>;
33
+ /** 查询杠杆倍数 */
34
+ getLeverageInfo(instId: string, mgnMode: 'cross' | 'isolated'): Promise<OkxApiResponse<unknown>>;
35
+ /** 查询最大可交易数量 */
36
+ getMaxSize(instId: string, tdMode: string, px?: string): Promise<OkxApiResponse<unknown>>;
37
+ /** 查询最大可用余额 */
38
+ getMaxAvailSize(instId: string, tdMode: string): Promise<OkxApiResponse<unknown>>;
39
+ /** 调整保证金 */
40
+ adjustMarginBalance(instId: string, posSide: string, type: 'add' | 'reduce', amt: string): Promise<OkxApiResponse<unknown>>;
41
+ /** 查询账户风险状态 */
42
+ getRiskState(): Promise<OkxApiResponse<unknown>>;
43
+ /** 查询账户账单流水(近 7 天) */
44
+ getBills(instType?: string, ccy?: string, type?: string, limit?: number): Promise<OkxApiResponse<unknown>>;
45
+ /** 查询账户账单流水(近 3 月) */
46
+ getBillsArchive(instType?: string, ccy?: string, type?: string, limit?: number): Promise<OkxApiResponse<unknown>>;
47
+ /** 查询利息累计数据 */
48
+ getInterestAccrued(instId?: string, ccy?: string, limit?: number): Promise<OkxApiResponse<unknown>>;
49
+ /** 查询手续费费率 */
50
+ getTradeFee(instType: string, instId?: string): Promise<OkxApiResponse<unknown>>;
51
+ /** 查询持仓历史 */
52
+ getPositionsHistory(instType?: string, instId?: string, limit?: number): Promise<OkxApiResponse<unknown>>;
53
+ /** 下单 */
54
+ placeOrder(params: {
55
+ instId: string;
56
+ tdMode: 'cash' | 'cross' | 'isolated';
57
+ side: 'buy' | 'sell';
58
+ ordType: 'market' | 'limit' | 'post_only' | 'fok' | 'ioc';
59
+ sz: string;
60
+ px?: string;
61
+ posSide?: 'long' | 'short' | 'net';
62
+ tgtCcy?: 'base_ccy' | 'quote_ccy';
63
+ clOrdId?: string;
64
+ }): Promise<OkxApiResponse<unknown>>;
65
+ /** 批量下单(最多 20 笔) */
66
+ batchPlaceOrders(orders: Array<{
67
+ instId: string;
68
+ tdMode: string;
69
+ side: string;
70
+ ordType: string;
71
+ sz: string;
72
+ px?: string;
73
+ posSide?: string;
74
+ tgtCcy?: string;
75
+ clOrdId?: string;
76
+ }>): Promise<OkxApiResponse<unknown>>;
77
+ /** 撤单 */
78
+ cancelOrder(instId: string, ordId?: string, clOrdId?: string): Promise<OkxApiResponse<unknown>>;
79
+ /** 批量撤单 */
80
+ batchCancelOrders(orders: Array<{
81
+ instId: string;
82
+ ordId?: string;
83
+ clOrdId?: string;
84
+ }>): Promise<OkxApiResponse<unknown>>;
85
+ /** 修改订单 */
86
+ amendOrder(params: {
87
+ instId: string;
88
+ ordId?: string;
89
+ clOrdId?: string;
90
+ newSz?: string;
91
+ newPx?: string;
92
+ }): Promise<OkxApiResponse<unknown>>;
93
+ /** 市价全平 */
94
+ closePosition(instId: string, mgnMode: 'cross' | 'isolated', posSide?: string): Promise<OkxApiResponse<unknown>>;
95
+ /** 查询订单详情 */
96
+ getOrderDetail(instId: string, ordId?: string, clOrdId?: string): Promise<OkxApiResponse<unknown>>;
97
+ /** 查询未成交订单 */
98
+ getPendingOrders(instType?: string, instId?: string): Promise<OkxApiResponse<unknown>>;
99
+ /** 查询历史订单(近 7 天) */
100
+ getOrderHistory(instType: string, instId?: string, limit?: number): Promise<OkxApiResponse<unknown>>;
101
+ /** 查询成交明细(近 3 天) */
102
+ getFills(instType?: string, instId?: string, limit?: number): Promise<OkxApiResponse<unknown>>;
103
+ /** 查询成交明细(近 3 月) */
104
+ getFillsArchive(instType: string, instId?: string, limit?: number): Promise<OkxApiResponse<unknown>>;
105
+ /** 策略下单(止盈止损 / 计划委托) */
106
+ placeAlgoOrder(params: {
107
+ instId: string;
108
+ tdMode: 'cash' | 'cross' | 'isolated';
109
+ side: 'buy' | 'sell';
110
+ ordType: 'conditional' | 'oco' | 'trigger';
111
+ sz: string;
112
+ posSide?: 'long' | 'short' | 'net';
113
+ tpTriggerPx?: string;
114
+ tpOrdPx?: string;
115
+ slTriggerPx?: string;
116
+ slOrdPx?: string;
117
+ triggerPx?: string;
118
+ orderPx?: string;
119
+ }): Promise<OkxApiResponse<unknown>>;
120
+ /** 撤销策略委托 */
121
+ cancelAlgoOrder(params: Array<{
122
+ algoId: string;
123
+ instId: string;
124
+ }>): Promise<OkxApiResponse<unknown>>;
125
+ /** 查询未完成策略委托 */
126
+ getPendingAlgoOrders(ordType: string, instType?: string, instId?: string): Promise<OkxApiResponse<unknown>>;
127
+ /** 查询历史策略委托 */
128
+ getAlgoOrderHistory(ordType: string, instType?: string, instId?: string, limit?: number): Promise<OkxApiResponse<unknown>>;
129
+ /** 获取单个产品行情 */
130
+ getTicker(instId: string): Promise<OkxApiResponse<unknown>>;
131
+ /** 获取所有产品行情 */
132
+ getTickers(instType: string): Promise<OkxApiResponse<unknown>>;
133
+ /** 获取 K 线数据 */
134
+ getCandles(instId: string, bar?: string, limit?: number): Promise<OkxApiResponse<unknown>>;
135
+ /** 获取历史 K 线数据(更久远) */
136
+ getHistoryCandles(instId: string, bar?: string, limit?: number, after?: string): Promise<OkxApiResponse<unknown>>;
137
+ /** 获取深度数据 */
138
+ getOrderBook(instId: string, sz?: number): Promise<OkxApiResponse<unknown>>;
139
+ /** 获取近期成交记录 */
140
+ getTrades(instId: string, limit?: number): Promise<OkxApiResponse<unknown>>;
141
+ /** 获取指数行情 */
142
+ getIndexTickers(instId?: string, quoteCcy?: string): Promise<OkxApiResponse<unknown>>;
143
+ /** 获取指数 K 线 */
144
+ getIndexCandles(instId: string, bar?: string, limit?: number): Promise<OkxApiResponse<unknown>>;
145
+ /** 获取标记价格 K 线 */
146
+ getMarkPriceCandles(instId: string, bar?: string, limit?: number): Promise<OkxApiResponse<unknown>>;
147
+ /** 获取 24 小时总成交量 */
148
+ get24hVolume(): Promise<OkxApiResponse<unknown>>;
149
+ /** 获取交易产品列表 */
150
+ getInstruments(instType: string, instId?: string): Promise<OkxApiResponse<unknown>>;
151
+ /** 获取标记价格 */
152
+ getMarkPrice(instType: string, instId?: string): Promise<OkxApiResponse<unknown>>;
153
+ /** 获取资金费率 */
154
+ getFundingRate(instId: string): Promise<OkxApiResponse<unknown>>;
155
+ /** 获取历史资金费率 */
156
+ getFundingRateHistory(instId: string, limit?: number): Promise<OkxApiResponse<unknown>>;
157
+ /** 获取限价 */
158
+ getPriceLimit(instId: string): Promise<OkxApiResponse<unknown>>;
159
+ /** 获取持仓总量 */
160
+ getOpenInterest(instType: string, instId?: string): Promise<OkxApiResponse<unknown>>;
161
+ /** 获取永续合约当前资金费率排行 */
162
+ getDiscountRateAndInterestFreeQuota(ccy?: string): Promise<OkxApiResponse<unknown>>;
163
+ /** 获取系统时间 */
164
+ getServerTime(): Promise<OkxApiResponse<unknown>>;
165
+ /** 获取期权定价数据 */
166
+ getOptSummary(instFamily: string): Promise<OkxApiResponse<unknown>>;
167
+ /** 查询资金账户余额 */
168
+ getAssetBalances(ccy?: string): Promise<OkxApiResponse<unknown>>;
169
+ /** 资金划转 */
170
+ transfer(ccy: string, amt: string, from: string, to: string): Promise<OkxApiResponse<unknown>>;
171
+ /** 查询划转状态 */
172
+ getTransferState(transId: string): Promise<OkxApiResponse<unknown>>;
173
+ /** 查询资金流水 */
174
+ getAssetBills(ccy?: string, type?: string, limit?: number): Promise<OkxApiResponse<unknown>>;
175
+ /** 获取币种列表 */
176
+ getCurrencies(): Promise<OkxApiResponse<unknown>>;
177
+ /** 获取充值地址 */
178
+ getDepositAddress(ccy: string): Promise<OkxApiResponse<unknown>>;
179
+ /** 查询充值记录 */
180
+ getDepositHistory(ccy?: string, limit?: number): Promise<OkxApiResponse<unknown>>;
181
+ /** 查询提币记录 */
182
+ getWithdrawalHistory(ccy?: string, limit?: number): Promise<OkxApiResponse<unknown>>;
183
+ /** 多空持仓人数比 */
184
+ getLongShortRatio(ccy: string, period?: string): Promise<OkxApiResponse<unknown>>;
185
+ /** 合约持仓量及交易量 */
186
+ getContractOpenInterestVolume(ccy: string, period?: string): Promise<OkxApiResponse<unknown>>;
187
+ /** 看涨看跌期权持仓比 */
188
+ getOptionOpenInterestVolume(ccy: string, period?: string): Promise<OkxApiResponse<unknown>>;
189
+ /** 精英交易员多空比 */
190
+ getTopTraderLongShortRatio(ccy: string, period?: string, instType?: string): Promise<OkxApiResponse<unknown>>;
191
+ /** Taker 主动买卖量 */
192
+ getTakerVolume(ccy: string, instType: string, period?: string): Promise<OkxApiResponse<unknown>>;
193
+ }
194
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/client.js ADDED
@@ -0,0 +1,371 @@
1
+ // ===== OKX API v5 客户端 =====
2
+ /** 生成 OKX HMAC-SHA256 签名(Web Crypto 实现,跨运行时) */
3
+ async function sign(timestamp, method, requestPath, body, secretKey) {
4
+ const enc = new TextEncoder();
5
+ const key = await crypto.subtle.importKey('raw', enc.encode(secretKey), { name: 'HMAC', hash: 'SHA-256' }, false, [
6
+ 'sign',
7
+ ]);
8
+ const sig = await crypto.subtle.sign('HMAC', key, enc.encode(prehash(timestamp, method, requestPath, body)));
9
+ return Buffer.from(sig).toString('base64');
10
+ }
11
+ function prehash(timestamp, method, requestPath, body) {
12
+ return timestamp + method + requestPath + body;
13
+ }
14
+ export class OkxClient {
15
+ opts;
16
+ constructor(opts) {
17
+ this.opts = opts;
18
+ }
19
+ /** 发送已签名的 API 请求 */
20
+ async request(method, path, params) {
21
+ const { credentials, baseUrl, demo, timeoutMs } = this.opts;
22
+ let requestPath = path;
23
+ let body = '';
24
+ if (method === 'GET' && params) {
25
+ const qs = Object.entries(params)
26
+ .filter(([, v]) => v !== undefined && v !== '')
27
+ .map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(String(v))}`)
28
+ .join('&');
29
+ if (qs)
30
+ requestPath += `?${qs}`;
31
+ }
32
+ else if (method === 'POST' && params) {
33
+ body = JSON.stringify(params);
34
+ }
35
+ const timestamp = new Date().toISOString();
36
+ const signature = await sign(timestamp, method, requestPath, body, credentials.secretKey);
37
+ const headers = {
38
+ 'OK-ACCESS-KEY': credentials.apiKey,
39
+ 'OK-ACCESS-SIGN': signature,
40
+ 'OK-ACCESS-TIMESTAMP': timestamp,
41
+ 'OK-ACCESS-PASSPHRASE': credentials.passphrase,
42
+ 'Content-Type': 'application/json',
43
+ };
44
+ if (demo) {
45
+ headers['x-simulated-trading'] = '1';
46
+ }
47
+ const url = `${baseUrl}${requestPath}`;
48
+ const response = await fetch(url, {
49
+ method,
50
+ headers,
51
+ body: method === 'POST' ? body : undefined,
52
+ signal: AbortSignal.timeout(timeoutMs),
53
+ });
54
+ if (!response.ok) {
55
+ const text = await response.text();
56
+ throw new Error(`OKX HTTP ${response.status}: ${text}`);
57
+ }
58
+ const result = (await response.json());
59
+ if (result.code !== '0') {
60
+ throw new Error(`OKX API 错误 [${result.code}]: ${result.msg}`);
61
+ }
62
+ return result;
63
+ }
64
+ // ========== 账户 ==========
65
+ /** 查询账户余额 */
66
+ async getBalance(ccy) {
67
+ return this.request('GET', '/api/v5/account/balance', ccy ? { ccy } : undefined);
68
+ }
69
+ /** 查询持仓 */
70
+ async getPositions(instType, instId) {
71
+ return this.request('GET', '/api/v5/account/positions', { instType, instId });
72
+ }
73
+ /** 查询账户配置 */
74
+ async getAccountConfig() {
75
+ return this.request('GET', '/api/v5/account/config');
76
+ }
77
+ /** 设置杠杆倍数 */
78
+ async setLeverage(instId, lever, mgnMode, posSide) {
79
+ return this.request('POST', '/api/v5/account/set-leverage', { instId, lever, mgnMode, posSide });
80
+ }
81
+ /** 设置持仓模式 */
82
+ async setPositionMode(posMode) {
83
+ return this.request('POST', '/api/v5/account/set-position-mode', { posMode });
84
+ }
85
+ /** 查询杠杆倍数 */
86
+ async getLeverageInfo(instId, mgnMode) {
87
+ return this.request('GET', '/api/v5/account/leverage-info', { instId, mgnMode });
88
+ }
89
+ /** 查询最大可交易数量 */
90
+ async getMaxSize(instId, tdMode, px) {
91
+ return this.request('GET', '/api/v5/account/max-size', { instId, tdMode, px });
92
+ }
93
+ /** 查询最大可用余额 */
94
+ async getMaxAvailSize(instId, tdMode) {
95
+ return this.request('GET', '/api/v5/account/max-avail-size', { instId, tdMode });
96
+ }
97
+ /** 调整保证金 */
98
+ async adjustMarginBalance(instId, posSide, type, amt) {
99
+ return this.request('POST', '/api/v5/account/position/margin-balance', { instId, posSide, type, amt });
100
+ }
101
+ /** 查询账户风险状态 */
102
+ async getRiskState() {
103
+ return this.request('GET', '/api/v5/account/risk-state');
104
+ }
105
+ /** 查询账户账单流水(近 7 天) */
106
+ async getBills(instType, ccy, type, limit) {
107
+ return this.request('GET', '/api/v5/account/bills', {
108
+ instType,
109
+ ccy,
110
+ type,
111
+ limit: limit ? String(limit) : undefined,
112
+ });
113
+ }
114
+ /** 查询账户账单流水(近 3 月) */
115
+ async getBillsArchive(instType, ccy, type, limit) {
116
+ return this.request('GET', '/api/v5/account/bills-archive', {
117
+ instType,
118
+ ccy,
119
+ type,
120
+ limit: limit ? String(limit) : undefined,
121
+ });
122
+ }
123
+ /** 查询利息累计数据 */
124
+ async getInterestAccrued(instId, ccy, limit) {
125
+ return this.request('GET', '/api/v5/account/interest-accrued', {
126
+ instId,
127
+ ccy,
128
+ limit: limit ? String(limit) : undefined,
129
+ });
130
+ }
131
+ /** 查询手续费费率 */
132
+ async getTradeFee(instType, instId) {
133
+ return this.request('GET', '/api/v5/account/trade-fee', { instType, instId });
134
+ }
135
+ /** 查询持仓历史 */
136
+ async getPositionsHistory(instType, instId, limit) {
137
+ return this.request('GET', '/api/v5/account/positions-history', {
138
+ instType,
139
+ instId,
140
+ limit: limit ? String(limit) : undefined,
141
+ });
142
+ }
143
+ // ========== 交易 ==========
144
+ /** 下单 */
145
+ async placeOrder(params) {
146
+ return this.request('POST', '/api/v5/trade/order', params);
147
+ }
148
+ /** 批量下单(最多 20 笔) */
149
+ async batchPlaceOrders(orders) {
150
+ return this.request('POST', '/api/v5/trade/batch-orders', orders);
151
+ }
152
+ /** 撤单 */
153
+ async cancelOrder(instId, ordId, clOrdId) {
154
+ return this.request('POST', '/api/v5/trade/cancel-order', { instId, ordId, clOrdId });
155
+ }
156
+ /** 批量撤单 */
157
+ async batchCancelOrders(orders) {
158
+ return this.request('POST', '/api/v5/trade/cancel-batch-orders', orders);
159
+ }
160
+ /** 修改订单 */
161
+ async amendOrder(params) {
162
+ return this.request('POST', '/api/v5/trade/amend-order', params);
163
+ }
164
+ /** 市价全平 */
165
+ async closePosition(instId, mgnMode, posSide) {
166
+ return this.request('POST', '/api/v5/trade/close-position', { instId, mgnMode, posSide });
167
+ }
168
+ /** 查询订单详情 */
169
+ async getOrderDetail(instId, ordId, clOrdId) {
170
+ return this.request('GET', '/api/v5/trade/order', { instId, ordId, clOrdId });
171
+ }
172
+ /** 查询未成交订单 */
173
+ async getPendingOrders(instType, instId) {
174
+ return this.request('GET', '/api/v5/trade/orders-pending', { instType, instId });
175
+ }
176
+ /** 查询历史订单(近 7 天) */
177
+ async getOrderHistory(instType, instId, limit) {
178
+ return this.request('GET', '/api/v5/trade/orders-history', {
179
+ instType,
180
+ instId,
181
+ limit: limit ? String(limit) : undefined,
182
+ });
183
+ }
184
+ /** 查询成交明细(近 3 天) */
185
+ async getFills(instType, instId, limit) {
186
+ return this.request('GET', '/api/v5/trade/fills', { instType, instId, limit: limit ? String(limit) : undefined });
187
+ }
188
+ /** 查询成交明细(近 3 月) */
189
+ async getFillsArchive(instType, instId, limit) {
190
+ return this.request('GET', '/api/v5/trade/fills-archive', {
191
+ instType,
192
+ instId,
193
+ limit: limit ? String(limit) : undefined,
194
+ });
195
+ }
196
+ // ========== 策略委托 ==========
197
+ /** 策略下单(止盈止损 / 计划委托) */
198
+ async placeAlgoOrder(params) {
199
+ return this.request('POST', '/api/v5/trade/order-algo', params);
200
+ }
201
+ /** 撤销策略委托 */
202
+ async cancelAlgoOrder(params) {
203
+ return this.request('POST', '/api/v5/trade/cancel-algos', params);
204
+ }
205
+ /** 查询未完成策略委托 */
206
+ async getPendingAlgoOrders(ordType, instType, instId) {
207
+ return this.request('GET', '/api/v5/trade/orders-algo-pending', { ordType, instType, instId });
208
+ }
209
+ /** 查询历史策略委托 */
210
+ async getAlgoOrderHistory(ordType, instType, instId, limit) {
211
+ return this.request('GET', '/api/v5/trade/orders-algo-history', {
212
+ ordType,
213
+ instType,
214
+ instId,
215
+ limit: limit ? String(limit) : undefined,
216
+ });
217
+ }
218
+ // ========== 行情 ==========
219
+ /** 获取单个产品行情 */
220
+ async getTicker(instId) {
221
+ return this.request('GET', '/api/v5/market/ticker', { instId });
222
+ }
223
+ /** 获取所有产品行情 */
224
+ async getTickers(instType) {
225
+ return this.request('GET', '/api/v5/market/tickers', { instType });
226
+ }
227
+ /** 获取 K 线数据 */
228
+ async getCandles(instId, bar, limit) {
229
+ return this.request('GET', '/api/v5/market/candles', { instId, bar, limit: limit ? String(limit) : undefined });
230
+ }
231
+ /** 获取历史 K 线数据(更久远) */
232
+ async getHistoryCandles(instId, bar, limit, after) {
233
+ return this.request('GET', '/api/v5/market/history-candles', {
234
+ instId,
235
+ bar,
236
+ limit: limit ? String(limit) : undefined,
237
+ after,
238
+ });
239
+ }
240
+ /** 获取深度数据 */
241
+ async getOrderBook(instId, sz) {
242
+ return this.request('GET', '/api/v5/market/books', { instId, sz: sz ? String(sz) : undefined });
243
+ }
244
+ /** 获取近期成交记录 */
245
+ async getTrades(instId, limit) {
246
+ return this.request('GET', '/api/v5/market/trades', { instId, limit: limit ? String(limit) : undefined });
247
+ }
248
+ /** 获取指数行情 */
249
+ async getIndexTickers(instId, quoteCcy) {
250
+ return this.request('GET', '/api/v5/market/index-tickers', { instId, quoteCcy });
251
+ }
252
+ /** 获取指数 K 线 */
253
+ async getIndexCandles(instId, bar, limit) {
254
+ return this.request('GET', '/api/v5/market/index-candles', {
255
+ instId,
256
+ bar,
257
+ limit: limit ? String(limit) : undefined,
258
+ });
259
+ }
260
+ /** 获取标记价格 K 线 */
261
+ async getMarkPriceCandles(instId, bar, limit) {
262
+ return this.request('GET', '/api/v5/market/mark-price-candles', {
263
+ instId,
264
+ bar,
265
+ limit: limit ? String(limit) : undefined,
266
+ });
267
+ }
268
+ /** 获取 24 小时总成交量 */
269
+ async get24hVolume() {
270
+ return this.request('GET', '/api/v5/market/platform-24-volume');
271
+ }
272
+ // ========== 公共数据 ==========
273
+ /** 获取交易产品列表 */
274
+ async getInstruments(instType, instId) {
275
+ return this.request('GET', '/api/v5/public/instruments', { instType, instId });
276
+ }
277
+ /** 获取标记价格 */
278
+ async getMarkPrice(instType, instId) {
279
+ return this.request('GET', '/api/v5/public/mark-price', { instType, instId });
280
+ }
281
+ /** 获取资金费率 */
282
+ async getFundingRate(instId) {
283
+ return this.request('GET', '/api/v5/public/funding-rate', { instId });
284
+ }
285
+ /** 获取历史资金费率 */
286
+ async getFundingRateHistory(instId, limit) {
287
+ return this.request('GET', '/api/v5/public/funding-rate-history', {
288
+ instId,
289
+ limit: limit ? String(limit) : undefined,
290
+ });
291
+ }
292
+ /** 获取限价 */
293
+ async getPriceLimit(instId) {
294
+ return this.request('GET', '/api/v5/public/price-limit', { instId });
295
+ }
296
+ /** 获取持仓总量 */
297
+ async getOpenInterest(instType, instId) {
298
+ return this.request('GET', '/api/v5/public/open-interest', { instType, instId });
299
+ }
300
+ /** 获取永续合约当前资金费率排行 */
301
+ async getDiscountRateAndInterestFreeQuota(ccy) {
302
+ return this.request('GET', '/api/v5/public/discount-rate-interest-free-quota', { ccy });
303
+ }
304
+ /** 获取系统时间 */
305
+ async getServerTime() {
306
+ return this.request('GET', '/api/v5/public/time');
307
+ }
308
+ /** 获取期权定价数据 */
309
+ async getOptSummary(instFamily) {
310
+ return this.request('GET', '/api/v5/public/opt-summary', { instFamily });
311
+ }
312
+ // ========== 资金 ==========
313
+ /** 查询资金账户余额 */
314
+ async getAssetBalances(ccy) {
315
+ return this.request('GET', '/api/v5/asset/balances', ccy ? { ccy } : undefined);
316
+ }
317
+ /** 资金划转 */
318
+ async transfer(ccy, amt, from, to) {
319
+ return this.request('POST', '/api/v5/asset/transfer', { ccy, amt, from, to, type: '0' });
320
+ }
321
+ /** 查询划转状态 */
322
+ async getTransferState(transId) {
323
+ return this.request('GET', '/api/v5/asset/transfer-state', { transId });
324
+ }
325
+ /** 查询资金流水 */
326
+ async getAssetBills(ccy, type, limit) {
327
+ return this.request('GET', '/api/v5/asset/bills', { ccy, type, limit: limit ? String(limit) : undefined });
328
+ }
329
+ /** 获取币种列表 */
330
+ async getCurrencies() {
331
+ return this.request('GET', '/api/v5/asset/currencies');
332
+ }
333
+ /** 获取充值地址 */
334
+ async getDepositAddress(ccy) {
335
+ return this.request('GET', '/api/v5/asset/deposit-address', { ccy });
336
+ }
337
+ /** 查询充值记录 */
338
+ async getDepositHistory(ccy, limit) {
339
+ return this.request('GET', '/api/v5/asset/deposit-history', { ccy, limit: limit ? String(limit) : undefined });
340
+ }
341
+ /** 查询提币记录 */
342
+ async getWithdrawalHistory(ccy, limit) {
343
+ return this.request('GET', '/api/v5/asset/withdrawal-history', { ccy, limit: limit ? String(limit) : undefined });
344
+ }
345
+ // ========== 大数据 / 交易大数据 ==========
346
+ /** 多空持仓人数比 */
347
+ async getLongShortRatio(ccy, period) {
348
+ return this.request('GET', '/api/v5/rubik/stat/contracts/long-short-account-ratio', { ccy, period });
349
+ }
350
+ /** 合约持仓量及交易量 */
351
+ async getContractOpenInterestVolume(ccy, period) {
352
+ return this.request('GET', '/api/v5/rubik/stat/contracts/open-interest-volume', { ccy, period });
353
+ }
354
+ /** 看涨看跌期权持仓比 */
355
+ async getOptionOpenInterestVolume(ccy, period) {
356
+ return this.request('GET', '/api/v5/rubik/stat/option/open-interest-volume-ratio', { ccy, period });
357
+ }
358
+ /** 精英交易员多空比 */
359
+ async getTopTraderLongShortRatio(ccy, period, instType) {
360
+ return this.request('GET', '/api/v5/rubik/stat/contracts/long-short-account-ratio-contract-top-trader', {
361
+ ccy,
362
+ period,
363
+ instType,
364
+ });
365
+ }
366
+ /** Taker 主动买卖量 */
367
+ async getTakerVolume(ccy, instType, period) {
368
+ return this.request('GET', '/api/v5/rubik/stat/taker-volume', { ccy, instType, period });
369
+ }
370
+ }
371
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { ConfigSchema, Context } from '@aalis/core';
2
+ import '@aalis/plugin-tools-api';
3
+ export declare const name = "@aalis/plugin-okx-trading";
4
+ export declare const displayName = "OKX \u4EA4\u6613";
5
+ export declare const subsystem = "external";
6
+ export declare const inject: {
7
+ optional: string[];
8
+ };
9
+ export declare const configSchema: ConfigSchema;
10
+ export declare const defaultConfig: {
11
+ apiKey: string;
12
+ secretKey: string;
13
+ passphrase: string;
14
+ baseUrl: string;
15
+ demo: boolean;
16
+ timeoutMs: number;
17
+ enableTrading: boolean;
18
+ enableAlgo: boolean;
19
+ enableTransfer: boolean;
20
+ };
21
+ export declare function apply(ctx: Context, config: Record<string, unknown>): void;
22
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAWzD,OAAO,yBAAyB,CAAC;AAIjC,eAAO,MAAM,IAAI,8BAA8B,CAAC;AAChD,eAAO,MAAM,WAAW,qBAAW,CAAC;AACpC,eAAO,MAAM,SAAS,aAAa,CAAC;AACpC,eAAO,MAAM,MAAM;;CAA0B,CAAC;AAE9C,eAAO,MAAM,YAAY,EAAE,YAiD1B,CAAC;AAEF,eAAO,MAAM,aAAa;;;;;;;;;;CAUzB,CAAC;AAoCF,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAmCzE"}