Merge pull request #1193 from siiky/refact/lam-437/ccxt-tickers
Save CCXT ticker objects
This commit is contained in:
commit
feaccdb4bc
3 changed files with 62 additions and 50 deletions
|
|
@ -1,49 +1,59 @@
|
||||||
const ccxt = require('ccxt')
|
const ccxt = require('ccxt')
|
||||||
|
|
||||||
const BN = require('../../bn')
|
const BN = require('../../bn')
|
||||||
const { buildMarket, verifyFiatSupport } = require('../common/ccxt')
|
const { buildMarket, verifyFiatSupport } = require('../common/ccxt')
|
||||||
const { getRate } = require('../../../lib/forex')
|
const { getRate } = require('../../../lib/forex')
|
||||||
|
|
||||||
const RETRIES = 2
|
const RETRIES = 2
|
||||||
|
|
||||||
function ticker (fiatCode, cryptoCode, tickerName) {
|
const tickerObjects = {}
|
||||||
const ticker = new ccxt[tickerName]({ timeout: 3000 })
|
|
||||||
if (verifyFiatSupport(fiatCode, tickerName)) {
|
function ticker (fiatCode, cryptoCode, tickerName) {
|
||||||
return getCurrencyRates(ticker, fiatCode, cryptoCode)
|
if (!tickerObjects[tickerName]) {
|
||||||
}
|
tickerObjects[tickerName] = new ccxt[tickerName]({
|
||||||
|
timeout: 3000,
|
||||||
return getRate(RETRIES, fiatCode)
|
enableRateLimit: false,
|
||||||
.then(({ fxRate }) => {
|
})
|
||||||
try {
|
}
|
||||||
return getCurrencyRates(ticker, 'USD', cryptoCode)
|
|
||||||
.then(res => ({
|
const ticker = tickerObjects[tickerName]
|
||||||
rates: {
|
|
||||||
ask: res.rates.ask.times(fxRate),
|
if (verifyFiatSupport(fiatCode, tickerName)) {
|
||||||
bid: res.rates.bid.times(fxRate)
|
return getCurrencyRates(ticker, fiatCode, cryptoCode)
|
||||||
}
|
}
|
||||||
}))
|
|
||||||
} catch (e) {
|
return getRate(RETRIES, fiatCode)
|
||||||
return Promise.reject(e)
|
.then(({ fxRate }) => {
|
||||||
}
|
try {
|
||||||
})
|
return getCurrencyRates(ticker, 'USD', cryptoCode)
|
||||||
}
|
.then(res => ({
|
||||||
|
rates: {
|
||||||
function getCurrencyRates (ticker, fiatCode, cryptoCode) {
|
ask: res.rates.ask.times(fxRate),
|
||||||
try {
|
bid: res.rates.bid.times(fxRate)
|
||||||
if (!ticker.has['fetchTicker']) {
|
}
|
||||||
throw new Error('Ticker not available')
|
}))
|
||||||
}
|
} catch (e) {
|
||||||
const symbol = buildMarket(fiatCode, cryptoCode, ticker.id)
|
return Promise.reject(e)
|
||||||
return ticker.fetchTicker(symbol)
|
}
|
||||||
.then(res => ({
|
})
|
||||||
rates: {
|
}
|
||||||
ask: new BN(res.ask),
|
|
||||||
bid: new BN(res.bid)
|
function getCurrencyRates (ticker, fiatCode, cryptoCode) {
|
||||||
}
|
try {
|
||||||
}))
|
if (!ticker.has['fetchTicker']) {
|
||||||
} catch (e) {
|
throw new Error('Ticker not available')
|
||||||
return Promise.reject(e)
|
}
|
||||||
}
|
const symbol = buildMarket(fiatCode, cryptoCode, ticker.id)
|
||||||
}
|
return ticker.fetchTicker(symbol)
|
||||||
|
.then(res => ({
|
||||||
module.exports = { ticker }
|
rates: {
|
||||||
|
ask: new BN(res.ask),
|
||||||
|
bid: new BN(res.bid)
|
||||||
|
}
|
||||||
|
}))
|
||||||
|
} catch (e) {
|
||||||
|
return Promise.reject(e)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = { ticker }
|
||||||
|
|
|
||||||
|
|
@ -33,6 +33,7 @@ const SANCTIONS_UPDATE_INTERVAL = 1 * T.day
|
||||||
const RADAR_UPDATE_INTERVAL = 5 * T.minutes
|
const RADAR_UPDATE_INTERVAL = 5 * T.minutes
|
||||||
const PRUNE_MACHINES_HEARTBEAT = 1 * T.day
|
const PRUNE_MACHINES_HEARTBEAT = 1 * T.day
|
||||||
const TRANSACTION_BATCH_LIFECYCLE = 20 * T.minutes
|
const TRANSACTION_BATCH_LIFECYCLE = 20 * T.minutes
|
||||||
|
const TICKER_RATES_INTERVAL = 59 * T.seconds
|
||||||
|
|
||||||
const CHECK_NOTIFICATION_INTERVAL = 20 * T.seconds
|
const CHECK_NOTIFICATION_INTERVAL = 20 * T.seconds
|
||||||
const PENDING_INTERVAL = 10 * T.seconds
|
const PENDING_INTERVAL = 10 * T.seconds
|
||||||
|
|
@ -178,6 +179,7 @@ function doPolling (schema) {
|
||||||
notifier.checkNotification(pi())
|
notifier.checkNotification(pi())
|
||||||
updateCoinAtmRadar()
|
updateCoinAtmRadar()
|
||||||
|
|
||||||
|
addToQueue(pi().getRawRates, TICKER_RATES_INTERVAL, schema, QUEUE.FAST)
|
||||||
addToQueue(pi().executeTrades, TRADE_INTERVAL, schema, QUEUE.FAST)
|
addToQueue(pi().executeTrades, TRADE_INTERVAL, schema, QUEUE.FAST)
|
||||||
addToQueue(cashOutTx.monitorLiveIncoming, LIVE_INCOMING_TX_INTERVAL, schema, QUEUE.FAST, settings, false, coinFilter)
|
addToQueue(cashOutTx.monitorLiveIncoming, LIVE_INCOMING_TX_INTERVAL, schema, QUEUE.FAST, settings, false, coinFilter)
|
||||||
addToQueue(cashOutTx.monitorStaleIncoming, INCOMING_TX_INTERVAL, schema, QUEUE.FAST, settings, false, coinFilter)
|
addToQueue(cashOutTx.monitorStaleIncoming, INCOMING_TX_INTERVAL, schema, QUEUE.FAST, settings, false, coinFilter)
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ const ccxt = require('./plugins/ticker/ccxt')
|
||||||
const mockTicker = require('./plugins/ticker/mock-ticker')
|
const mockTicker = require('./plugins/ticker/mock-ticker')
|
||||||
const bitpay = require('./plugins/ticker/bitpay')
|
const bitpay = require('./plugins/ticker/bitpay')
|
||||||
|
|
||||||
const FETCH_INTERVAL = 60000
|
const FETCH_INTERVAL = 58000
|
||||||
|
|
||||||
function _getRates (settings, fiatCode, cryptoCode) {
|
function _getRates (settings, fiatCode, cryptoCode) {
|
||||||
return Promise.resolve()
|
return Promise.resolve()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue