ccxt 中文接口文档---(数据结构篇)(一)

ccxt:神器级的数字货币万能api接口

此文档为 ccxt 的详细接口解释文档,仅做学习用途。

先简单介绍下ccxt

ccxt是一个“all-in-one”一站式数字货币万能api接口模块库,目前支持120多个数字货币交易所,包括币安,火币,okex等等这些国内用户常用的数字货币交易所。

下面直接进入正题

1. 自有属性

export const version: string;  // ccxt 的版本号
export const exchanges: string[]; // ccxt 当前支持的所有交易所

2. 数据结构(依赖)

  1. 基础货币:要买入的货币 | 报价货币:要卖出的货币如BTC/USDT = 10000 BTC是基础货币,USDT是报价货币

1. 基础变量 数据结构

该部分暂时不详解,等到介绍交易所数据结构或者使用时再详细解释。

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];

2. 交易对 数据结构

原版接口:

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':      { ... }, // 交易所原始未解析的市场信息
}

3. 订单 数据结构

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': { ... },              // 原始未解析的数据
}

4. 订单列表 数据结构

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
}

价格和金额是浮动的。投标数组按价格降序排列。最佳(最高)投标价格是第一个要素,最差(最低)投标价格是最后一个要素。询问数组按价格升序排序。最佳(最低)要价是第一个要素,最差(最高)要价是最后一个要素。如果在交易所的订单簿中没有对应的订单,则出价/要价数组可以为空。

交易所可能会返回各个层次的订单堆栈的详细信息以供分析。它要么包含每个订单的详细信息,要么包含稍微少一点的详细信息,其中订单按价格和数量进行分组和合并。拥有更多的细节需要更多的流量和带宽,一般来说速度较慢,但具有更高的精度。拥有更少的细节通常更快,但在某些非常特殊的情况下可能还不够。

5. 交易信息 数据结构


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
    },
}

6. 行情信息 数据结构

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小时报价货币交易量
}

7. 链上信息 交易结构

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类的数据格式,下一章再详细翻译

你可能感兴趣的:(区块链)