Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const ccxt = require('ccxt')
- const talib = require('talib')
- let coinbasepro = new ccxt.coinbasepro({ 'apiKey': process.env.CBPAPIKEY, 'secret': process.env.CBPSECRET, 'password': process.env.CBPPASSWORD })
- let markets = ['BTC/USD', 'LTC/USD', 'ETH/USD', 'BCH/USD', 'LTC/BTC', 'ETH/BTC', 'BCH/BTC']
- let reqFinished = true
- let marketIndex = 0
- let latestsOHLCV = { 'BTC/USD': {}, 'LTC/USD': {}, 'ETH/USD': {}, 'BCH/USD': {}, 'LTC/BTC': {}, 'ETH/BTC': {}, 'BCH/BTC': {} }
- let marketIndicators = { 'BTC/USD': [], 'LTC/USD': [], 'ETH/USD': [], 'BCH/USD': [], 'LTC/BTC': [], 'ETH/BTC': [], 'BCH/BTC': [] }
- setInterval(() => {
- if (reqFinished) {
- reqFinished = false
- coinbasepro.fetchOHLCV(markets[marketIndex]).then(ohlcv => {
- let open = []
- let high = []
- let low = []
- let close = []
- let volume = []
- ohlcv.forEach((val, valIndex) => {
- open.push(val[1])
- high.push(val[2])
- low.push(val[3])
- close.push(val[4])
- volume.push(val[5])
- })
- latestsOHLCV[markets[marketIndex]] = {
- 'open': open,
- 'high': high,
- 'low': low,
- 'close': close,
- 'volume': volume
- }
- if (marketIndex === 6) {
- marketIndex = 0
- } else {
- marketIndex = marketIndex + 1
- }
- reqFinished = true
- }).catch(err => {
- reqFinished = true
- console.log(err)
- })
- }
- }, 1000)
- // wait ten seconds to let latestsOHLCV build up
- setTimeout(() => {
- Object.keys(latestsOHLCV).forEach((marketName, marketNameIndex) => {
- talib.functions.forEach((func, funcIndex) => {
- if (func.inputs[0].type === 'price' && func.name !== 'IMI') {
- let exeObject = {
- 'name': func.name,
- 'startIdx': 0,
- 'endIdx': latestsOHLCV[marketName].close.length - 1
- }
- Object.keys(func.inputs[0].flags).forEach((flag, flagIndex) => {
- exeObject[func.inputs[0].flags[flag]] = latestsOHLCV[marketName][func.inputs[0].flags[flag]]
- })
- func.optInputs.forEach((optInput, optInputIndex) => {
- exeObject[optInput.name] = optInput.defaultValue
- })
- talib.execute(exeObject, (err, result) => {
- if (err) {
- console.log(err)
- } else {
- marketIndicators[marketName].push({ 'taFunction': func.name, 'result': result.result })
- }
- })
- }
- })
- })
- }, 10000)
- // check the marketIndicators object after 10 seconds has passed to see the results
Add Comment
Please, Sign In to add comment