委托单中的数值要求与格式化方法
ccxt的用户应当始终遵守精度和限值要求!委托单中的值应当满足以下条件:
- 委托单amount > limits['min']['amount']
- 委托单amount < limits['max']['amount']
- 委托单price > limits['min']['price']
- 委托单price < limits['max']['price']
- 委托单cost (amount * price) > limits['min']['cost']
- 委托单cost (amount * price) < limits['max']['cost']
- amount的精度 <= precision['amount']
- price 的精度 <= precision['price']
有些交易所的委托单可能不会包含上面提到的所有的值。
数值格式化方法
每个交易所都有它自己的取整、计数和填充模式。
CCXT支持的取整模式有:
- ROUND – 取整精度要求之后的小数位
- TRUNCATE– 截断精度要求之后的小数位
数值精度计数模式可以使用exchange.precisionMode
属性访问。
CCXT支持的计数模式包括:
- DECIMAL_PLACES – 统计所有的数字,99%的交易所使用这种计数模式
- SIGNIFICANT_DIGITS – 仅统计非零数字,有些交易所(bitfinex等)采用这种模式的计数
- TICK_SIZE – 有些交易所只允许某个特定值的整数倍(bitmex使用这种模式)
CCXT支持的填充模式包括:
- NO_PADDING – 无填充,大多数情况下的默认模式
- PAD_WITH_ZERO – 使用0字符填充至精度要求
交易所基类包含了decimalToPrecision
来帮助格式化数值为要求的精度,
它支持不同的取整、计数和填充模式。
JavaScript方法原型:
function decimalToPrecision (x, roundingMode, numPrecisionDigits, countingMode = DECIMAL_PLACES, paddingMode = NO_PADDING)
Python方法原型:
def decimal_to_precision(n, rounding_mode=ROUND, precision=None, counting_mode=DECIMAL_PLACES, padding_mode=NO_PADDING):
Php方法原型:
function decimalToPrecision ($x, $roundingMode = ROUND, $numPrecisionDigits = null, $countingMode = DECIMAL_PLACES, $paddingMode = NO_PADDING)
可以访问以下示例代码查看如何使用decimalToPrecision
方法来格式化字符串和浮点数: