Example: orderManagement.ts
Static snapshot for Kraken/Spot/Private/orderManagement.ts.
Example Path
Kraken/Spot/Private/orderManagement.ts
Source Link
Repository source: https://github.com/sieblyio/crypto-api-examples/blob/master/examples/Kraken/Spot/Private/orderManagement.ts
Code Snapshot
/* eslint-disable @typescript-eslint/no-unused-vars */
import { SpotClient } from '@siebly/kraken-api';
// This example shows how to call Kraken API endpoint with either node.js,
// javascript (js) or typescript (ts) with the npm module "@siebly/kraken-api" for Kraken exchange
// for ORDER MANAGEMENT
// initialise the client
/**
*
* Kraken API uses API Key and Private Key (base64 encoded)
*
* Example:
* {
* apiKey: 'your-api-key',
* apiSecret: 'your-base64-encoded-private-key',
* }
*
* API Key Permissions Required:
* - Funds permissions - Query (for balance)
* - Orders and trades - Query open orders & trades
* - Orders and trades - Query closed orders & trades
*
*/
const client = new SpotClient({
apiKey: process.env.API_SPOT_KEY || 'insertApiKeyHere',
apiSecret: process.env.API_SPOT_SECRET || 'insertApiSecretHere',
});
async function getTradeBalance() {
try {
// Get trade balance summary
const tradeBalance = await client.getTradeBalance();
console.log('Trade Balance: ', JSON.stringify(tradeBalance, null, 2));
} catch (e) {
console.error('Get trade balance error: ', e);
}
}
async function getOpenOrders() {
try {
// Get all open orders
const openOrders = await client.getOpenOrders();
console.log('Open Orders: ', JSON.stringify(openOrders, null, 2));
} catch (e) {
console.error('Get open orders error: ', e);
}
}
async function getOpenOrdersWithTrades() {
try {
// Get open orders with related trades
const openOrdersWithTrades = await client.getOpenOrders({
trades: true, // Include trades related to orders
});
console.log(
'Open Orders with Trades: ',
JSON.stringify(openOrdersWithTrades, null, 2),
);
} catch (e) {
console.error('Get open orders with trades error: ', e);
}
}
async function getOpenOrdersByClientId() {
try {
// Get open orders filtered by client order ID
const ordersByClId = await client.getOpenOrders({
cl_ord_id: '9cc788d8-9c00-4b25-94d3-26d93603948d',
});
console.log(
'Open Orders by Client ID: ',
JSON.stringify(ordersByClId, null, 2),
);
} catch (e) {
console.error('Get open orders by client ID error: ', e);
}
}
async function getClosedOrders() {
try {
// Get closed orders (last 50)
const closedOrders = await client.getClosedOrders();
console.log('Closed Orders: ', JSON.stringify(closedOrders, null, 2));
} catch (e) {
console.error('Get closed orders error: ', e);
}
}
async function getClosedOrdersWithFilters() {
try {
// Get closed orders with filters
const closedOrdersFiltered = await client.getClosedOrders({
trades: true, // Include related trades
start: Math.floor(Date.now() / 1000) - 86400 * 7, // Last 7 days
closetime: 'close', // Filter by close time
});
console.log(
'Closed Orders (Last 7 days): ',
JSON.stringify(closedOrdersFiltered, null, 2),
);
} catch (e) {
console.error('Get closed orders with filters error: ', e);
}
}
async function getClosedOrdersByClientId() {
try {
// Get closed orders by client order ID
const closedByClId = await client.getClosedOrders({
cl_ord_id: '9cc788d8-9c00-4b25-94d3-26d93603948d',
trades: true,
});
console.log(
'Closed Orders by Client ID: ',
JSON.stringify(closedByClId, null, 2),
);
} catch (e) {
console.error('Get closed orders by client ID error: ', e);
}
}
async function getOrdersByTxId() {
try {
// Query specific orders by transaction ID
const ordersByTxId = await client.getOrders({
txid: 'OQCLML-BW3P3-BUCMWZ,OZNOZE-2DOVH-Q4DOQT',
trades: true,
});
console.log('Orders by TxID: ', JSON.stringify(ordersByTxId, null, 2));
} catch (e) {
console.error('Get orders by TxID error: ', e);
}
}
// Uncomment the function you want to test:
// getTradeBalance();
// getOpenOrders();
// getOpenOrdersWithTrades();
// getOpenOrdersByClientId();
// getClosedOrders();
// getClosedOrdersWithFilters();
// getClosedOrdersByClientId();
// getOrdersByTxId();
This is a static, crawlable snapshot. The interactive app loads after JavaScript starts and can refresh live data.