此文档为 ccxt 的详细接口解释文档,仅做学习用途。
先简单介绍下ccxt
ccxt是一个“all-in-one”一站式数字货币万能api接口模块库,目前支持120多个数字货币交易所,包括币安,火币,okex等等这些国内用户常用的数字货币交易所。
下面直接进入正题
export const version: string; // ccxt 的版本号
export const exchanges: string[]; // ccxt 当前支持的所有交易所
- 基础货币:要买入的货币 | 报价货币:要卖出的货币
如BTC/USDT = 10000 BTC是基础货币,USDT是报价货币
该部分暂时不详解,等到介绍交易所数据结构或者使用时再详细解释。
export interface MinMax {
max: number;
min: number;
}
export interface Tickers {
info: any; // info为交易所返回的原始信息(以下都是)
[symbol: string]: Ticker; // 行情信息(详情见下文)
}
export interface Currency {
id: string;
code: string;
}
export interface Balance {
free: number;
used: number;
total: number;
}
export interface PartialBalances {
[currency: string]: number;
}
export interface Balances {
info: any;
[key: string]: Balance;
}
export interface DepositAddress {
currency: string;
address: string;
status: string;
info: any;
}
export interface Fee {
type: 'taker' | 'maker';
currency: string;
rate: number;
cost: number;
}
export interface WithdrawalResponse {
info: any;
id: string;
}
export interface DepositAddressResponse {
currency: string;
address: string;
info: any;
tag?: string;
}
// timestamp, open, high, low, close, volume
export type OHLCV = [number, number, number, number, number, number];
原版接口:
export interface Market {
[key: string]: any
id: string;
symbol: string;
base: string;
quote: string;
active: boolean;
precision: { amount: number, price: number, cost: number };
limits: { amount: MinMax, price: MinMax, cost?: MinMax };
info: any;
}
接口介绍:
{
'id': ' btcusd', // 在交易中引用的代币字符串
'symbol': 'BTC/USD', // 一对货币的大写字符串文字
'base': 'BTC', // 大写字符串。统一的基本货币代码
'quote': 'USD', // 大写字符串。统一的报价货币代码
'active': true, // 布尔值。 市场的状态
'precision': { // 小数点后的小数位数(精度)
'price': 8, // 整型。 如果交易所不支持,则可能丢失精度
'amount': 8, // 整型。 如果交易所不支持,则可能丢失精度
'cost': 8, // 整型。 很少交易所支持
},
'limits': { // 下单限制
'amount': {
'min': 0.01, // 订单数量应该大于这个值
'max': 1000, // 订单数量应该小于这个值
},
'price': { ... }, // 同上的min/max 表示订单的最高价和最低价
'cost': { ... }, // 同上的min/max 表示订单的金额(amount * price)
},
'info': { ... }, // 交易所原始未解析的市场信息
}
export interface Order {
id: string;
datetime: string;
timestamp: number;
lastTradeTimestamp: number;
status: 'open' | 'closed' | 'canceled';
symbol: string;
type: 'market' | 'limit';
side: 'buy' | 'sell';
price: number;
amount: number;
filled: number;
remaining: number;
cost: number;
trades: Trade[];
fee: Fee;
info: {};
}
接口介绍:
{
'id': '12345-67890:09876/54321', // 订单的唯一标识
'datetime': '2017-08-17 12:42:48.000', // ISO8601 时间戳
'timestamp': 1502962946216, // 时间戳
'lastTradeTimestamp': 1502962956216, // 此订单上最后交易的时间戳
'status': 'open', // 'open', 'closed', 'canceled' //订单状态:分别为:打开/关闭/取消
'symbol': 'ETH/BTC', // 交易对信息
'type': 'limit', // 'market', 'limit' // 交易方式: 市价交易 现价交易
'side': 'buy', // 'buy', 'sell' // 交易方向: 买入 卖出
'price': 0.06917684, // 基础货币/报价货币 的浮动价格
'amount': 1.5, // 下单数量(基于报价货币)
'filled': 1.1, // 成交数量(基于报价货币)
'remaining': 0.4, // 未成交数量(基于报价货币)
'cost': 0.076094524, // 'filled' * 'price' (总花费金额(基于报价货币))
'trades': [... ], // 这笔订单交易执行的列表(可能有多笔交易)
'fee': { // 手续费
'currency': 'BTC', // 手续费计价货币(通常是报价)
'cost': 0.0009, // 实际手续费用
'rate': 0.002, // 费率
},
'info': { ... }, // 原始未解析的数据
}
export interface OrderBook {
asks: [number, number][];
bids: [number, number][];
datetime: string;
timestamp: number;
nonce: number;
}
接口介绍:
{
'asks': [ // 询问价格 -> 买入价格 (询问数组)
[ price, amount ], // 价格 , 数量
[ price, amount ],
...
],
'bids': [ // 投标价格 -> 卖出价格
[ price, amount ], // [ float, float ]
[ price, amount ],
...
],
'timestamp': 1499280391811, // Unix Timestamp in milliseconds (seconds * 1000)
'datetime': '2017-07-05T18:47:14.692Z', // ISO8601 datetime string with milliseconds
}
价格和金额是浮动的。投标数组按价格降序排列。最佳(最高)投标价格是第一个要素,最差(最低)投标价格是最后一个要素。询问数组按价格升序排序。最佳(最低)要价是第一个要素,最差(最高)要价是最后一个要素。如果在交易所的订单簿中没有对应的订单,则出价/要价数组可以为空。
交易所可能会返回各个层次的订单堆栈的详细信息以供分析。它要么包含每个订单的详细信息,要么包含稍微少一点的详细信息,其中订单按价格和数量进行分组和合并。拥有更多的细节需要更多的流量和带宽,一般来说速度较慢,但具有更高的精度。拥有更少的细节通常更快,但在某些非常特殊的情况下可能还不够。
export interface Trade {
amount: number; // amount of base currency
datetime: string; // ISO8601 datetime with milliseconds;
id: string; // string trade id
info: {}; // the original decoded JSON as is
order?: string; // string order id or undefined/None/null
price: number; // float price in quote currency
timestamp: number; // Unix timestamp in milliseconds
type?: 'market' | 'limit'; // order type, 'market', 'limit' or undefined/None/null
side: 'buy' | 'sell'; // direction of the trade, 'buy' or 'sell'
symbol: string; // symbol in CCXT format
takerOrMaker: 'taker' | 'maker'; // string, 'taker' or 'maker'
cost: number; // total cost (including fees), `price * amount`
fee: Fee;
}
接口介绍:
{
'info': { ... }, // 原始的JSON返回信息
'id': '12345-67890:09876/54321', // 交易ID
'timestamp': 1502962946216, // 时间戳
'datetime': '2017-08-17 12:42:48.000', // ISO8601 时间
'symbol': 'ETH/BTC', // 交易对
'order': '12345-67890:09876/54321', // string/None/None/undefined
'type': 'limit', // 订单类型, 'market', 'limit' or undefined/None/null
'side': 'buy', // 交易方向, 'buy' or 'sell'
'takerOrMaker': 'taker', // string, 'taker' or 'maker' 订单接受者 / 订单创建者
'price': 0.06917684, // 基础货币/报价货币 的浮动价格
'amount': 1.5, // 基于报价货币
'cost': 0.10376526, // 总花费(包括手续费) price * amount
'fee': { // 同上(3.订单接口)
'cost': 0.0015,
'currency': 'ETH',
'rate': 0.002
},
}
export interface Ticker {
symbol: string;
info: object;
timestamp: number;
datetime: string;
high: number;
low: number;
bid: number;
bidVolume?: number;
ask: number;
askVolume?: number;
vwap?: number;
open?: number;
close?: number;
last?: number;
previousClose?: number;
change?: number;
percentage?: number;
average?: number;
quoteVolume?: number;
baseVolume?: number;
}
{
'symbol': // eg.('BTC/USD', 'ETH/BTC', ...)
'info': // 交易所API返回原始的数据
'timestamp': // 时间戳
'datetime': // ISO8601 时间
'high': float, // 最高价
'low': float, // 最低价
'bid': float, // 当前最高买价
'bidVolume': float, // 最高买价深度(可能为undefined)
'ask': float, // 当前最高卖价
'askVolume': float, // 最高卖价深度(可能为undefined)
'vwap': float, // 成交量加权平均价格
'open': float, // 开盘价
'close': float, // 上次成交价格(本期收盘价)
'last': float, // 与'close'一样,方便复制= =
'previousClose': float, // 前期收市价
'change': float, // 涨跌金额 (上次成交价-开盘价)
'percentage': float, // 涨跌幅度 (上次成交价/开盘价 * 100%)
'average': float, // 平均价格 (上次成交价+开盘价)/2
'baseVolume': float, // 24小时基本货币交易量
'quoteVolume': float, // 24小时报价货币交易量
}
export interface Transaction {
info: {};
id: string;
txid?: string;
timestamp: number;
datetime: string;
address: string;
type: "deposit" | "withdrawal";
amount: number;
currency: string;
status: "pending" | "ok";
updated: number;
fee: Fee;
}
接口详情:
{
'info': { ... }, // 交易所原始信息
'id': '123456', // 交易所提供的id
'txid': '0x68bfb29821c50ca35ef3762f887fd3211e4405aba1a94e448a4f218b850358f0',//事务ID
'timestamp': 1534081184515,
'datetime': '2018-08-12T13:39:44.515Z',
'addressFrom': '0x38b1F8644ED1Dbd5DcAedb3610301Bf5fa640D6f', // 发送者
'address': '0x02b0a9b7b4cDe774af0f8e47cb4f1c2ccdEa0806', // "from" or "to"
'addressTo': '0x304C68D441EF7EB0E2c056E836E8293BD28F8129', // 接收者
'tagFrom', '0xabcdef', // "tag" or "memo" or "payment_id" 与发送者相关
'tag': '0xabcdef' // "tag" or "memo" or "payment_id" associated with the address
'tagTo': '0xhijgklmn', // "tag" or "memo" or "payment_id" 与接收者相关
'type': 'deposit', // or 'withdrawal', string 存入或者取出
'amount': 1.2345, // float (不包含手续费)
'currency': 'ETH', // a common unified currency code, string
'status': 'pending', // 'ok', 'failed', 'canceled', string 状态
'updated': undefined, // 状态最后更改的UTC时间戳(精确到ms)
'comment': '由用于定义的注释或消息',
'fee': { // 同上
'currency': 'ETH',
'cost': 0.1234,
'rate': undefined
},
}
最后还有一个最重要的
Exchange
类的数据格式,下一章再详细翻译