3

据我所知,CCXT 没有提供创建订单类型的功能:
“我想花 10 USDT 购买 BTC”
相反,你唯一能做的就是指定你想要的基础货币(BTC)的数量购买,如下例所示:

const order = await exchange.createOrder(symbol, 'market', 'buy', amount, price);

或者

const symbol = 'BTC/USD';
const amount = 2;
const price = 9000;
cost = amount * price;
const order = await exchange.createMarketBuyOrder (symbol, cost);

有什么我错过的东西可以提供我需要的功能吗?
我能想到的唯一解决方案是获取基础货币的价格并计算它等于 10 USDT 的百分比,这样我就可以将其用作amount上面的示例。

4

1 回答 1

0

大多数交易所api只取基本数量,因此您需要根据市场价格进行转换

const ccxt = require("ccxt");

const exchange = new ccxt.binance({
  apiKey: '...',
  secret: '...',
  options: {},
});

const get_amount_from_quote = async (quote_amount, symbol) => {
  const tickers = await exchange.fetch_tickers();
  const price = tickers[symbol]["close"];
  return quote_amount / price;
};

const symbol = "ETH/USDT";
const amount = await get_amount_from_quote(10, symbol);
const order = await exchange.createOrder(
  symbol,
  "market",
  "buy",
  amount,
  price
);

一些交易所,比如 Binance,指定你可以quoteOrderQuantity他们的 api中传入

Binance Api 报价订单数量文档

并且您始终可以通过参数传入交换特定params参数

const order = await exchange.createOrder(
  symbol,
  "market",
  "buy",
  undefined,
  price,
  {
    quoteOrderQty: 10,
  }
);
于 2022-01-22T23:01:32.673 回答