Skip to content

Instantly share code, notes, and snippets.

@marce1994
Last active December 2, 2017 02:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save marce1994/80f4cb0065f548cfacfab7632d29fd65 to your computer and use it in GitHub Desktop.
Save marce1994/80f4cb0065f548cfacfab7632d29fd65 to your computer and use it in GitHub Desktop.
fitfinex analizer
var minMaxAvg1Min = [];
var lastMin = 0;
const {
BFX_API_KEY = 'APIKEY',
BFX_API_SECRET = 'APISECRET',
} = process.env;
const opts = {
version: 2,
transform: true
};
const bws = new BFX(process.env.BFX_API_KEY, process.env.BFX_API_SECRET, opts).ws
setInterval(function() {
db.find({}, function (err, docs) {
var objs = [];
var temptimestamp = Date.now();
docs.forEach(function(element) {
if(element.timestamp > lastMin){
objs.push(element);
}
}, this);
lastMin = temptimestamp;
console.log('\x1b[32m',minmaxavg(objs)!= undefined? minmaxavg(objs).avg + ' >>> ' + minmaxavg(objs).avg * 0.01 : 'sin datos');
});
}, 30000 );
function minmaxavg(arr){
if(arr.length == 0){
return undefined;
}
var sell = 0;
var buy = 0;
var total = 0;
var count = 0;
var min = arr[0].price;
var max = arr[0].price;
var avg = 0;
for (var index = 0; index < arr.length; index++) {
var element = arr[index];
if(element.amount < 0)
sell ++;
if(element.amount > 0)
buy ++;
if(element.price > max)
max = element.price;
if(element.price < min)
min = element.price;
total += element.price;
count ++;
}
avg = total / count;
return {max, min, avg, buy, sell};
}
bws.on('auth', () => {
// emitted after .auth()
// needed for private api endpoints
console.log('authenticated');
// bws.submitOrder ...
});
bws.on('open', () => {
bws.subscribeTrades('BTCUSD');
// authenticate
// bws.auth();
});
bws.on('orderbook', (pair, book) => {
console.log('Order book:', book);
});
bws.on('trade', (pair, trade) => {
saveTrade(pair, trade);
});
bws.on('ticker', (pair, ticker) => {
console.log('Ticker:', ticker);
});
bws.on('error', console.error);
function saveTrade(pair, trade){
if(trade[0] === 'tu')
{
var reg = { pair, 'amount' : trade[1].AMOUNT, 'price' : trade[1].PRICE, 'timestamp' : Date.now()};
db.insert(reg, function(){
//console.log((trade[1].AMOUNT > 0? '\x1b[32m' : '\x1b[31m'),pair + ' -> ' + (trade[1].AMOUNT > 0? 'buy' : 'sell') + ' ' + trade[1].PRICE);
});
}
};
@DimitriBerman
Copy link

que tal esto y reducir un poco el codigo ?

para operar:

let operation = trade[1].AMOUNT < 0 ? 'SELL : 'BUY';
let mySubArray = container[pair, operation];
mySubArray.push(.....)

para loguear:

console.info(pair+operation, mySubArray);

@marce1994
Copy link
Author

dale gracias, encontré errores igual, es [pair]['sell'] y no [pait, 'sell']. a simple vista parecía funcionar, pero me guardaba todo en el mismo lugar, ya lo solucione :3

@marce1994
Copy link
Author

al final lo modifique y utilice una base de datos en memoria. posteriormente la voy a persistir posiblemente.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment