Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
[CURRENCY.BTC_EUR]: {
predict: trades => { //before prediction (is called)
return TRADES_TO_ROW(trades, BTC_EUR_FACTOR);
},
main: row => { //before training (is mapped)
// const trades = row.x.slice(0);
row.x = TRADES_TO_ROW(row.x, BTC_EUR_FACTOR);
row.y = TRADES_TO_ROW_OUTPUT(row.y, ETL_FACTOR);
return row;
},
alter: (outputs, tradeForPrediction) => { //after prediction (is called)
return OUTPUT_TO_TRADE_PRICES(outputs, ETL_FACTOR, tradeForPrediction);
}
},
[CURRENCY.ETH_EUR]: {
predict: trades => { //before prediction (is called)
return TRADES_TO_ROW(trades, ETH_EUR_FACTOR);
},
main: row => { //before training (is mapped)
// const trades = row.x.slice(0);
row.x = TRADES_TO_ROW(row.x, ETH_EUR_FACTOR);
row.y = TRADES_TO_ROW_OUTPUT(row.y, ETL_FACTOR);
return row;
},
alter: (outputs, tradeForPrediction) => { //after prediction (is called)
return OUTPUT_TO_TRADE_PRICES(outputs, ETL_FACTOR, tradeForPrediction);
}
},
[CURRENCY.LTC_EUR]: {
predict: trades => { //before prediction (is called)
//apply to current price
currentPrice = currentPrice + diff;
prices.push(currentPrice);
}
return prices;
};
/**
* functions that we apply before training as well as before and after prediction
* map dataset trades [{x,y}] into price floats [{x,y}]
* ships predict, main and alter functions for every currency
*/
const ETLS = {
[CURRENCY.BTC_EUR]: {
predict: trades => { //before prediction (is called)
return TRADES_TO_ROW(trades, BTC_EUR_FACTOR);
},
main: row => { //before training (is mapped)
// const trades = row.x.slice(0);
row.x = TRADES_TO_ROW(row.x, BTC_EUR_FACTOR);
row.y = TRADES_TO_ROW_OUTPUT(row.y, ETL_FACTOR);
return row;
},
alter: (outputs, tradeForPrediction) => { //after prediction (is called)
return OUTPUT_TO_TRADE_PRICES(outputs, ETL_FACTOR, tradeForPrediction);
}
},
[CURRENCY.ETH_EUR]: {
predict: trades => { //before prediction (is called)
[CURRENCY.ETH_EUR]: {
predict: trades => { //before prediction (is called)
return TRADES_TO_ROW(trades, ETH_EUR_FACTOR);
},
main: row => { //before training (is mapped)
// const trades = row.x.slice(0);
row.x = TRADES_TO_ROW(row.x, ETH_EUR_FACTOR);
row.y = TRADES_TO_ROW_OUTPUT(row.y, ETL_FACTOR);
return row;
},
alter: (outputs, tradeForPrediction) => { //after prediction (is called)
return OUTPUT_TO_TRADE_PRICES(outputs, ETL_FACTOR, tradeForPrediction);
}
},
[CURRENCY.LTC_EUR]: {
predict: trades => { //before prediction (is called)
return TRADES_TO_ROW(trades, LTC_EUR_FACTOR);
},
main: row => { //before training (is mapped)
// const trades = row.x.slice(0);
row.x = TRADES_TO_ROW(row.x, LTC_EUR_FACTOR);
row.y = TRADES_TO_ROW_OUTPUT(row.y, ETL_FACTOR);
return row;
},
alter: (outputs, tradeForPrediction) => { //after prediction (is called)
return OUTPUT_TO_TRADE_PRICES(outputs, ETL_FACTOR, tradeForPrediction);
}
},
};
const SUM_LAST_ELEMENTS_IN_ARRAY = (a, c = 3) => {
startForEthereum(){
return this.start(CURRENCY.ETH_EUR, 3334);
}
constructor(opts = {}){
super();
const {
currency,
step,
streamDir,
tickerStream
} = opts;
this.currency = currency || CURRENCY.ETH_EUR;
this.step = step || 20;
this.streamDir = streamDir || path.join(__dirname, "./../streams");
this.tickerStream = tickerStream;
this.collected = [];
this.dataset = null; //TODO dont hold the full dataset in memory
this.stream = null;
this.lastTrade = null;
this._intv = null;
}
startForBitcoin(){
return this.start(CURRENCY.BTC_EUR, 3333);
}
startForLitecoin(){
return this.start(CURRENCY.LTC_EUR, 3335);
}
constructor(){
super();
this.nnFactory = new NeuronalNetworkFactory({
inputSize: INPUT_FEATURES,
outputSize: OUTPUTS
});
this.tickerStream = new TickerStream();
this.ss = null;
this.css = [];
this.nets = {};
this.buffers = {};
this.constantPredictions = {};
this.drifts = {};
this.performanceBuffer = [];
this.inTraining = false;
this.performanceSinceStart = 0;
this.expectedPerformanceSinceStart = 0;
this.ratingStats = {
good: 0,
ok: 0,