first commit
This commit is contained in:
commit
aa7869eb33
386 files changed
+69375
No files matched your search
@@ -0,0 +1,51 @@
|
||||
const _ = require('lodash');
|
||||
const fs = require('fs');
|
||||
const request = require('request-promise');
|
||||
const Promise = require('bluebird');
|
||||
|
||||
|
||||
let getOrderMinSize = currency => {
|
||||
if (currency === 'BTC') return 0.001;
|
||||
else if (currency === 'ETH') return 0.01;
|
||||
else if (currency === 'USDT') return 10;
|
||||
else return 1;
|
||||
};
|
||||
|
||||
const options = {
|
||||
url: 'https://www.binance.com/exchange/public/product',
|
||||
headers: {
|
||||
Connection: 'keep-alive',
|
||||
'User-Agent': 'Request-Promise',
|
||||
},
|
||||
json: true,
|
||||
};
|
||||
|
||||
request(options)
|
||||
.then(body => {
|
||||
if (!body && !body.data) {
|
||||
throw new Error('Unable to fetch product list, response was empty');
|
||||
}
|
||||
|
||||
let assets = _.uniqBy(_.map(body.data, market => market.baseAsset));
|
||||
let currencies = _.uniqBy(_.map(body.data, market => market.quoteAsset));
|
||||
let pairs = _.map(body.data, market => {
|
||||
return {
|
||||
pair: [market.quoteAsset, market.baseAsset],
|
||||
minimalOrder: {
|
||||
amount: parseFloat(market.minTrade),
|
||||
price: parseFloat(market.tickSize),
|
||||
order: getOrderMinSize(market.quoteAsset),
|
||||
},
|
||||
};
|
||||
});
|
||||
|
||||
return { assets: assets, currencies: currencies, markets: pairs };
|
||||
})
|
||||
.then(markets => {
|
||||
fs.writeFileSync('../../wrappers/binance-markets.json', JSON.stringify(markets, null, 2));
|
||||
console.log(`Done writing Binance market data`);
|
||||
})
|
||||
.catch(err => {
|
||||
console.log(`Couldn't import products from Binance`);
|
||||
console.log(err);
|
||||
});
|
||||
@@ -0,0 +1,54 @@
|
||||
const _ = require('lodash');
|
||||
const fs = require('fs');
|
||||
const request = require('request-promise');
|
||||
const Promise = require('bluebird');
|
||||
|
||||
request({
|
||||
url: 'https://api.bitfinex.com/v1/symbols_details',
|
||||
headers: {
|
||||
Connection: 'keep-alive',
|
||||
'User-Agent': 'Request-Promise',
|
||||
},
|
||||
json: true,
|
||||
})
|
||||
.then(body => {
|
||||
if (!body) {
|
||||
throw new Error('Unable to fetch list of assets, response was empty');
|
||||
}
|
||||
|
||||
return body;
|
||||
})
|
||||
.then(results => {
|
||||
let assets = _.uniq(_.map(results, market => {
|
||||
return market.pair.substring(0, 3).toUpperCase();
|
||||
}));
|
||||
|
||||
let currencies = _.uniq(_.map(results, market => {
|
||||
return market.pair.substring(3, 6).toUpperCase();
|
||||
}));
|
||||
|
||||
let markets = _.map(results, market => {
|
||||
return {
|
||||
pair: [
|
||||
market.pair.substring(3, 6).toUpperCase(),
|
||||
market.pair.substring(0, 3).toUpperCase()
|
||||
],
|
||||
minimalOrder: {
|
||||
amount: market.minimum_order_size,
|
||||
unit: 'asset',
|
||||
},
|
||||
};
|
||||
});
|
||||
|
||||
return { assets: assets, currencies: currencies, markets: markets };
|
||||
})
|
||||
.then(markets => {
|
||||
fs.writeFileSync('../../wrappers/bitfinex-markets.json', JSON.stringify(markets, null, 2));
|
||||
console.log(`Done writing Bitfinex market data`);
|
||||
})
|
||||
.catch(err => {
|
||||
console.log(`Couldn't import products from Bitfinex`);
|
||||
console.log(err);
|
||||
});
|
||||
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
const _ = require('lodash');
|
||||
const fs = require('fs');
|
||||
const request = require('request-promise');
|
||||
const Promise = require('bluebird');
|
||||
|
||||
request({
|
||||
url: 'https://api.pro.coinbase.com/products',
|
||||
headers: {
|
||||
Connection: 'keep-alive',
|
||||
'User-Agent': 'Request-Promise',
|
||||
},
|
||||
json: true,
|
||||
})
|
||||
.then(body => {
|
||||
if (!body) {
|
||||
throw new Error('Unable to fetch list of assets, response was empty');
|
||||
}
|
||||
|
||||
return body;
|
||||
})
|
||||
.then(results => {
|
||||
let assets = _.uniq(_.map(results, market => {
|
||||
return market.base_currency.toUpperCase();
|
||||
}));
|
||||
|
||||
let currencies = _.uniq(_.map(results, market => {
|
||||
return market.quote_currency.toUpperCase();
|
||||
}));
|
||||
|
||||
let markets = _.map(results, market => {
|
||||
return {
|
||||
pair: [
|
||||
market.quote_currency.toUpperCase(),
|
||||
market.base_currency.toUpperCase()
|
||||
],
|
||||
minimalOrder: {
|
||||
amount: market.base_min_size,
|
||||
unit: 'asset',
|
||||
},
|
||||
};
|
||||
});
|
||||
|
||||
return { assets: assets, currencies: currencies, markets: markets };
|
||||
})
|
||||
.then(markets => {
|
||||
fs.writeFileSync('../../wrappers/coinbase-markets.json', JSON.stringify(markets, null, 2));
|
||||
console.log(`Done writing Coinbase market data`);
|
||||
})
|
||||
.catch(err => {
|
||||
console.log(`Couldn't import products from Coinbase`);
|
||||
console.log(err);
|
||||
});
|
||||
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
const _ = require('lodash');
|
||||
const fs = require('fs');
|
||||
const request = require('request-promise');
|
||||
const Promise = require('bluebird');
|
||||
|
||||
const options = {
|
||||
url: 'https://coinfalcon.com/api/v1/markets',
|
||||
headers: {
|
||||
Connection: 'keep-alive',
|
||||
'User-Agent': 'Request-Promise',
|
||||
},
|
||||
json: true,
|
||||
};
|
||||
|
||||
request(options)
|
||||
.then(body => {
|
||||
if (!body && !body.data) {
|
||||
throw new Error('Unable to fetch product list, response was empty');
|
||||
}
|
||||
|
||||
let assets = _.uniq(_.map(body.data, market => market.name.split('-')[0]));
|
||||
let currencies = _.uniq(_.map(body.data, market => market.name.split('-')[1]));
|
||||
let pairs = _.map(body.data, market => {
|
||||
var currency = market.name.split('-')[1];
|
||||
var asset = market.name.split('-')[0];
|
||||
return {
|
||||
pair: [currency, asset],
|
||||
minimalOrder: {
|
||||
amount: parseFloat(market.min_volume),
|
||||
price: parseFloat(market.min_price),
|
||||
order: 0.0
|
||||
},
|
||||
};
|
||||
});
|
||||
|
||||
return { assets: assets, currencies: currencies, markets: pairs };
|
||||
})
|
||||
.then(markets => {
|
||||
fs.writeFileSync('../../wrappers/coinfalcon-markets.json', JSON.stringify(markets, null, 2));
|
||||
console.log(`Done writing CoinFalcon market data`);
|
||||
})
|
||||
.catch(err => {
|
||||
console.log(`Couldn't import products from CoinFalcon`);
|
||||
console.log(err);
|
||||
});
|
||||
@@ -0,0 +1,152 @@
|
||||
const _ = require('lodash');
|
||||
const fs = require('fs');
|
||||
const request = require('request-promise');
|
||||
const Promise = require('bluebird');
|
||||
|
||||
// Minimum amounts are not queryable, get them here
|
||||
// https://support.kraken.com/hc/en-us/articles/205893708-What-is-the-minimum-order-size-
|
||||
|
||||
let getMinTradeSize = asset => {
|
||||
let minTradeSize = 0.01;
|
||||
switch (asset) {
|
||||
case 'XREP':
|
||||
minTradeSize = '0.3'
|
||||
break;
|
||||
case 'XXBT':
|
||||
minTradeSize = '0.002'
|
||||
break;
|
||||
case 'BCH':
|
||||
minTradeSize = '0.002'
|
||||
break;
|
||||
case 'ADA':
|
||||
minTradeSize = '1'
|
||||
break;
|
||||
case 'DASH':
|
||||
minTradeSize = '0.03'
|
||||
break;
|
||||
case 'XXDG':
|
||||
minTradeSize = '3000'
|
||||
break;
|
||||
case 'EOS':
|
||||
minTradeSize = '3.0'
|
||||
break;
|
||||
case 'XETH':
|
||||
minTradeSize = '0.02'
|
||||
break;
|
||||
case 'XETC':
|
||||
minTradeSize = '0.3'
|
||||
break;
|
||||
case 'GNO':
|
||||
minTradeSize = '0.03'
|
||||
break;
|
||||
case 'XICN':
|
||||
minTradeSize = '2'
|
||||
break;
|
||||
case 'XLTC':
|
||||
minTradeSize = '0.1'
|
||||
break;
|
||||
case 'XMLN':
|
||||
minTradeSize = '0.1'
|
||||
break;
|
||||
case 'XXMR':
|
||||
minTradeSize = '0.1'
|
||||
break;
|
||||
case 'QTUM':
|
||||
minTradeSize = '0.1'
|
||||
break;
|
||||
case 'XXRP':
|
||||
minTradeSize = '30'
|
||||
break;
|
||||
case 'XXLM':
|
||||
minTradeSize = '30'
|
||||
break;
|
||||
case 'USDT':
|
||||
minTradeSize = '5'
|
||||
break;
|
||||
case 'XTZ':
|
||||
minTradeSize = '1'
|
||||
break;
|
||||
case 'XZEC':
|
||||
minTradeSize = '0.03'
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return minTradeSize;
|
||||
}
|
||||
|
||||
let assetPromise = request({
|
||||
url: 'https://api.kraken.com/0/public/Assets',
|
||||
headers: {
|
||||
Connection: 'keep-alive',
|
||||
'User-Agent': 'Request-Promise',
|
||||
},
|
||||
json: true,
|
||||
}).then(body => {
|
||||
if (!body || !body.result) {
|
||||
throw new Error('Unable to fetch list of assets, response was empty')
|
||||
} else if (!_.isEmpty(body.error)) {
|
||||
throw new Error(`Unable to fetch list of assets: ${body.error}`);
|
||||
}
|
||||
|
||||
return body.result;
|
||||
});
|
||||
|
||||
let assetPairsPromise = request({
|
||||
url: 'https://api.kraken.com/0/public/AssetPairs',
|
||||
headers: {
|
||||
Connection: 'keep-alive',
|
||||
'User-Agent': 'Request-Promise',
|
||||
},
|
||||
json: true,
|
||||
}).then(body => {
|
||||
if (!body || !body.result) {
|
||||
throw new Error('Unable to fetch list of assets, response was empty')
|
||||
} else if (!_.isEmpty(body.error)) {
|
||||
throw new Error(`Unable to fetch list of assets: ${body.error}`);
|
||||
}
|
||||
|
||||
return body.result;
|
||||
});
|
||||
|
||||
Promise.all([assetPromise, assetPairsPromise])
|
||||
.then(results => {
|
||||
let assets = _.uniq(_.map(results[1], market => {
|
||||
return results[0][market.base].altname;
|
||||
}));
|
||||
|
||||
let currencies = _.uniq(_.map(results[1], market => {
|
||||
return results[0][market.quote].altname;
|
||||
}));
|
||||
|
||||
let marketKeys = _.filter(_.keys(results[1]), k => { return !k.endsWith('.d'); });
|
||||
let markets = _.map(marketKeys, k => {
|
||||
let market = results[1][k];
|
||||
let asset = results[0][market.base];
|
||||
let currency = results[0][market.quote];
|
||||
return {
|
||||
pair: [currency.altname, asset.altname],
|
||||
prefixed: [market.quote, market.base],
|
||||
book: k,
|
||||
minimalOrder: {
|
||||
amount: getMinTradeSize(market.base),
|
||||
unit: 'asset',
|
||||
},
|
||||
pricePrecision: market.pair_decimals,
|
||||
amountPrecision: market.lot_decimals
|
||||
};
|
||||
});
|
||||
|
||||
return { assets: assets, currencies: currencies, markets: markets };
|
||||
})
|
||||
.then(markets => {
|
||||
fs.writeFileSync('../../wrappers/kraken-markets.json', JSON.stringify(markets, null, 2));
|
||||
console.log(`Done writing Kraken market data`);
|
||||
})
|
||||
.catch(err => {
|
||||
console.log(`Couldn't import products from Kraken`);
|
||||
console.log(err);
|
||||
});
|
||||
|
||||
|
||||
Reference in new issue
Block a user