Poloniex Node.js API
Node.js library for Poloniex.
Installation
npm install poloniex-node-api
Usage
Legacy API
See here
PublicClient
import { PublicClient } from "poloniex-node-api";
const client = new PublicClient();
const markets = await client.getMarkets();
const symbol = "ETH_BTC";
const volume = await client.getMarket({ symbol });
const currency = "BNB";
const currency_info = await client.getCurrency({ currency });
or
const includeMultiChainCurrencies = true;
const all = await client.getCurrency({ includeMultiChainCurrencies });
const time = await client.getSystemTime();
const prices = await client.getPrices();
const symbol = "ETH_BTC";
const price = await client.getPrice({ symbol });
const prices = await client.getMarkPrices();
const symbol = "ZEC_USDT";
const price = await client.getMarkPrice({ symbol });
const symbol = "ZEC_USDT";
const prices = await client.getMarkPriceComponents({ symbol });
const symbol = "ETH_BTC";
const limit = 5;
const scale = "0.01";
const book = await client.getOrderBook({ symbol, limit, scale });
const symbol = "ETH_BTC";
const interval = "HOUR_1";
const limit = 2;
const endTime = Date.now();
const startTime = endTime - 1000 * 60 * 60 * 24;
const candles = await client.getOrderBook({
symbol,
interval,
limit,
startTime,
endTime,
});
const symbol = "ETH_BTC";
const limit = 2;
const trades = await client.getPublicTrades({ symbol, limit });
const tickers = await client.getTickers();
const symbol = "ETH_BTC";
const ticker = await client.getTicker({ symbol });
const currency = "ETH";
const collateral = await client.getCollateral({ currency });
or
const all = await client.getCollateral();
const symbol = "ETH_BTC";
const ticker = await client.getTicker({ symbol });
AuthenticatedClient
import { AuthenticatedClient } from "poloniex-node-api";
const key = "poloniex-api-key";
const secret = "poloniex-api-secret";
const client = new AuthenticatedClient({ key, secret });
Accounts
const accounts = await client.getAccounts();
const balances = await client.getAccountBalances();
const activity = await client.getAccountActivity();
const currency = "USDT";
const amount = "10.5";
const fromAccount = "SPOT";
const toAccount = "FUTURES";
const { transferId } = await client.transfer({
currency,
amout,
fromAccount,
toAccount,
});
const transfers = await client.getAccountTransfers();
const fee_info = await client.getFeeInfo();
Wallets
const wallets = await client.getWallets();
const { deposits, withdrawals } = await client.getWalletsActivity();
const { address } = await client.newAddress();
const { withdrawalRequestsId } = await client.withdraw();
Margin
const info = await client.getMargin();
const status = await client.getBorrowStatus();
const size = await client.getMaxSize();
Orders
const symbol = "BTC_USDT";
const type = "LIMIT";
const quantity = "100";
const side = "BUY";
const price = "40000.50000";
const timeInForce = "IOC";
const clientOrderId = "1234Abc";
const { id, clientOrderId } = await client.createOrder({
symbol,
type,
quantity,
side,
price,
timeInForce,
clientOrderId,
});
or
const symbol = "BTC_USDT";
const quantity = "100";
const side = "BUY";
const { id } = await client.createOrder({ symbol, quantity, side });
const orders = [
{ symbol: "BTC_USDT", amount: "100", side: "BUY" },
{
symbol: "BTC_USDT",
type: "LIMIT",
quantity: "100",
side: "BUY",
price: "40000.50000",
timeInForce: "IOC",
clientOrderId: "1234Abc",
},
{ symbol: "ETH_USDT", amount: "1000", side: "BUY" },
{
symbol: "TRX_USDT",
type: "LIMIT",
quantity: "15000",
side: "SELL",
price: "0.0623423423",
timeInForce: "IOC",
clientOrderId: "456Xyz",
},
];
const response = await client.createOrders(orders);
const id = "234235233423";
const price = "18000";
const clientOrderId = "1234";
const response = await client.replaceOrder({ id }, { price, clientOrderId });
or
const clientOrderId = "1234Abc";
const price = "18000";
const quantity = "20";
const response = await client.replaceOrder(
{ clientOrderId },
{ price, quantity },
);
const symbol = "ELON_USDC";
const side = "SELL";
const direction = "PRE";
const limit = 10;
const orders = await client.getOpenOrders({ symbol, side, direction, limit });
or
const orders = await client.getOpenOrders();
const id = "21934611974062080";
const order = await client.getOrder({ id });
or by clientOrderId
const clientOrderId = "123";
const order = await client.getOrder({ clientOrderId });
const id = "21934611974062080";
const order = await client.cancelOrder({ id });
or by clientOrderId
const clientOrderId = "123";
const order = await client.cancelOrder({ clientOrderId });
const orders = [{ id: "12345" }, { clientOrderId: "myId-1" }];
const results = await client.cancelOrders(orders);
const symbols = ["BTC_USDT", "ETH_USDT"];
const accountTypes = ["SPOT"];
const results = await client.cancelAllOrders({ symbols, accountTypes });
or (to cancel all orders)
const results = await client.cancelAllOrders();
const timeout = 60;
const status = await client.killSwitch({ timeout });
const status = await client.getKillSwitch();
Smart Orders
const symbol = "BTC_USDT";
const side = "BUY";
const type = "STOP_LIMIT";
const quantity = "100";
const price = "60100.00";
const timeInForce = "FOK";
const stopPrice = "60000.00";
const clientOrderId = "999999910";
const { id, clientOrderId } = await client.createSmartOrder({
symbol,
side,
type,
quantity,
price,
timeInForce,
stopPrice,
clientOrderId,
});
- [
replaceSmartOrder
](https://docs.poloniex.com/#authenticated-endpoints-smart-orders-cancel-replace-order
const id = "234235233423";
const stopPrice = "18000";
const clientOrderId = "1234Abc";
const response = await client.replaceOrder(
{ id },
{ stopPrice, clientOrderId },
);
or by clientOrderId
const clientOrderId = "1234Abc";
const price = "18000";
const quantity = "20";
const response = await client.replaceOrder(
{ clientOrderId },
{ stopPrice, quantity },
);
const limit = 10;
const orders = await client.getOpenSmartOrders({ limit });
or
const orders = await client.getOpenSmartOrders();
const id = "14368195657859072";
const order = await client.getSmartOrder({ id });
or by clientOrderId
const clientOrderId = "18113";
const order = await client.getSmartOrder({ clientOrderId });
const id = "9876543";
const order = await client.cancelSmartOrder({ id });
or by clientOrderId
const clientOrderId = "88888";
const order = await client.cancelSmartOrder({ clientOrderId });
const orders = [{ id: "12345" }, { clientOrderId: "myId-1" }];
const results = await client.cancelSmartOrders(orders);
const symbols = ["BTC_USDT", "ETH_USDT"];
const accountTypes = ["SPOT"];
const results = await client.cancelAllSmartOrders({ symbols, accountTypes });
or (to cancel all orders)
const results = await client.cancelAllSmartOrders();
Order history
const type = ["MARKET", "LIMIT"];
const side = "BUY";
const symbol = "TRX_USDC";
const states = ["FILLED", "PARTIALLY_CANCELED"];
const limit = 10;
const hideCancel = true;
const startTime = 1649106321040;
const endTime = 1649427963598;
const orders = await client.getOrders({
type,
side,
symbol,
states,
limit,
hideCancel,
startTime,
endTime,
});
Trades
const limit = 10;
const endTime = 1648635115535;
const startTime = endTime - 1000 * 60 * 60;
const direction = "PRE";
const symbols = ["BTC_USDT", "ETH_USDT"];
const trades = await client.getTrades({
limit,
startTime,
endTime,
direction,
symbols,
});
const id = "30249408733945856";
const trades = await client.getOrderTrades({ id });
WebSocketClient
const key = "<POLONIEX API KEY>";
const secret = "<POLONIEX API SECRET>";
const client = new WebSocketClient({ key, secret })
.on("message", (msg) => {
console.log("Message:\t", msg);
})
.on("error", (error) => {
console.log("Error:\t", error);
});
await client.connectPublicWS();
await client.connectPrivateWS();
await client.disconnectPublicWS();
await client.disconnectPrivateWS();
await client.auth();
const ac = new AbortController();
setTimeout(() => {
ac.abort();
}, 10000).unref();
await client.pingPublic({ signal: ac.signal });
await client.pingPrivate();
await client.unsubscribePublic();
await client.unsubscribePrivate();
const { subscriptions } = await client.getPublicSubscriptions();
const { subscriptions } = await client.getPrivateSubscriptions();
const payload = {
event: "subscribe",
channel: ["candles_minute_1", "ticker"],
symbols: ["BTC_USDT", "ETH_USDT"],
};
await client.send(payload, "public");
or
const payload = {
event: "subscribe",
channel: ["orders", "balances"],
symbols: ["all"],
};
await client.send(payload, "private");
Candlesticks
subscribeCandles
await client.subscribeCandles();
unsubscribeCandles
await client.unsubscribeCandles();
candles
const channel = "candles_day_1";
for await (const candle of client.candles()) {
console.log(candle);
}
Trades
subscribeTrades
const symbols = ["BTC_USDT", "ETH_USDT"];
await client.subscribeTrades({ symbols });
unsubscribeTrades
const symbols = ["BTC_USDT"];
await client.unsubscribeTrades({ symbols });
trades
for await (const trade of client.trades()) {
console.log(trade);
}
Ticker
subscribeTicker
const symbols = "all";
await client.subscribeTicker({ symbols });
unsubscribeTicker
const symbols = "all";
await client.unsubscribeTicker({ symbols });
tickers
for await (const ticker of client.tickers()) {
console.log(ticker);
}
Book
subscribeBook
await client.subscribeBook();
unsubscribeBook
const symbols = "all";
await client.unsubscribeBook({ symbols });
books
const depth = 10;
for await (const book of client.books({ depth })) {
console.log(book);
}
Book Level 2
subscribeLv2Book
const symbols = ["BTC_USDT"];
await client.subscribeLv2Book({ symbols });
unsubscribeLv2Book
const symbols = "all";
await client.unsubscribeLv2Book({ symbols });
booksLv2
for await (const book of client.booksLv2()) {
console.log(book);
}
Orders
subscribeOrders
const symbols = "all";
await client.subscribeOrders({ symbols });
unsubscribeOrders
const symbols = "all";
await client.unsubscribeOrders({ symbols });
orders
for await (const order of client.orders()) {
console.log(order);
}
Balances
subscribeBalances
await client.subscribeBalances();
unsubscribeBalances
await client.unsubscribeBalances();
balances
for await (const balance of client.balances()) {
console.log(balance);
}
Test
npm test
Coverage
npm run coverage