@dshtrading/connector-ccxt 0.6.1 → 0.6.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 +313 -25
- package/lib/dataplane.d.ts +2 -2
- package/lib/dataplane.js +5 -4
- package/lib/index.d.ts +19 -8
- package/lib/index.js +30 -21
- package/lib/rest.d.ts +84 -3
- package/lib/rest.js +667 -24
- package/package.json +5 -5
package/lib/rest.d.ts
CHANGED
|
@@ -1,11 +1,27 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Interval as Interval$1, Kline as Kline$1, Order as Order$1, OrderRequest, Position as Position$1, Ticker as Ticker$1, TradingErrorCode } from "@dshtrading/api";
|
|
2
2
|
//#region src/rest.d.ts
|
|
3
3
|
declare class TradingServiceError extends Error {
|
|
4
4
|
readonly code: TradingErrorCode;
|
|
5
5
|
constructor(code: TradingErrorCode, message: string, cause?: unknown);
|
|
6
6
|
}
|
|
7
7
|
declare const INTERVAL_VOCABULARY: readonly ["1m", "5m", "15m", "30m", "1h", "4h", "1d", "1w", "1M"];
|
|
8
|
+
/**
|
|
9
|
+
* 登记的所名 = 本包真有 ticker 直连分支的所名(九条)。
|
|
10
|
+
*
|
|
11
|
+
* 此前这里登记 9 个所名、却只有 bybit/okx 两个具名分支,其余 6 个静默落 Binance 兜底 URL
|
|
12
|
+
* (选 kraken 拿到 Binance 的报价)。上一轮把登记面收窄到 3 所;本轮六条分支补齐,
|
|
13
|
+
* 登记面重新等于实现面。未登记所名仍在**任何 fetch 之前**结构化拒绝(见 notImplementedError)。
|
|
14
|
+
*/
|
|
8
15
|
declare const SUPPORTED_EXCHANGES: readonly ["binance", "okx", "bybit", "gateio", "kucoin", "kraken", "coinbase", "bitfinex", "htx"];
|
|
16
|
+
/**
|
|
17
|
+
* K 线登记面(2026-10-15 起九条直连分支)。
|
|
18
|
+
*
|
|
19
|
+
* 上一轮曾把 K 线面撤成单分支(binance)并把「按所取 K 线」记为另一张卡;本卡就是那张卡:
|
|
20
|
+
* 九所各有自己的 K 线端点、周期词汇与行结构,周期映射表见 KLINE_INTERVAL_PARAMS。
|
|
21
|
+
* 未登记所名(如 bitstamp)仍在**任何 fetch 之前**结构化拒绝(零请求)。
|
|
22
|
+
*/
|
|
23
|
+
declare const KLINE_EXCHANGES: readonly ["binance", "okx", "bybit", "gateio", "kucoin", "kraken", "coinbase", "bitfinex", "htx"];
|
|
24
|
+
type KlineExchange = (typeof KLINE_EXCHANGES)[number];
|
|
9
25
|
/**
|
|
10
26
|
* 现货符号归一化(本轮 CCXT 面只做现货)。
|
|
11
27
|
*
|
|
@@ -14,6 +30,62 @@ declare const SUPPORTED_EXCHANGES: readonly ["binance", "okx", "bybit", "gateio"
|
|
|
14
30
|
* 不得把 `-SWAP` 落到 spot 端点)。CCXT 的合约面不属本轮范围,要做得走单独的卡。
|
|
15
31
|
*/
|
|
16
32
|
declare function normalizeSymbol(raw: string): string;
|
|
33
|
+
/**
|
|
34
|
+
* 各所 quote 资产表(**按所维护**,2026-10-15 起)。
|
|
35
|
+
*
|
|
36
|
+
* 数据来源 = 该所公开挂牌端点的逐所普查(原始响应 `census-*.json` 与派生命题见
|
|
37
|
+
* `spikes/impl-ccxt-exchange-expansion/EVIDENCE-2026-10-15-quote-census-and-klines.md`):
|
|
38
|
+
* - okx `GET /api/v5/public/instruments?instType=SPOT` → `quoteCcy`(剔除空串)
|
|
39
|
+
* - kucoin `GET /api/v2/symbols` → `quoteCurrency`
|
|
40
|
+
* - gateio `GET /api/v4/spot/currency_pairs` → `quote`
|
|
41
|
+
* - kraken `GET /0/public/AssetPairs` → `wsname` 的 quote 段(kraken 的 `quote` 字段是
|
|
42
|
+
* Z/X 前缀的旧代号 ZEUR/XXBT,而请求符号用现代形 EUR/XBT)
|
|
43
|
+
* - coinbase `GET /products` → `quote_currency`
|
|
44
|
+
* - bitfinex `GET /v2/conf/pub:list:pair:exchange` + `.../pub:list:currency` → 最长货币后缀
|
|
45
|
+
* (`UST` 归一成用户写法的 `USDT`;`:` 分隔的挂牌对按分隔符切开)
|
|
46
|
+
* - htx `GET /v2/settings/common/symbols` → `qcdn`(大写展示形)
|
|
47
|
+
*
|
|
48
|
+
* 表只登记上游确实挂牌的 quote:表外计价对在七条变换分支上仍是本地
|
|
49
|
+
* `TRADING_UNSUPPORTED_SYMBOL` 且零请求——「猜一个 quote」等于给上游发错符号,比本地拒绝更糟。
|
|
50
|
+
* 每条表都由 `spikes/impl-ccxt-exchange-expansion/run-probe.ts` 按同一条普查规则现场复核
|
|
51
|
+
* (表 = 普查结果),上游新增 quote 而表未跟进即探针失败。
|
|
52
|
+
*/
|
|
53
|
+
declare const QUOTE_TABLES: Readonly<Record<TransformExchange, readonly string[]>>;
|
|
54
|
+
/**
|
|
55
|
+
* 裸符号 → `{ base, quote }`,按**该所**的 quote 表最长优先匹配。
|
|
56
|
+
*
|
|
57
|
+
* 只服务需要形态变换的七条分支(`requestSymbol`);binance/bybit 把裸符号原样发上游,
|
|
58
|
+
* 不经过这里——上游存在 `ETHBNB`/`BTCFDUSD` 这类不在任何 quote 表里的计价对。
|
|
59
|
+
* base 为空(如 `USDT`)或后缀不在该所表内(如 gateio 的 `BTCJPY`、kraken 的 `BTCBRL`)
|
|
60
|
+
* → TRADING_UNSUPPORTED_SYMBOL,文案点名该所与该所的 quote 表:猜一个 quote 会变成给上游发错符号。
|
|
61
|
+
*/
|
|
62
|
+
declare function splitPair(symbol: string, exchange: TransformExchange): {
|
|
63
|
+
base: string;
|
|
64
|
+
quote: string;
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* 需要请求符号**形态变换**的七条分支。
|
|
68
|
+
*
|
|
69
|
+
* binance / bybit 不在此列:它们把 `normalizeSymbol` 的裸符号原样发上游,**永不调用
|
|
70
|
+
* `requestSymbol`/`splitPair`**——上游确实存在 `ETHBNB`/`BTCFDUSD` 这类不在 quote 表里的
|
|
71
|
+
* 计价对,本地替上游裁决会变成功能回归(上游的错误语义留给上游)。
|
|
72
|
+
*/
|
|
73
|
+
type TransformExchange = 'okx' | 'kucoin' | 'gateio' | 'kraken' | 'coinbase' | 'bitfinex' | 'htx';
|
|
74
|
+
/**
|
|
75
|
+
* 各所现货端点的请求符号形态(入参 = `normalizeSymbol` 的裸符号,如 BTCUSDT)。
|
|
76
|
+
*
|
|
77
|
+
* okx/kucoin/coinbase 用 `-`、gateio 用 `_`、kraken 把 BTC 记作 XBT、bitfinex 加 `t`
|
|
78
|
+
* 前缀且 USDT 记作 UST、htx 全小写。导出让离线用例与探针能直接断言拼出来的符号形态
|
|
79
|
+
* (不必为了看一个 URL 去打网络)。
|
|
80
|
+
*/
|
|
81
|
+
declare function requestSymbol(exchange: TransformExchange, sym: string): string;
|
|
82
|
+
/** 某所支持的周期(映射表键集;供离线用例与探针断言,不在运行时按上游探测)。 */
|
|
83
|
+
declare function klineSupportedIntervals(exchange: KlineExchange): readonly Interval$1[];
|
|
84
|
+
/**
|
|
85
|
+
* `Interval` → 该所周期参数;该所不支持(coinbase 的 30m/4h/1w/1M、gateio/kucoin 的 1M、
|
|
86
|
+
* 以及任何词汇表外取值)→ TRADING_UNSUPPORTED_INTERVAL,**在 fetch 之前**(零请求)。
|
|
87
|
+
*/
|
|
88
|
+
declare function klineIntervalParam(exchange: KlineExchange, interval: Interval$1): string;
|
|
17
89
|
interface CcxtRestOptions {
|
|
18
90
|
exchange?: string;
|
|
19
91
|
apiKey?: string;
|
|
@@ -28,8 +100,17 @@ declare class CcxtRestClient {
|
|
|
28
100
|
constructor(options?: CcxtRestOptions);
|
|
29
101
|
private requestJson;
|
|
30
102
|
getTicker(symbol: string, exchange?: string): Promise<Ticker$1>;
|
|
103
|
+
/**
|
|
104
|
+
* K 线九条直连分支(2026-10-15 起):周期按所映射(KLINE_INTERVAL_PARAMS)、行结构按所解析,
|
|
105
|
+
* 输出一律**升序(旧→新)且只含最新 limit 根**。
|
|
106
|
+
*
|
|
107
|
+
* `exchange` 是**连接器自有形参**(缺省 = 客户端默认所名):`@dshtrading/api` 的
|
|
108
|
+
* `MarketDataService.getKlines(symbol, interval, limit?)` 没有这个形参,服务缝保持与契约同形,
|
|
109
|
+
* 形参只在本客户端方法与 `crypto_get_klines` 工具上暴露(见包 README「周期与契约」)。
|
|
110
|
+
* 未登记所名 → TRADING_NOT_IMPLEMENTED、该所不支持的周期 → TRADING_UNSUPPORTED_INTERVAL,
|
|
111
|
+
* 两者都在 fetch 之前(零请求)。
|
|
112
|
+
*/
|
|
31
113
|
getKlines(symbol: string, interval?: Interval$1, limit?: number, exchange?: string): Promise<Kline$1[]>;
|
|
32
|
-
getBalance(): Promise<AccountBalance$1>;
|
|
33
114
|
placeOrder(_creds: unknown, req: OrderRequest): Promise<Order$1>;
|
|
34
115
|
cancelOrder(_creds: unknown, orderId: string): Promise<{
|
|
35
116
|
orderId: string;
|
|
@@ -37,4 +118,4 @@ declare class CcxtRestClient {
|
|
|
37
118
|
}>;
|
|
38
119
|
}
|
|
39
120
|
//#endregion
|
|
40
|
-
export {
|
|
121
|
+
export { CcxtRestClient, CcxtRestOptions, INTERVAL_VOCABULARY, type Interval$1 as Interval, KLINE_EXCHANGES, type Kline$1 as Kline, KlineExchange, type Order$1 as Order, type Position$1 as Position, QUOTE_TABLES, SUPPORTED_EXCHANGES, type Ticker$1 as Ticker, TradingServiceError, klineIntervalParam, klineSupportedIntervals, normalizeSymbol, requestSymbol, splitPair };
|