| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- const CryptoJS = require('crypto')
- module.exports = class BinanceKit {
- // 创建签名
- static createSignature(secretKey, data) {
- const hmac = CryptoJS.createHmac('sha256', secretKey)
- hmac.update(BinanceKit.toQueryString(data))
- return hmac.digest('hex')
- }
- // 将map转换为queryString
- static toQueryString(data) {
- let queryString = ''
- for (let key in data) {
- queryString = queryString + `${key}=${data[key]}&`
- }
- return queryString.substring(0, queryString.length - 1)
- }
- // 获取最终QueryURL
- static toFinalQueryURL(url, data, signature) {
- return `${url}?${BinanceKit.toQueryString(data)}&signature=${signature}`
- }
- static buildExchangeInfoSymbols(symbols) {
- let buffer = ''
- let isFirst = true
- for (const symbol of symbols) {
- if (isFirst) {
- isFirst = false
- buffer = `["${symbol}"`
- } else {
- buffer = `${buffer},"${symbol}"`
- }
- }
- return `${buffer}]`
- }
- static parseBalancesToAccountAssetMap(balances) {
- const accountAssetMap = {}
- balances.forEach((balance) => {
- accountAssetMap[balance.asset] = balance.free
- })
- return accountAssetMap
- }
- static parsePriceTickFilterMap(exchangeInfoSymbols) {
- const filterMap = {}
- exchangeInfoSymbols.forEach(function(pairInfo) {
- const filter = pairInfo.filters.filter(filterObj => filterObj.filterType === 'PRICE_FILTER')[0]
- filterMap[pairInfo.symbol] = Math.log10(1 / parseFloat(filter.tickSize))
- })
- return filterMap
- }
- static parseLotSizeFilterMap(exchangeInfoSymbols) {
- const filterMap = {}
- exchangeInfoSymbols.forEach(function(pairInfo) {
- const filter = pairInfo.filters.filter(filterObj => filterObj.filterType === 'LOT_SIZE')[0]
- filterMap[pairInfo.symbol] = Math.log10(1 / parseFloat(filter.stepSize))
- })
- return filterMap
- }
- static parseCloseTicks(originKlines) {
- return originKlines.map(kline => {
- return parseFloat(kline[4])
- })
- }
- }
|