CCXT-15-提现和充值

1. 获取充值地址

要将资金存入交易所,你必须先从交易所获取一个你希望存入的数字货币的 地址。大多数交易所会为用户创建并管理这些地址。有些交易所也允许用户 创建用于充值的新地址。有些交易所则要求用户为每次充值都创建新的充值 地址。 用于充值的地址可以使用fetchDepositAddress方法获取在交易所中已有的地址, 也可以使用createDepositAddress创建新的地址。要查看交易所支持哪个方法, 可以使用exchange.has['fetchDepositAddress']exchange.has['createDepositAddress'] 属性,这两个方法都返回一个地址结构:

fetchDepositAddress (code, params = {})
createDepositAddress (code, params = {})
  • code:统一的货币代码,大写字符串
  • params:额外的可选参数

有些交易所也提供API方法来一次获取多个或全部充值地址:

fetchDepositAddresses (codes = undefined, params = {})

取决于交易所的要求,上述调用可能需要传入货币代码数组作为第一个参数。 fetchDepositAddresses方法返回一个地址对象数组。

2. 地址的数据结构

fetchDepositAddressfetchDepositAddressescreateDepositAddress方法返回的地址,结构如下:

{
    'currency': currency, // currency code
    'address': address,   // address in terms of requested currency
    'tag': tag,           // tag / memo / paymentId for particular currencies (XRP, XMR, ...)
    'info': response,     // raw unparsed data as returned from the exchange
}

_有些货币,例如 AEON, BTS, GXS, NXT, SBD, STEEM, STR, XEM, XLM, XMR, XRP, 交易所通常会要求提供一个额外的标签(tag)参数。_其他货币则将标签设置为 undefined / None / null。标签可以是备注、消息或支付ID,用来附加在提现交易 上。对于上述货币来说,标签是强制性的,因为交易所需要用它来区分不同的用户账户。当设置标签和地址时需要谨慎。标签不是你随便选择的字符串!你不能在标签里发送 用户消息和评论。标签字段的目的是正确定位你的钱包,因此必须是正确的。你应该只使用从交易所收到的标签,否则你的交易可能永远也不会到达目标地址。

3. 提现 - withdraw

使用交易所实例的withdraw方法从交易所提现。示例代码如下。 JavaScript:

exchange.withdraw (code, amount, address, tag = undefined, params = {})

Python:

exchange.withdraw(code, amount, address, tag=None, params={})

PHP:

$exchange->withdraw ($code, $amount, $address, $tag = null, $params = array ())

code参数表示货币代码(通常是三位大写字幕,但是不同情况下可能有所差异)。 withdraw方法返回一个字典,其中的提现ID字段值通常是链上交易的ID,或者 是交易所内部的提现请求ID。withdraw的返回值看起来像这样:

{
    'info' { ... },      // unparsed reply from the exchange, as is
    'id': '12345567890', // string withdrawal id, if any
}

有些交易所采用双因子认证的手段要求每一笔提现都进行人工确认。为了放行 你的提现请求,通常你不得不点击交易所发给你的邮件中的秘密链接,或者 在交易所网站上输入一个验证码,以便交易所确认提现交易是安全的。 在有些情况下,你也可以使用提现ID在稍后检查提现状态(是否成功)并 提交双因子确认码,这需要参考交易所的文档获取详细信息。

4. 查询充值记录 - fetchDeposits

使用ccxt统一API的fetchDeposits方法查询充值记录。示例代码如下。 JavaScript:

// fetchDeposits (code = undefined, since = undefined, limit = undefined, params = {})
if (exchange.has['fetchDeposits']) {
    const deposits = await exchange.fetchDeposits (code, since, limit, params)
} else {
    throw new Error (exchange.id + ' does not have the fetchDeposits method')
}

Python:

# fetch_deposits(code = None, since = None, limit = None, params = {})
if exchange.has['fetchDeposits']:
    deposits = exchange.fetch_deposits(code, since, limit, params)
else:
    raise Exception (exchange.id + ' does not have the fetch_deposits method')

PHP:

// fetch_deposits ($code = null, $since = null, $limit = null, $params = {})
if ($exchange->has['fetchDeposits']) {
    $deposits = $exchange->fetch_deposits ($code, $since, $limit, $params);
} else {
    throw new Exception ($exchange->id . ' does not have the fetch_deposits method');
}

5. 查询提现记录 - fetchWithdrawals

使用ccxt统一API的fetchWithdrawals方法查询提现记录。示例代码如下。 JavaScript:

// fetchWithdrawals (code = undefined, since = undefined, limit = undefined, params = {})
if (exchange.has['fetchWithdrawals']) {
    const withdrawals = await exchange.fetchWithdrawals (code, since, limit, params)
} else {
    throw new Error (exchange.id + ' does not have the fetchWithdrawals method')
}

Python:

# fetch_withdrawals(code = None, since = None, limit = None, params = {})
if exchange.has['fetchWithdrawals']:
    withdrawals = exchange.fetch_withdrawals(code, since, limit, params)
else:
    raise Exception (exchange.id + ' does not have the fetch_withdrawals method')

PHP:

// fetch_withdrawals ($code = null, $since = null, $limit = null, $params = {})
if ($exchange->has['fetchWithdrawals']) {
    $withdrawals = $exchange->fetch_withdrawals ($code, $since, $limit, $params);
} else {
    throw new Exception ($exchange->id . ' does not have the fetch_withdrawals method');
}

6. 查询手续费 - fetchFees

手续费通常可以分为以下两类:

  • 交易手续费:向交易所支付的交易手续费,通常按成交量的百分点计取
  • 资金操作手续费:在充值和提现时向交易所支付的费用,包含链上交易费用

因为手续费结构会依赖于用户交易的货币的实际交易量,手续费是与账户相关的。 ccxt的统一API中,提供了以下方法用于账户相关的手续费处理:

  • fetchFees (params = {})
  • fetchTradingFees (params = {})
  • fetchFundingFees (params = {})

手续费方法将返回一个统一的手续费结构,该结构在整个ccxt库中保持统一, 通常采用交易市场或货币为索引键。手续费结构如下:

{
    'type': takerOrMaker,
    'currency': 'BTC', // the unified fee currency code
    'rate': percentage, // the fee rate, 0.05% = 0.0005, 1% = 0.01, ...
    'cost': feePaid, // the fee cost (amount * fee rate)
}

手续费这一部分的代码目前还在进行中,因此其中有些方法和属性在某些交易所 可能还会缺失。 不要使用已经废弃的.fees属性。