import 'colors' import cron from 'node-schedule' import { loadByPath } from './providers/cryptocompare' //import fetch from 'node-fetch' //import cc from 'cryptocompare' import fs from 'fs-extra' //global.fetch = fetch import config from './config.js' const timeFrames = { '': 1, 'H': 1, 'D': 1, 'W': 7, 'M': 30 } const timeFrameMinutes = { '': 1, 'H': 60, 'D': 60*24, 'W': 60*24*7, 'M': 60*24*30 } const json2csv = list=> list.map( p=> [p.time, p.close, p.high, p.low, p.open, p.volumefrom, p.volumeto].join() ).join('\n') const csv2json = csv=> csv.split('\n') .map( line=> { let v = line.split(',') return { time: v[0], close: v[1], high: v[2], low: v[3], open: v[4], volumeFrom: v[5], volumeTo: v[6] } }) const log = (...args)=> obj=> ( console.log( ...args, obj ), obj ) function ccfs2file( ccfs ) { let start, end // return loadByPath( ccfs ) return fs.readFile( `${config.dataDir}/${ccfs}-1279324800-1555545600.csv`, 'utf8' ).then( csv2json ) .then( data=> (start = data[0].time, end = data[data.length-1].time, data) ) .then( json2csv ) .then( csv=> { let file = `${config.dataDir}/${ccfs}-${start}-${end}.csv` // fs.outputFile( file, csv ) return file }) } /* ccfs2file( 'CCCAGG/BTC/USD/1' ) ccfs2file( 'CCCAGG/BTC/USD/15' ) ccfs2file( 'CCCAGG/BTC/USD/1H' ) ccfs2file( 'CCCAGG/BTC/USD/4H' ) ccfs2file( 'CCCAGG/BTC/USD/1D' ) ccfs2file( 'CCCAGG/BTC/USD/1W' ) ccfs2file( 'CCCAGG/BTC/USD/1M' ) */ //cc.rateLimit().then( console.log ) export default function main( ccfs ) { var job = cron.scheduleJob('*/1 * * * *', ()=> console.log('The answer to life, the universe, and everything! at', new Date) ) } export function backfill({ 0:ccfs }) { let ccPath = ccfs.split('/') , [ exchange, fsym, tsym, period, start, end = '' ] = ccPath if( ccPath.length == 3 ) // all timeFrames { console.log( `Backfilling of all time frames of ${fsym.cyan}/${tsym.blue} on ${exchange.grey} exchange...` ) '1 5 15 30 1H 2H 4H 1D 2D 1W 1M'.split(' ') .map( tf=> ccfs+'/'+tf ) .map( ccfs=> backfill([ccfs]) ) } if( ccPath.length == 4 ) // one timeFrame, recursive until error { console.log( `Backfilling the ${period.magenta} time frame of ${fsym.cyan}/${tsym.blue} on ${exchange.grey} exchange...` ) ccfs2file( ccfs ) .then( log('File saved:') ) .then( file=> log(ccfs+'/'+file.split('-')[1])()|| backfill([ ccfs+'/'+file.split('-')[1] ]) ) } if( ccPath.length > 4 ) // from date to date { console.log( `Backfilling from ${start.yellow} to ${end.yellow} of the ${period.magenta} time frame of ${fsym.cyan}/${tsym.blue} on ${exchange.grey} exchange...` ) } } export function validate({ 0:ccfs, aze }) { console.log( ccfs, aze ) }