UNPKG

coinpusher

Version:

real-time cryptocurrency course prediction with charts front-end

63 lines (50 loc) 1.59 kB
"use strict"; const {CURRENCY} = require("node-bitstamp"); const debug = require("debug")("coinpusher:jobs:train"); const {ETLS, DATASET_STEP, INPUT_FEATURES, OUTPUTS, STREAM_TO_DATASET} = require("./../Coinpusher.js"); const Coinstream = require("./../Coinstream.js"); const NeuronalNetworkFactory = require("./../NeuronalNetworkFactory.js"); const currency = process.argv[2]; if(!currency){ console.log("please pass a currency."); process.exit(1); } if(!Object.keys(CURRENCY) .map(key => CURRENCY[key]) .filter(c => c === currency) .length){ console.log(currency + " does not exist."); process.exit(2); } function _getDatasetForCurrency(currency){ //creates a copy of the dataset const stream = new Coinstream({ tickerStream: null, currency }); return stream.loadStreamFromDisk(); } function _trainAndSaveForCurrency(currency){ const nnFactory = new NeuronalNetworkFactory({ inputSize: INPUT_FEATURES, outputSize: OUTPUTS }); return _getDatasetForCurrency(currency).then(dataset => { dataset = STREAM_TO_DATASET(dataset); const nn = nnFactory.createNewNetwork(dataset, ETLS[currency].main); return nnFactory.saveNetwork(currency, nn).then(() => { return nn; }); }); } function updateNetworkForCurrency(currency){ return _trainAndSaveForCurrency(currency).then(nn => { return true; }); } updateNetworkForCurrency(currency).then(() => { process.exit(0); }).catch(error => { debug(error); process.exit(3); });