UNPKG

sfccxt

Version:

A JavaScript / Python / PHP cryptocurrency trading library with support for 130+ exchanges

87 lines (60 loc) 2.59 kB
'use strict' // ---------------------------------------------------------------------------- const assert = require ('assert') , ccxt = require ('../../../ccxt.js') // ---------------------------------------------------------------------------- // will try to place a buy order at the minimum price level on minimum amount possible // will skip if balance is positive or market limits are not set module.exports = async (exchange, symbol, balance) => { if (!exchange.has.createOrder) { console.log ('createOrder() is not supported') return } const markets = await exchange.loadMarkets () const market = markets[symbol] if (market.limits === undefined) { console.log ('market.limits property is not set, will not test order creation') return } const { price, amount, cost } = market.limits if (price === undefined || amount === undefined || cost === undefined) { console.log ('market.limits.[price|amount|cost] property is not set, will not test order creation') return } let minPrice = price.min let minAmount = amount.min // will be adjusted co cover minCost if needed const minCost = cost.min if (minPrice === undefined || minAmount === undefined || minCost === undefined) { console.log ('min limits are not set, will not test order creation') return } if (minCost > minPrice * minAmount) { minAmount = minCost / minPrice } minPrice = exchange.priceToPrecision (symbol, minPrice) minAmount = exchange.amountToPrecision (symbol, minAmount) if (balance === undefined) { console.log ('balance is not set, cannot ensure safety, will not test order creation') return } const { base, quote } = market if (balance[quote] !== undefined && balance[quote].total > 0) { console.log ('balance is not empty, will not test order creation') return } try { console.log ('creating limit buy order...', symbol, minAmount, minPrice) const order = await exchange.createLimitBuyOrder (symbol, minAmount, minPrice) console.log ('order created although it should not had to - cleaning up') console.log (order) await exchange.cancelOrder (order.id, symbol) assert.fail () } catch (e) { if (e instanceof ccxt.InsufficientFunds) { console.log ('InsufficientFunds thrown as expected') } else { console.log ('InsufficientFunds failed, exception follows:') throw e } } }