mirror of
https://github.com/discountry/ritmex-bot.git
synced 2026-09-10 16:58:08 +00:00
commit
This commit is contained in:
@@ -0,0 +1,113 @@
|
||||
import { hibachi } from '../../js/ccxt.js';
|
||||
import fs from 'fs';
|
||||
/*
|
||||
In order to run the examples, you need to setup keys.local.json file like this:
|
||||
```
|
||||
{
|
||||
"hibachi": {
|
||||
"accountId": 111,
|
||||
"apiKey": "1111111111111111111111111111111111111111111=",
|
||||
"privateKey": "0x1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"publicKey": "0x11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111",
|
||||
"withdrawAddress": "0x1111111111111111111111111111111111111111"
|
||||
}
|
||||
}
|
||||
```
|
||||
You can get the accountId, apiKey and privateKey from Hibachi App by creating an API key
|
||||
After that you can view the API key, it will show the publicKey (only for trustless account, you can ignore it for exchange managed account)
|
||||
Note: if you are using exchange managed account, the privateKey's length will be 44 instead
|
||||
The withdrawAddress can be any ethereum wallet address, that is used to receive funds for withdraw tests
|
||||
*/
|
||||
async function example() {
|
||||
const keys = JSON.parse(fs.readFileSync('keys.local.json', 'utf-8'));
|
||||
const exchange = new hibachi(keys.hibachi);
|
||||
exchange.verbose = true;
|
||||
const markets = await exchange.fetchMarkets();
|
||||
console.log('fetchMarkets', markets.length, markets[0]);
|
||||
const currencies = await exchange.fetchCurrencies();
|
||||
console.dir(currencies, { depth: null, colors: true });
|
||||
const trades = await exchange.fetchTrades("BTC/USDT:USDT");
|
||||
console.log('fetchTrades', trades.length, trades[0]);
|
||||
const tenMinutes = 10 * 60 * 1000;
|
||||
const until = Date.now();
|
||||
const since = until - tenMinutes;
|
||||
const ohlcv = await exchange.fetchOHLCV('BTC/USDT:USDT', '5min', since, 100, { until });
|
||||
console.log('fetchOHLCV', ohlcv.length, ohlcv[0]);
|
||||
const balance = await exchange.fetchBalance();
|
||||
console.dir(balance, { depth: null, colors: true });
|
||||
const ticker = await exchange.fetchTicker('BTC/USDT:USDT');
|
||||
console.log('fetchTicker', ticker);
|
||||
// createOrder, editOrder and cancelOrder
|
||||
const order1 = await exchange.createOrder('BTC/USDT:USDT', 'market', 'buy', 0.00002);
|
||||
const order2 = await exchange.createOrder('BTC/USDT:USDT', 'market', 'sell', 0.00002);
|
||||
console.log('create market order', order1.id, order2.id);
|
||||
const order3 = await exchange.createOrder('ETH/USDT:USDT', 'limit', 'buy', 1.234, 1.234);
|
||||
const order4 = await exchange.editOrder(order3.id, 'ETH/USDT:USDT', 'limit', 'buy', 0.987, 1.123);
|
||||
const order5 = await exchange.cancelOrder(order3.id);
|
||||
console.log('create, edit and cancel limit order', order3.id, order4.id, order5.id);
|
||||
// advanced order parameters
|
||||
const postOnlyOrder = await exchange.createOrder('BTC/USDT:USDT', 'limit', 'buy', 2.0, 2.0, { 'timeInForce': 'PO' });
|
||||
await exchange.cancelOrder(postOnlyOrder.id);
|
||||
const iocOrder = await exchange.createOrder('BTC/USDT:USDT', 'limit', 'buy', 2.0, 2.0, { 'timeInForce': 'IOC' });
|
||||
await exchange.createOrder('BTC/USDT:USDT', 'market', 'buy', 0.00002);
|
||||
const reduceOnlyOrder = await exchange.createOrder('BTC/USDT:USDT', 'market', 'sell', 0.00002, undefined, { 'reduceOnly': true });
|
||||
const triggerOrder = await exchange.createOrder('BTC/USDT:USDT', 'limit', 'sell', 2.0, 2.0, { 'triggerPrice': '2.0' });
|
||||
await exchange.cancelOrder(triggerOrder.id);
|
||||
console.log('postOnly, IOC, reduceOnly, trigger order', postOnlyOrder.id, iocOrder.id, reduceOnlyOrder.id, triggerOrder.id);
|
||||
const order1_info = await exchange.fetchOrder(order1.id, 'BTC/USDT:USDT');
|
||||
console.log('fetchOrder', order1_info);
|
||||
const orderbook = await exchange.fetchOrderBook('BTC/USDT:USDT');
|
||||
console.log('fetchOrderBook', orderbook);
|
||||
const withdrawResponse = await exchange.withdraw('USDT', 0.02, keys.hibachi.withdrawAddress);
|
||||
console.log(withdrawResponse);
|
||||
const myTrades = await exchange.fetchMyTrades('BTC/USDT:USDT', undefined, 1);
|
||||
console.log('fetchMyTrades', myTrades);
|
||||
const tradingFees = await exchange.fetchTradingFees();
|
||||
console.log('fetchTradingFees', tradingFees);
|
||||
const openOrders = await exchange.fetchOpenOrders();
|
||||
console.log('fetchOpenOrders', openOrders);
|
||||
const openOrdersWithLimit = await exchange.fetchOpenOrders(undefined, undefined, 1);
|
||||
console.log('fetchOpenOrdersWithLimit', openOrdersWithLimit);
|
||||
const openOrdersBTC = await exchange.fetchOpenOrders('BTC/USDT:USDT');
|
||||
console.log('fetchOpenOrdersBTC', openOrdersBTC);
|
||||
const openOrdersSince = await exchange.fetchOpenOrders(undefined, 1752552000000); // 7/15/2025 00:00 UTC
|
||||
console.log('fetchOpenOrdersSince', openOrdersSince);
|
||||
if (keys.hibachi.publicKey !== undefined) {
|
||||
const depositAddress = await exchange.fetchDepositAddress('USDT', { 'publicKey': keys.hibachi.publicKey });
|
||||
console.log('fetchDepositAddress', depositAddress);
|
||||
}
|
||||
const ledger = await exchange.fetchLedger('USDT', undefined, 2);
|
||||
console.log('fetchLedger', ledger);
|
||||
const deposits = await exchange.fetchDeposits();
|
||||
console.log('fetchDeposits', deposits);
|
||||
const withdrawals = await exchange.fetchWithdrawals();
|
||||
console.log('fetchWithdrawals', withdrawals);
|
||||
const timestamp = await exchange.fetchTime();
|
||||
console.log('fetchTime', timestamp);
|
||||
const openInterest = await exchange.fetchOpenInterest('BTC/USDT:USDT');
|
||||
console.log('fetchOpenInterest', openInterest);
|
||||
const fundingRate = await exchange.fetchFundingRate('BTC/USDT:USDT');
|
||||
console.log('fetchFundingRate', fundingRate);
|
||||
const fundingRateHistory = await exchange.fetchFundingRateHistory('BTC/USDT:USDT', undefined, 2);
|
||||
console.log('fetchFundingRateHistory', fundingRateHistory);
|
||||
// Batch orders
|
||||
const createOrders = await exchange.createOrders([
|
||||
{ 'symbol': 'ETH/USDT:USDT', 'type': 'limit', 'side': 'buy', 'amount': 1.234, 'price': 1.234 },
|
||||
{ 'symbol': 'BTC/USDT:USDT', 'type': 'limit', 'side': 'buy', 'amount': 1.001, 'price': 1.001 },
|
||||
{ 'symbol': 'ETH/USDT:USDT', 'type': 'limit', 'side': 'buy', 'amount': 1.002, 'price': 1.002 },
|
||||
{ 'symbol': 'ETH/USDT:USDT', 'type': 'limit', 'side': 'buy', 'amount': 1.003, 'price': 1.003 },
|
||||
]);
|
||||
console.log('createOrders', createOrders);
|
||||
const editOrders = await exchange.editOrders([
|
||||
// @ts-expect-error OrderRequest lacks `id` but we expects it for editing
|
||||
{ 'id': createOrders[0].id, 'symbol': 'ETH/USDT:USDT', 'type': 'limit', 'side': 'buy', 'amount': 1.111, 'price': 0.999 },
|
||||
// @ts-expect-error OrderRequest lacks `id` but we expects it for editing
|
||||
{ 'id': createOrders[1].id, 'symbol': 'BTC/USDT:USDT', 'type': 'limit', 'side': 'buy', 'amount': 1.112, 'price': 0.998 },
|
||||
]);
|
||||
console.log('editOrders', editOrders);
|
||||
const cancelOrders = await exchange.cancelOrders([createOrders[0].id, createOrders[1].id]);
|
||||
console.log('cancelOrders', cancelOrders);
|
||||
const cancelAll = await exchange.cancelAllOrders('ETH/USDT:USDT');
|
||||
console.log(cancelAll);
|
||||
}
|
||||
example();
|
||||
Reference in New Issue
Block a user