Complete overhaul of all markets
This commit is contained in:
+4
-4
@@ -166,12 +166,12 @@ function save_tx(txid, blockheight, cb) {
|
||||
}
|
||||
|
||||
function get_market_data(market, cb) {
|
||||
if(fs.existsSync('./lib/markets/' + market + '.js')){
|
||||
if (fs.existsSync('./lib/markets/' + market + '.js')) {
|
||||
exMarket = require('./markets/' + market);
|
||||
exMarket.get_data(settings.markets.coin, settings.markets.exchange, function(err, obj){
|
||||
exMarket.get_data(settings.markets, function(err, obj) {
|
||||
return cb(err, obj);
|
||||
});
|
||||
}else{
|
||||
} else {
|
||||
return cb(null);
|
||||
}
|
||||
}
|
||||
@@ -683,7 +683,7 @@ module.exports = {
|
||||
buys: obj.buys,
|
||||
sells: obj.sells,
|
||||
history: obj.trades,
|
||||
summary: obj.stats,
|
||||
summary: obj.stats
|
||||
}, function() {
|
||||
if ( market == settings.markets.default ) {
|
||||
Stats.updateOne({coin:settings.coin}, {
|
||||
|
||||
@@ -143,15 +143,6 @@ exports.heavy_changein = "Reward change in approximately",
|
||||
exports.heavy_key = "Key",
|
||||
exports.heavy_lastxvotes = "Last 20 votes",
|
||||
|
||||
exports.fides = "Fides-ex",
|
||||
exports.poloniex = "Poloniex",
|
||||
exports.bittrex = "Bittrex",
|
||||
exports.altmarkets = "AltMarkets",
|
||||
exports.bleutrade = "Bleutrade",
|
||||
exports.yobit = "Yobit",
|
||||
exports.stex = "Stex",
|
||||
exports.crex = "Crex24",
|
||||
|
||||
exports.reloadLocale = function reloadLocale(locale) {
|
||||
// Discover where the locale file lives
|
||||
var localeFilename = locale;
|
||||
|
||||
+66
-46
@@ -4,23 +4,26 @@ var base_url = 'https://altmarkets.io/api/v2/';
|
||||
|
||||
function get_summary(coin, exchange, cb) {
|
||||
var req_url = base_url + 'tickers/' + coin.toLowerCase() + exchange.toLowerCase();
|
||||
var summary = {};
|
||||
request({uri: req_url, json: true}, function (error, response, body) {
|
||||
|
||||
request({uri: req_url, json: true, headers: {'User-Agent': 'eiquidus'}}, function (error, response, body) {
|
||||
if (error) {
|
||||
return cb(error, null);
|
||||
} else {
|
||||
if (body.error) {
|
||||
return cb(body.error, null);
|
||||
} else {
|
||||
summary['bid'] = parseFloat(body['ticker']['buy']).toFixed(8);
|
||||
summary['ask'] = parseFloat(body['ticker']['sell']).toFixed(8);
|
||||
summary['volume'] = parseFloat(body['ticker']['vol']).toFixed(8);
|
||||
summary['volume_btc'] = parseFloat(body['ticker']['quote_volume']).toFixed(8);
|
||||
summary['high'] = parseFloat(body['ticker']['high']).toFixed(8);
|
||||
summary['low'] = parseFloat(body['ticker']['low']).toFixed(8);
|
||||
summary['last'] = parseFloat(body['ticker']['last']).toFixed(8);
|
||||
var summary = {};
|
||||
|
||||
summary['bid'] = body['ticker']['buy'];
|
||||
summary['ask'] = body['ticker']['sell'];
|
||||
summary['volume'] = body['ticker']['vol'];
|
||||
summary['volume_btc'] = body['ticker']['quote_volume'];
|
||||
summary['high'] = body['ticker']['high'];
|
||||
summary['low'] = body['ticker']['low'];
|
||||
summary['last'] = body['ticker']['last'];
|
||||
summary['change'] = 0;
|
||||
request({ uri: base_url + 'currency/trades?currency=' + coin.toLowerCase(), json: true }, function (error, response, body) {
|
||||
|
||||
request({ uri: base_url + 'currency/trades?currency=' + coin.toLowerCase(), json: true, headers: {'User-Agent': 'eiquidus'}}, function (error, response, body) {
|
||||
if (error) {
|
||||
return cb(null, summary);
|
||||
} else {
|
||||
@@ -30,7 +33,7 @@ function get_summary(coin, exchange, cb) {
|
||||
summary['change'] = 0;
|
||||
for (var i = 0; i < body.length; i++) {
|
||||
if (exchange.toLowerCase() in body[i]) {
|
||||
summary['change'] = parseFloat(body[i][exchange.toLowerCase()]['change']);
|
||||
summary['change'] = body[i][exchange.toLowerCase()]['change'];
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -44,72 +47,88 @@ function get_summary(coin, exchange, cb) {
|
||||
}
|
||||
|
||||
function get_trades(coin, exchange, cb) {
|
||||
var req_url = base_url + "trades?market=" + coin.toLowerCase() + "" + exchange.toLowerCase() + "&limit=50&order_by=desc";
|
||||
request({uri: req_url, json: true}, function (error, response, body) {
|
||||
var req_url = base_url + 'trades?market=' + coin.toLowerCase() + '' + exchange.toLowerCase() + '&limit=50&order_by=desc';
|
||||
request({uri: req_url, json: true, headers: {'User-Agent': 'eiquidus'}}, function (error, response, body) {
|
||||
if (body.error) {
|
||||
return cb(body.error, null);
|
||||
} else {
|
||||
return cb (null, body);
|
||||
var trades = [];
|
||||
|
||||
if (body.length > 0) {
|
||||
for (var i = 0; i < body.length; i++) {
|
||||
var trade = {
|
||||
ordertype: (body[i]['side'].toLowerCase() == 'up' ? 'BUY' : 'SELL'),
|
||||
price: body[i]['price'],
|
||||
quantity: body[i]['volume'],
|
||||
total: body[i]['funds'],
|
||||
timestamp: new Date(body[i]['timestamp'] * 1000).toUTCString()
|
||||
}
|
||||
|
||||
trades.push(trade);
|
||||
}
|
||||
}
|
||||
|
||||
return cb(null, trades);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function get_orders(coin, exchange, cb) {
|
||||
var req_url = base_url + 'depth?market=' + coin.toLowerCase() + exchange.toLowerCase();
|
||||
request({uri: req_url, json: true}, function (error, response, body) {
|
||||
|
||||
request({uri: req_url, json: true, headers: {'User-Agent': 'eiquidus'}}, function (error, response, body) {
|
||||
if (body.error) {
|
||||
return cb(body.error, [], [])
|
||||
} else {
|
||||
var orders = body;
|
||||
var buys = [];
|
||||
var sells = [];
|
||||
if (orders['bids'].length > 0){
|
||||
|
||||
if (orders['bids'].length > 0) {
|
||||
for (var i = 0; i < orders['bids'].length; i++) {
|
||||
var order = {
|
||||
amount: parseFloat(orders.bids[i][1]).toFixed(8),
|
||||
price: parseFloat(orders.bids[i][0]).toFixed(8),
|
||||
// total: parseFloat(orders.bids[i].Total).toFixed(8)
|
||||
// Necessary because API will return 0.00 for small volume transactions
|
||||
total: (parseFloat(orders.bids[i][1]).toFixed(8) * parseFloat(orders.bids[i][0])).toFixed(8)
|
||||
price: orders.bids[i][0],
|
||||
quantity: orders.bids[i][1]
|
||||
}
|
||||
|
||||
buys.push(order);
|
||||
}
|
||||
} else {}
|
||||
}
|
||||
|
||||
if (orders['asks'].length > 0) {
|
||||
for (var x = 0; x < orders['asks'].length; x++) {
|
||||
for (var i = 0; i < orders['asks'].length; i++) {
|
||||
var order = {
|
||||
amount: parseFloat(orders.asks[x][1]).toFixed(8),
|
||||
price: parseFloat(orders.asks[x][0]).toFixed(8),
|
||||
// total: parseFloat(orders.asks[x].Total).toFixed(8)
|
||||
// Necessary because API will return 0.00 for small volume transactions
|
||||
total: (parseFloat(orders.asks[x][1]).toFixed(8) * parseFloat(orders.asks[x][0])).toFixed(8)
|
||||
price: orders.asks[i][0],
|
||||
quantity: orders.asks[i][1]
|
||||
}
|
||||
|
||||
sells.push(order);
|
||||
}
|
||||
} else {}
|
||||
var sells = sells.reverse();
|
||||
return cb(null, buys, sells);
|
||||
}
|
||||
|
||||
return cb(null, buys, sells.reverse());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function get_chartdata(coin, exchange, cb) {
|
||||
function get_chartdata(coin, exchange, cb) {
|
||||
var end = Date.now();
|
||||
end = end / 1000;
|
||||
start = end - 86400;
|
||||
var req_url = base_url + 'k/?market=' + coin.toLowerCase() + "" + exchange.toLowerCase() + '&time_from=' + start + '&time_to=' + end + '&period=1';
|
||||
request({uri: req_url, json: true}, function (error, response, chartdata) {
|
||||
|
||||
var req_url = base_url + 'k/?market=' + coin.toLowerCase() + '' + exchange.toLowerCase() + '&time_from=' + start + '&time_to=' + end + '&period=15';
|
||||
|
||||
request({uri: req_url, json: true, headers: {'User-Agent': 'eiquidus'}}, function (error, response, chartdata) {
|
||||
if (error) {
|
||||
return cb(error, []);
|
||||
} else {
|
||||
if (chartdata.error == null) {
|
||||
var processed = [];
|
||||
for (var i = 0; i < chartdata.length; i++) {
|
||||
processed.push([chartdata[i][0] * 1000, parseFloat(chartdata[i][1]), parseFloat(chartdata[i][2]), parseFloat(chartdata[i][3]), parseFloat(chartdata[i][4])]);
|
||||
if (i == chartdata.length - 1) {
|
||||
return cb(null, processed);
|
||||
}
|
||||
}
|
||||
|
||||
for (var i = 0; i < chartdata.length; i++)
|
||||
processed.push([chartdata[i][0] * 1000, chartdata[i][1], chartdata[i][2], chartdata[i][3], chartdata[i][4]]);
|
||||
|
||||
return cb(null, processed);
|
||||
} else {
|
||||
return cb(chartdata.error, []);
|
||||
}
|
||||
@@ -118,15 +137,16 @@ function get_chartdata(coin, exchange, cb) {
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
get_data: function(coin, exchange, cb) {
|
||||
market_name: 'AltMarkets',
|
||||
get_data: function(settings, cb) {
|
||||
var error = null;
|
||||
get_chartdata(coin, exchange, function (err, chartdata){
|
||||
get_chartdata(settings.coin, settings.exchange, function (err, chartdata){
|
||||
if (err) { chartdata = []; error = err; }
|
||||
get_orders(coin, exchange, function(err, buys, sells) {
|
||||
get_orders(settings.coin, settings.exchange, function(err, buys, sells) {
|
||||
if (err) { error = err; }
|
||||
get_trades(coin, exchange, function(err, trades) {
|
||||
get_trades(settings.coin, settings.exchange, function(err, trades) {
|
||||
if (err) { error = err; }
|
||||
get_summary(coin, exchange, function(err, stats) {
|
||||
get_summary(settings.coin, settings.exchange, function(err, stats) {
|
||||
if (err) { error = err; }
|
||||
return cb(error, {buys: buys, sells: sells, chartdata: chartdata, trades: trades, stats: stats});
|
||||
});
|
||||
@@ -134,4 +154,4 @@ module.exports = {
|
||||
});
|
||||
});
|
||||
}
|
||||
};
|
||||
};
|
||||
+98
-36
@@ -1,84 +1,146 @@
|
||||
var request = require('postman-request');
|
||||
|
||||
var base_url = 'https://bittrex.com/api/v1.1/public';
|
||||
var base_url = 'https://api.bittrex.com/v3';
|
||||
|
||||
function get_summary(coin, exchange, cb) {
|
||||
var req_url = base_url + '/getmarketsummary?market=' + exchange + '-' + coin;
|
||||
request({uri: req_url, json: true, headers: {'User-Agent': 'eiquidus'}}, function (error, response, body) {
|
||||
var req_url = base_url + '/markets/' + coin + '-' + exchange + '/summary';
|
||||
|
||||
request({uri: req_url, json: true, headers: {'User-Agent': 'eiquidus'}}, function (error, response, summary) {
|
||||
if (error) {
|
||||
return cb(error, null);
|
||||
} else {
|
||||
if (body.message) {
|
||||
return cb(body.message, null)
|
||||
if (summary.code) {
|
||||
return cb(summary.code, null)
|
||||
} else {
|
||||
body.result[0]['last'] = body.result[0]['Last'];
|
||||
return cb (null, body.result[0]);
|
||||
req_url = base_url + '/markets/' + coin + '-' + exchange + '/ticker';
|
||||
request({uri: req_url, json: true, headers: {'User-Agent': 'eiquidus'}}, function (error, response, ticker) {
|
||||
if (error) {
|
||||
return cb(error, null);
|
||||
} else {
|
||||
if (ticker.code) {
|
||||
return cb(ticker.code, null)
|
||||
} else {
|
||||
var retVal = {
|
||||
'high': summary.high,
|
||||
'low': summary.low,
|
||||
'volume': summary.volume,
|
||||
'bid': ticker.bidRate,
|
||||
'ask': ticker.askRate,
|
||||
'last': ticker.lastTradeRate,
|
||||
'change': summary.percentChange
|
||||
};
|
||||
return cb (null, retVal);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function get_trades(coin, exchange, cb) {
|
||||
var req_url = base_url + '/getmarkethistory?market=' + exchange + '-' + coin + '&count=50';
|
||||
var req_url = base_url + '/markets/' + coin + '-' + exchange + '/trades';
|
||||
request({uri: req_url, json: true, headers: {'User-Agent': 'eiquidus'}}, function (error, response, body) {
|
||||
if (body.success == true) {
|
||||
return cb (null, body.result);
|
||||
if (error) {
|
||||
return cb(error, null);
|
||||
} else {
|
||||
return cb(body.message, null);
|
||||
var trades = [];
|
||||
|
||||
if (body.length > 0) {
|
||||
for (var i = 0; i < body.length; i++) {
|
||||
var trade = {
|
||||
ordertype: body[i]['takerSide'],
|
||||
price: body[i]['rate'],
|
||||
quantity: body[i]['quantity'],
|
||||
timestamp: body[i]['executedAt']
|
||||
}
|
||||
|
||||
trades.push(trade);
|
||||
}
|
||||
}
|
||||
|
||||
return cb(null, trades);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function get_orders(coin, exchange, cb) {
|
||||
var req_url = base_url + '/getorderbook?market=' + exchange + '-' + coin + '&type=both' + '&depth=50';
|
||||
var req_url = base_url + '/markets/' + coin + '-' + exchange + '/orderbook?depth=25';
|
||||
|
||||
request({uri: req_url, json: true, headers: {'User-Agent': 'eiquidus'}}, function (error, response, body) {
|
||||
if (body.success == true) {
|
||||
var orders = body.result;
|
||||
if (error) {
|
||||
return cb(error, [], []);
|
||||
} else {
|
||||
var buys = [];
|
||||
var sells = [];
|
||||
if (orders['buy'].length > 0){
|
||||
for (var i = 0; i < orders['buy'].length; i++) {
|
||||
|
||||
if (body['bid'].length > 0){
|
||||
for (var i = 0; i < body['bid'].length; i++) {
|
||||
var order = {
|
||||
amount: parseFloat(orders.buy[i].Quantity).toFixed(8),
|
||||
price: parseFloat(orders.buy[i].Rate).toFixed(8),
|
||||
// total: parseFloat(orders.buy[i].Total).toFixed(8)
|
||||
// Necessary because API will return 0.00 for small volume transactions
|
||||
total: (parseFloat(orders.buy[i].Quantity).toFixed(8) * parseFloat(orders.buy[i].Rate)).toFixed(8)
|
||||
price: body.bid[i].rate,
|
||||
quantity: body.bid[i].quantity
|
||||
}
|
||||
|
||||
buys.push(order);
|
||||
}
|
||||
}
|
||||
if (orders['sell'].length > 0) {
|
||||
for (var x = 0; x < orders['sell'].length; x++) {
|
||||
|
||||
if (body['ask'].length > 0) {
|
||||
for (var i = 0; i < body['ask'].length; i++) {
|
||||
var order = {
|
||||
amount: parseFloat(orders.sell[x].Quantity).toFixed(8),
|
||||
price: parseFloat(orders.sell[x].Rate).toFixed(8),
|
||||
// total: parseFloat(orders.sell[x].Total).toFixed(8)
|
||||
// Necessary because API will return 0.00 for small volume transactions
|
||||
total: (parseFloat(orders.sell[x].Quantity).toFixed(8) * parseFloat(orders.sell[x].Rate)).toFixed(8)
|
||||
price: body.ask[i].rate,
|
||||
quantity: body.ask[i].quantity
|
||||
}
|
||||
|
||||
sells.push(order);
|
||||
}
|
||||
}
|
||||
|
||||
return cb(null, buys, sells);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function get_chartdata(coin, exchange, cb) {
|
||||
var end = Date.now();
|
||||
|
||||
end = end / 1000;
|
||||
start = end - 86400;
|
||||
|
||||
var req_url = base_url + '/markets/' + coin + '-' + exchange + '/candles/MINUTE_5/recent';
|
||||
|
||||
request({ uri: req_url, json: true, headers: {'User-Agent': 'eiquidus'} }, function (error, response, chartdata) {
|
||||
if (error) {
|
||||
return cb(error, []);
|
||||
} else {
|
||||
return cb(body.message, [], []);
|
||||
var processed = [];
|
||||
|
||||
for (var i = 0; i < chartdata.length; i++) {
|
||||
// only display every 3rd data point (every 15 mins) and only more recent than the last 24 hours
|
||||
if (new Date(chartdata[i].startsAt).getTime()/1000 > start && (i % 3) == 0)
|
||||
processed.push([new Date(chartdata[i].startsAt).getTime(), parseFloat(chartdata[i].open), parseFloat(chartdata[i].high), parseFloat(chartdata[i].low), parseFloat(chartdata[i].close)]);
|
||||
}
|
||||
return cb(null, processed);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
get_data: function(coin, exchange, cb) {
|
||||
market_name: 'Bittrex',
|
||||
get_data: function(settings, cb) {
|
||||
var error = null;
|
||||
get_orders(coin, exchange, function(err, buys, sells) {
|
||||
if (err) { error = err; }
|
||||
get_trades(coin, exchange, function(err, trades) {
|
||||
get_chartdata(settings.coin, settings.exchange, function (err, chartdata) {
|
||||
if (err) { chartdata = []; error = err; }
|
||||
get_orders(settings.coin, settings.exchange, function(err, buys, sells) {
|
||||
if (err) { error = err; }
|
||||
get_summary(coin, exchange, function(err, stats) {
|
||||
get_trades(settings.coin, settings.exchange, function(err, trades) {
|
||||
if (err) { error = err; }
|
||||
return cb(error, {buys: buys, sells: sells, chartdata: [], trades: trades, stats: stats});
|
||||
get_summary(settings.coin, settings.exchange, function(err, stats) {
|
||||
if (err) { error = err; }
|
||||
return cb(error, {buys: buys, sells: sells, chartdata: chartdata, trades: trades, stats: stats});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
};
|
||||
};
|
||||
+101
-43
@@ -1,6 +1,6 @@
|
||||
var request = require('postman-request');
|
||||
|
||||
var base_url = 'https://bleutrade.com/api/v2/public';
|
||||
var base_url = 'https://bleutrade.com/api/v3/public';
|
||||
|
||||
function get_summary(coin, exchange, cb) {
|
||||
var req_url = base_url + '/getmarketsummary?market=' + coin + '_' + exchange;
|
||||
@@ -11,8 +11,17 @@ function get_summary(coin, exchange, cb) {
|
||||
if (body.message) {
|
||||
return cb(body.message, null)
|
||||
} else {
|
||||
body.result[0]['last'] = body.result[0].Last;
|
||||
return cb (null, body.result[0]);
|
||||
var retVal = {
|
||||
'high': body.result.High,
|
||||
'low': body.result.Low,
|
||||
'volume': body.result.Volume,
|
||||
'bid': body.result.Bid,
|
||||
'ask': body.result.Ask,
|
||||
'last': body.result.Last,
|
||||
'prev': body.result.PrevDay
|
||||
};
|
||||
|
||||
return cb (null, retVal);
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -21,8 +30,24 @@ function get_summary(coin, exchange, cb) {
|
||||
function get_trades(coin, exchange, cb) {
|
||||
var req_url = base_url + '/getmarkethistory?market=' + coin + '_' + exchange + '&count=50';
|
||||
request({uri: req_url, json: true, headers: {'User-Agent': 'eiquidus'}}, function (error, response, body) {
|
||||
if (body.success == "true") {
|
||||
return cb (null, body.result);
|
||||
if (body.success) {
|
||||
var trades = [];
|
||||
|
||||
if (body.result.length > 0) {
|
||||
for (var i = 0; i < body.result.length; i++) {
|
||||
var trade = {
|
||||
ordertype: body.result[i]['OrderType'],
|
||||
price: body.result[i]['Price'],
|
||||
quantity: body.result[i]['Quantity'],
|
||||
total: body.result[i]['Total'],
|
||||
timestamp: body.result[i]['TimeStamp']
|
||||
}
|
||||
|
||||
trades.push(trade);
|
||||
}
|
||||
}
|
||||
|
||||
return cb(null, trades);
|
||||
} else {
|
||||
return cb(body.message, null);
|
||||
}
|
||||
@@ -30,55 +55,88 @@ function get_trades(coin, exchange, cb) {
|
||||
}
|
||||
|
||||
function get_orders(coin, exchange, cb) {
|
||||
var req_url = base_url + '/getorderbook?market=' + coin + '_' + exchange + '&type=all' + '&depth=50';
|
||||
var req_url = base_url + '/getorderbook?market=' + coin + '_' + exchange + '&type=all' + '&depth=50';
|
||||
request({uri: req_url, json: true, headers: {'User-Agent': 'eiquidus'}}, function (error, response, body) {
|
||||
if (body.success == "true") {
|
||||
if (body.success) {
|
||||
var orders = body.result;
|
||||
var buys = [];
|
||||
var sells = [];
|
||||
if (orders['buy'].length > 0){
|
||||
for (var i = 0; i < orders['buy'].length; i++) {
|
||||
var order = {
|
||||
amount: parseFloat(orders.buy[i].Quantity).toFixed(8),
|
||||
price: parseFloat(orders.buy[i].Rate).toFixed(8),
|
||||
// total: parseFloat(orders.buy[i].Total).toFixed(8)
|
||||
// Necessary because API will return 0.00 for small volume transactions
|
||||
total: (parseFloat(orders.buy[i].Quantity).toFixed(8) * parseFloat(orders.buy[i].Rate)).toFixed(8)
|
||||
}
|
||||
buys.push(order);
|
||||
}
|
||||
} else {}
|
||||
if (orders['sell'].length > 0) {
|
||||
for (var x = 0; x < orders['sell'].length; x++) {
|
||||
var order = {
|
||||
amount: parseFloat(orders.sell[x].Quantity).toFixed(8),
|
||||
price: parseFloat(orders.sell[x].Rate).toFixed(8),
|
||||
// total: parseFloat(orders.sell[x].Total).toFixed(8)
|
||||
// Necessary because API will return 0.00 for small volume transactions
|
||||
total: (parseFloat(orders.sell[x].Quantity).toFixed(8) * parseFloat(orders.sell[x].Rate)).toFixed(8)
|
||||
}
|
||||
sells.push(order);
|
||||
}
|
||||
} else {
|
||||
}
|
||||
return cb(null, buys, sells);
|
||||
} else {
|
||||
return cb(body.message, [], [])
|
||||
|
||||
if (orders['buy'].length > 0) {
|
||||
for (var i = 0; i < orders['buy'].length; i++) {
|
||||
var order = {
|
||||
price: orders.buy[i].Rate,
|
||||
quantity: orders.buy[i].Quantity
|
||||
}
|
||||
|
||||
buys.push(order);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if (orders['sell'].length > 0) {
|
||||
for (var i = 0; i < orders['sell'].length; i++) {
|
||||
var order = {
|
||||
price: orders.sell[i].Rate,
|
||||
quantity: orders.sell[i].Quantity
|
||||
}
|
||||
|
||||
sells.push(order);
|
||||
}
|
||||
}
|
||||
|
||||
return cb(null, buys, sells);
|
||||
} else {
|
||||
return cb(body.message, [], [])
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function get_chartdata(coin, exchange, cb) {
|
||||
var end = Date.now();
|
||||
|
||||
end = end / 1000;
|
||||
start = end - 86400;
|
||||
|
||||
var req_url = base_url + '/getcandles/?market=' + coin + '_' + exchange + '&period=1h';
|
||||
|
||||
request({ uri: req_url, json: true, headers: {'User-Agent': 'eiquidus'} }, function (error, response, chartdata) {
|
||||
if (error) {
|
||||
return cb(error, []);
|
||||
} else {
|
||||
if (chartdata.success) {
|
||||
var processed = [];
|
||||
|
||||
for (var i = 0; i < chartdata.result.length; i++) {
|
||||
// only take values more recent than the last 24 hours
|
||||
if (new Date(chartdata.result[i].TimeStamp).getTime()/1000 > start) {
|
||||
processed.push([new Date(chartdata.result[i].TimeStamp).getTime(), parseFloat(chartdata.result[i].Open), parseFloat(chartdata.result[i].High), parseFloat(chartdata.result[i].Low), parseFloat(chartdata.result[i].Close)]);
|
||||
}
|
||||
}
|
||||
|
||||
return cb(null, processed);
|
||||
}
|
||||
else
|
||||
return cb(chartdata.message, []);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
get_data: function(coin, exchange, cb) {
|
||||
market_name: 'Bleutrade',
|
||||
get_data: function(settings, cb) {
|
||||
var error = null;
|
||||
get_orders(coin, exchange, function(err, buys, sells) {
|
||||
if (err) { error = err; }
|
||||
get_trades(coin, exchange, function(err, trades) {
|
||||
get_chartdata(settings.coin, settings.exchange, function (err, chartdata){
|
||||
if (err) { chartdata = []; error = err; }
|
||||
get_orders(settings.coin, settings.exchange, function(err, buys, sells) {
|
||||
if (err) { error = err; }
|
||||
get_summary(coin, exchange, function(err, stats) {
|
||||
get_trades(settings.coin, settings.exchange, function(err, trades) {
|
||||
if (err) { error = err; }
|
||||
return cb(error, {buys: buys, sells: sells, chartdata: [], trades: trades, stats: stats});
|
||||
get_summary(settings.coin, settings.exchange, function(err, stats) {
|
||||
if (err) { error = err; }
|
||||
return cb(error, {buys: buys, sells: sells, chartdata: chartdata, trades: trades, stats: stats});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
};
|
||||
};
|
||||
+100
-68
@@ -1,21 +1,25 @@
|
||||
var request = require('postman-request');
|
||||
|
||||
var base_url = 'https://api.crex24.com/v2/public';
|
||||
|
||||
function get_summary(coin, exchange, cb) {
|
||||
var summary = {};
|
||||
var url=base_url + '/tickers?instrument=' + coin.toUpperCase() + '-' + exchange.toUpperCase();
|
||||
request({uri: url, json: true}, function (error, response, body) {
|
||||
|
||||
request({uri: url, json: true, headers: {'User-Agent': 'eiquidus'}}, function (error, response, body) {
|
||||
if (error) {
|
||||
return cb(error, null);
|
||||
} else if (body.error !== true) {
|
||||
summary['ask'] = parseFloat(body[0]['ask']).toFixed(8);
|
||||
summary['bid'] = parseFloat(body[0]['bid']).toFixed(8);
|
||||
summary['volume'] = parseFloat(body[0]['baseVolume']).toFixed(8);
|
||||
summary['volume_btc'] = parseFloat(body[0]['volumeInBtc']).toFixed(8);
|
||||
summary['high'] = parseFloat(body[0]['high']).toFixed(8);
|
||||
summary['low'] = parseFloat(body[0]['low']).toFixed(8);
|
||||
summary['last'] = parseFloat(body[0]['last']).toFixed(8);
|
||||
summary['change'] = parseFloat(body[0]['percentChange']);
|
||||
var summary = {};
|
||||
|
||||
summary['ask'] = body[0]['ask'];
|
||||
summary['bid'] = body[0]['bid'];
|
||||
summary['volume'] = body[0]['baseVolume'];
|
||||
summary['volume_btc'] = body[0]['volumeInBtc'];
|
||||
summary['high'] = body[0]['high'];
|
||||
summary['low'] = body[0]['low'];
|
||||
summary['last'] = body[0]['last'];
|
||||
summary['change'] = body[0]['percentChange'];
|
||||
|
||||
return cb(null, summary);
|
||||
} else {
|
||||
return cb(error, null);
|
||||
@@ -25,76 +29,104 @@ function get_summary(coin, exchange, cb) {
|
||||
|
||||
function get_trades(coin, exchange, cb) {
|
||||
var req_url = base_url + '/recentTrades?instrument=' + coin.toUpperCase() + '-' + exchange.toUpperCase();
|
||||
request({ uri: req_url, json: true }, function (error, response, body) {
|
||||
if(error)
|
||||
return cb(error, null);
|
||||
else if (body.error !== true) {
|
||||
var tTrades = body;
|
||||
var trades = [];
|
||||
for (var i = 0; i < tTrades.length; i++) {
|
||||
var Trade = {
|
||||
orderpair: tTrades[i].Label,
|
||||
ordertype: tTrades[i].side,
|
||||
amount: parseFloat(tTrades[i].volume).toFixed(8),
|
||||
price: parseFloat(tTrades[i].price).toFixed(8),
|
||||
total: (parseFloat(tTrades[i].volume).toFixed(8) * parseFloat(tTrades[i].price)).toFixed(8),
|
||||
timestamp: parseInt((new Date(tTrades[i].timestamp).getTime() / 1000).toFixed(0))
|
||||
}
|
||||
trades.push(Trade);
|
||||
}
|
||||
return cb(null, trades);
|
||||
} else {
|
||||
return cb(body.Message, null);
|
||||
|
||||
request({ uri: req_url, json: true, headers: {'User-Agent': 'eiquidus'}}, function (error, response, body) {
|
||||
if (error)
|
||||
return cb(error, null);
|
||||
else if (body.error !== true) {
|
||||
var trades = [];
|
||||
|
||||
for (var i = 0; i < body.length; i++) {
|
||||
var trade = {
|
||||
ordertype: body[i].side,
|
||||
quantity: body[i].volume,
|
||||
price: body[i].price,
|
||||
timestamp: body[i].timestamp
|
||||
}
|
||||
|
||||
trades.push(trade);
|
||||
}
|
||||
|
||||
return cb(null, trades);
|
||||
} else
|
||||
return cb(body.Message, null);
|
||||
});
|
||||
}
|
||||
|
||||
function get_orders(coin, exchange, cb) {
|
||||
var req_url = base_url + '/orderBook?instrument=' + coin.toUpperCase() + '-' + exchange.toUpperCase();
|
||||
request({ uri: req_url, json: true }, function (error, response, body) {
|
||||
if(error)
|
||||
return cb(error, null);
|
||||
else if (body.error !== true) {
|
||||
var buyorders = body['buyLevels'];
|
||||
var sellorders = body['sellLevels'];
|
||||
var buys = [];
|
||||
var sells = [];
|
||||
if (buyorders.length > 0){
|
||||
for (var i = 0; i < buyorders.length; i++) {
|
||||
var order = {
|
||||
amount: parseFloat(buyorders[i].volume).toFixed(8),
|
||||
price: parseFloat(buyorders[i].price).toFixed(8),
|
||||
total: (parseFloat(buyorders[i].volume).toFixed(8) * parseFloat(buyorders[i].price)).toFixed(8)
|
||||
}
|
||||
buys.push(order);
|
||||
}
|
||||
} else {}
|
||||
if (sellorders.length > 0) {
|
||||
for (var x = 0; x < sellorders.length; x++) {
|
||||
var order = {
|
||||
amount: parseFloat(sellorders[x].volume).toFixed(8),
|
||||
price: parseFloat(sellorders[x].price).toFixed(8),
|
||||
total: (parseFloat(sellorders[x].volume).toFixed(8) * parseFloat(sellorders[x].price)).toFixed(8)
|
||||
}
|
||||
sells.push(order);
|
||||
}
|
||||
}
|
||||
return cb(null, buys, sells);
|
||||
} else
|
||||
return cb(body.Message, [], [])
|
||||
});
|
||||
|
||||
request({ uri: req_url, json: true, headers: {'User-Agent': 'eiquidus'}}, function (error, response, body) {
|
||||
if (error)
|
||||
return cb(error, null);
|
||||
else if (body.error !== true) {
|
||||
var buys = [];
|
||||
var sells = [];
|
||||
|
||||
if (body['buyLevels'].length > 0) {
|
||||
for (var i = 0; i < body['buyLevels'].length; i++) {
|
||||
var order = {
|
||||
price: body['buyLevels'][i].price,
|
||||
quantity: body['buyLevels'][i].volume
|
||||
}
|
||||
|
||||
buys.push(order);
|
||||
}
|
||||
}
|
||||
|
||||
if (body['sellLevels'].length > 0) {
|
||||
for (var i = 0; i < body['sellLevels'].length; i++) {
|
||||
var order = {
|
||||
price: body['sellLevels'][i].price,
|
||||
quantity: body['sellLevels'][i].volume
|
||||
}
|
||||
|
||||
sells.push(order);
|
||||
}
|
||||
}
|
||||
|
||||
return cb(null, buys, sells);
|
||||
} else
|
||||
return cb(body.Message, [], [])
|
||||
});
|
||||
}
|
||||
|
||||
function get_chartdata(coin, exchange, cb) {
|
||||
var end = Date.now();
|
||||
|
||||
end = end / 1000;
|
||||
start = end - 86400;
|
||||
|
||||
var req_url = base_url + '/ohlcv?instrument=' + coin.toUpperCase() + '-' + exchange.toUpperCase() + '&granularity=15m&limit=100';
|
||||
|
||||
request({ uri: req_url, json: true, headers: {'User-Agent': 'eiquidus'} }, function (error, response, chartdata) {
|
||||
if (error) {
|
||||
return cb(error, []);
|
||||
} else {
|
||||
var processed = [];
|
||||
|
||||
for (var i = 0; i < chartdata.length; i++)
|
||||
processed.push([new Date(chartdata[i].timestamp).getTime(), parseFloat(chartdata[i].open), parseFloat(chartdata[i].high), parseFloat(chartdata[i].low), parseFloat(chartdata[i].close)]);
|
||||
|
||||
return cb(null, processed);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
get_data: function(coin, exchange, cb) {
|
||||
market_name: 'Crex24',
|
||||
get_data: function(settings, cb) {
|
||||
var error = null;
|
||||
get_orders(coin, exchange, function(err, buys, sells) {
|
||||
if (err) { error = err; }
|
||||
get_trades(coin, exchange, function(err, trades) {
|
||||
get_chartdata(settings.coin, settings.exchange, function (err, chartdata) {
|
||||
if (err) { chartdata = []; error = err; }
|
||||
get_orders(settings.coin, settings.exchange, function(err, buys, sells) {
|
||||
if (err) { error = err; }
|
||||
get_summary(coin, exchange, function(err, stats) {
|
||||
get_trades(settings.coin, settings.exchange, function(err, trades) {
|
||||
if (err) { error = err; }
|
||||
return cb(error, {buys: buys, sells: sells, chartdata: [], trades: trades, stats: stats});
|
||||
get_summary(settings.coin, settings.exchange, function(err, stats) {
|
||||
if (err) { error = err; }
|
||||
return cb(error, {buys: buys, sells: sells, chartdata: chartdata, trades: trades, stats: stats});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
+100
-60
@@ -1,98 +1,138 @@
|
||||
var request = require('postman-request');
|
||||
var crypto = require('crypto');
|
||||
//var settings = require('./settings-market-example.json');
|
||||
|
||||
var base_url = 'https://node1.fides-ex.com';
|
||||
|
||||
//
|
||||
// Get Market From Fides-ex
|
||||
//
|
||||
function get_summary(coin, exchange, cb) {
|
||||
var summary = {};
|
||||
var url=base_url + '/market/get-market-summary/' + exchange.toUpperCase() + "_" + coin.toUpperCase();
|
||||
var url = base_url + '/market/get-market-summary/' + exchange.toUpperCase() + '_' + coin.toUpperCase();
|
||||
|
||||
request({uri: url, json: true}, function (error, response, body) {
|
||||
request({uri: url, json: true, headers: {'User-Agent': 'eiquidus'}}, function (error, response, body) {
|
||||
if (error) {
|
||||
return cb(error, null);
|
||||
} else if (body.error !== true) {
|
||||
summary['ask'] = parseFloat(body['data']['LowestAsk']).toFixed(8);
|
||||
summary['bid'] = parseFloat(body['data']['HeighestBid']).toFixed(8);
|
||||
summary['volume'] = parseFloat(body['data']['QuoteVolume']).toFixed(8);
|
||||
summary['volume_btc'] = parseFloat(body['data']['BaseVolume']).toFixed(8);
|
||||
summary['high'] = parseFloat(body['data']['High_24hr']).toFixed(8);
|
||||
summary['low'] = parseFloat(body['data']['Low_24hr']).toFixed(8);
|
||||
summary['last'] = parseFloat(body['data']['Last']).toFixed(8);
|
||||
summary['change'] = parseFloat(body['data']['PercentChange']);
|
||||
} else if (body.errorMessage !== true) {
|
||||
var summary = {};
|
||||
|
||||
summary['ask'] = body['data']['LowestAsk'];
|
||||
summary['bid'] = body['data']['HeighestBid'];
|
||||
summary['volume'] = body['data']['QuoteVolume'];
|
||||
summary['volume_btc'] = body['data']['BaseVolume'];
|
||||
summary['high'] = body['data']['High_24hr'];
|
||||
summary['low'] = body['data']['Low_24hr'];
|
||||
summary['last'] = body['data']['Last'];
|
||||
summary['change'] = body['data']['PercentChange'];
|
||||
|
||||
return cb(null, summary);
|
||||
} else {
|
||||
return cb(error, null);
|
||||
}
|
||||
});
|
||||
}
|
||||
// Get Trades
|
||||
function get_trades(coin, exchange, cb) {
|
||||
var req_url=base_url + '/market/get-trade-history/' + exchange.toUpperCase() + "_" + coin.toUpperCase();
|
||||
request({uri: req_url, json: true}, function (error, response, body) {
|
||||
if (body.error) {
|
||||
return cb(body.error, []);
|
||||
} else {
|
||||
return cb(null, body['data']);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function get_trades(coin, exchange, cb) {
|
||||
var req_url = base_url + '/market/get-trade-history/' + exchange.toUpperCase() + '_' + coin.toUpperCase();
|
||||
|
||||
request({uri: req_url, json: true, headers: {'User-Agent': 'eiquidus'}}, function (error, response, body) {
|
||||
if (body.errorMessage)
|
||||
return cb(body.errorMessage, []);
|
||||
else {
|
||||
var trades = [];
|
||||
|
||||
for (var i = 0; i < body['data'].length; i++) {
|
||||
var trade = {
|
||||
ordertype: body['data'][i].Type,
|
||||
quantity: body['data'][i].Volume,
|
||||
price: body['data'][i].Rate,
|
||||
total: body['data'][i].Total,
|
||||
timestamp: body['data'][i].Date
|
||||
}
|
||||
|
||||
trades.push(trade);
|
||||
}
|
||||
|
||||
return cb(null, trades);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function get_orders_side(coin, exchange, side, cb){
|
||||
var req_url = base_url + "/market/get-open-orders/" + exchange.toUpperCase() + "_" + coin.toUpperCase() +"/" + side.toUpperCase() + "/10";
|
||||
console.log("sending request to - " + req_url)
|
||||
request({uri: req_url, json:true}, function (error, response, body){
|
||||
if(error)
|
||||
var req_url = base_url + '/market/get-open-orders/' + exchange.toUpperCase() + '_' + coin.toUpperCase() + '/' + side.toUpperCase() + '/10';
|
||||
|
||||
request({uri: req_url, json:true, headers: {'User-Agent': 'eiquidus'}}, function (error, response, body) {
|
||||
if (error)
|
||||
return cb(error, null);
|
||||
else if(body.error !== true){
|
||||
else if (body.errorMessage)
|
||||
return cb(body.errorMessage, []);
|
||||
else if (body.errorMessage !== true) {
|
||||
var orders = [];
|
||||
if(body['data'].Orders.length > 0){
|
||||
for( var i = 0; i < body['data'].Orders.length; i++) {
|
||||
|
||||
if (body['data'].Orders.length > 0) {
|
||||
for (var i = 0; i < body['data'].Orders.length; i++) {
|
||||
var order = {
|
||||
MarketType: body['data'].Orders[i].MarketType,
|
||||
CurrencyType: body['data'].Orders[i].CurrencyType,
|
||||
Type: body['data'].Type,
|
||||
Pair: body['data'].Pair,
|
||||
Rate: body['data'].Orders[i].Rate,
|
||||
Volume: body['data'].Orders[i].Volume,
|
||||
Total: body['data'].Orders[i].Rate * body['data'].Orders[i].Volume
|
||||
price: body['data'].Orders[i].Rate,
|
||||
quantity: body['data'].Orders[i].Volume
|
||||
}
|
||||
|
||||
orders.push(order);
|
||||
}
|
||||
return cb(null,orders);
|
||||
}
|
||||
|
||||
return cb(null, orders);
|
||||
} else
|
||||
return cb(null, []);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
//Get Orders
|
||||
function get_orders(coin, exchange, cb) {
|
||||
|
||||
var buyorders = get_orders_side(coin, exchange, "buy", function(err, buys){
|
||||
var sellorders = get_orders_side(coin, exchange, "sell", function(err, sells){
|
||||
var buyorders = get_orders_side(coin, exchange, 'buy', function(err, buys) {
|
||||
var sellorders = get_orders_side(coin, exchange, 'sell', function(err, sells) {
|
||||
return cb(null, buys, sells);
|
||||
})
|
||||
})
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function get_chartdata(coin, exchange, cb) {
|
||||
var end = Date.now();
|
||||
|
||||
end = end / 1000;
|
||||
start = end - 86400;
|
||||
|
||||
var req_url = base_url + '/market/get-chart-data?baseCurrency=' + coin.toUpperCase() + '"eCurrency=' + exchange.toUpperCase() + '×tamp=' + (end * 1000).toString() + '&interval=15&limit=200';
|
||||
|
||||
request({ uri: req_url, json: true, headers: {'User-Agent': 'eiquidus'} }, function (error, response, chartdata) {
|
||||
if (error)
|
||||
return cb(error, []);
|
||||
else if (chartdata.errorMessage)
|
||||
return cb(chartdata.errorMessage, []);
|
||||
else {
|
||||
var processed = [];
|
||||
|
||||
for (var i = 0; i < chartdata.data.length; i++) {
|
||||
// only take values more recent than the last 24 hours
|
||||
if (new Date(chartdata.data[i].time).getTime()/1000 > start) {
|
||||
processed.push([chartdata.data[i].time, parseFloat(chartdata.data[i].open), parseFloat(chartdata.data[i].high), parseFloat(chartdata.data[i].low), parseFloat(chartdata.data[i].close)]);
|
||||
}
|
||||
}
|
||||
|
||||
return cb(null, processed);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
get_data: function(coin, exchange, cb) {
|
||||
market_name: 'Fides-Ex',
|
||||
get_data: function(settings, cb) {
|
||||
var error = null;
|
||||
get_orders(coin, exchange, function(err, buys, sells) {
|
||||
if (err) { error = err; }
|
||||
get_trades(coin, exchange, function(err, trades) {
|
||||
if (err) { error = err; }
|
||||
get_summary(coin, exchange, function(err, stats) {
|
||||
get_chartdata(settings.coin, settings.exchange, function (err, chartdata) {
|
||||
if (err) { chartdata = []; error = err; }
|
||||
get_orders(settings.coin, settings.exchange, function(err, buys, sells) {
|
||||
if (err) { error = err; }
|
||||
get_trades(settings.coin, settings.exchange, function(err, trades) {
|
||||
if (err) { error = err; }
|
||||
//Note that chartdata is available for an API, but I can't get it to return anything
|
||||
//return cb(error, {buys: buys, sells: sells, chartdata: [], trades: trades, stats: stats});
|
||||
return cb(error, {buys: buys, sells: sells, chartdata: [], trades: trades, stats: stats});
|
||||
get_summary(settings.coin, settings.exchange, function(err, stats) {
|
||||
if (err) { error = err; }
|
||||
return cb(error, {buys: buys, sells: sells, chartdata: chartdata, trades: trades, stats: stats});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
};
|
||||
};
|
||||
+73
-28
@@ -5,33 +5,87 @@ var base_url = 'https://poloniex.com/public?command=';
|
||||
function get_summary(coin, exchange, cb) {
|
||||
var req_url = base_url + 'returnTicker';
|
||||
var ticker = exchange + '_' + coin;
|
||||
|
||||
request({uri: req_url, json: true, headers: {'User-Agent': 'eiquidus'}}, function (error, response, body) {
|
||||
if (body.error) {
|
||||
return cb(body.error, null);
|
||||
} else {
|
||||
return cb(null, body[ticker]);
|
||||
var retVal = {
|
||||
'high': body[ticker].high24hr,
|
||||
'low': body[ticker].low24hr,
|
||||
'volume': body[ticker].baseVolume,
|
||||
'bid': body[ticker].highestBid,
|
||||
'ask': body[ticker].lowestAsk,
|
||||
'last': body[ticker].last,
|
||||
'change': body[ticker].percentChange
|
||||
};
|
||||
|
||||
return cb(null, retVal);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function get_trades(coin, exchange, cb) {
|
||||
var req_url = base_url + 'returnTradeHistory¤cyPair=' + exchange + '_' + coin;
|
||||
|
||||
request({uri: req_url, json: true, headers: {'User-Agent': 'eiquidus'}}, function (error, response, body) {
|
||||
if (body.error) {
|
||||
return cb(body.error, []);
|
||||
} else {
|
||||
return cb(null, body);
|
||||
var trades = [];
|
||||
|
||||
if (body.length > 0) {
|
||||
for (var i = 0; i < body.length; i++) {
|
||||
var trade = {
|
||||
ordertype: body[i]['type'],
|
||||
price: body[i]['rate'],
|
||||
quantity: body[i]['amount'],
|
||||
total: body[i]['total'],
|
||||
timestamp: body[i]['date']
|
||||
}
|
||||
|
||||
trades.push(trade);
|
||||
}
|
||||
}
|
||||
|
||||
return cb(null, trades);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function get_orders(coin, exchange, cb) {
|
||||
var req_url = base_url + 'returnOrderBook¤cyPair=' + exchange + '_' + coin + '&depth=50';
|
||||
|
||||
request({uri: req_url, json: true, headers: {'User-Agent': 'eiquidus'}}, function (error, response, body) {
|
||||
if (body.error) {
|
||||
return cb(body.error, []);
|
||||
} else {
|
||||
return cb(null, body);
|
||||
var buys = [];
|
||||
var sells = [];
|
||||
|
||||
if (body['bids'].length > 0) {
|
||||
for (var i = 0; i < body['bids'].length; i++) {
|
||||
var order = {
|
||||
price: body.bids[i][0],
|
||||
quantity: body.bids[i][1]
|
||||
}
|
||||
|
||||
buys.push(order);
|
||||
}
|
||||
}
|
||||
|
||||
if (body['asks'].length > 0) {
|
||||
for (var i = 0; i < body['asks'].length; i++) {
|
||||
var order = {
|
||||
price: body.asks[i][0],
|
||||
quantity: body.asks[i][1]
|
||||
}
|
||||
|
||||
sells.push(order);
|
||||
}
|
||||
}
|
||||
|
||||
return cb(null, buys, sells);
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -39,47 +93,38 @@ function get_orders(coin, exchange, cb) {
|
||||
function get_chartdata(coin, exchange, cb) {
|
||||
var end = Date.now();
|
||||
end = end / 1000;
|
||||
start = end - 86400;
|
||||
start = end - 86400;
|
||||
|
||||
var req_url = base_url + 'returnChartData¤cyPair=' + exchange + '_' + coin + '&start=' + start + '&end=' + end + '&period=1800';
|
||||
|
||||
request({uri: req_url, json: true, headers: {'User-Agent': 'eiquidus'}}, function (error, response, chartdata) {
|
||||
if (error) {
|
||||
return cb(error, []);
|
||||
} else {
|
||||
if (chartdata.error == null) {
|
||||
var processed = [];
|
||||
for (var i = 0; i < chartdata.length; i++) {
|
||||
|
||||
for (var i = 0; i < chartdata.length; i++)
|
||||
processed.push([chartdata[i].date * 1000, parseFloat(chartdata[i].open), parseFloat(chartdata[i].high), parseFloat(chartdata[i].low), parseFloat(chartdata[i].close)]);
|
||||
if (i == chartdata.length - 1) {
|
||||
return cb(null, processed);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
||||
return cb(null, processed);
|
||||
} else
|
||||
return cb(chartdata.error, []);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
get_data: function(coin, exchange, cb) {
|
||||
market_name: 'Poloniex',
|
||||
get_data: function(settings, cb) {
|
||||
var error = null;
|
||||
get_chartdata(coin, exchange, function (err, chartdata){
|
||||
if (err) {
|
||||
chartdata = [];
|
||||
error = err;
|
||||
}
|
||||
get_orders(coin, exchange, function (err, orders){
|
||||
var buys = [];
|
||||
var sells = [];
|
||||
if (orders.bids) {
|
||||
buys = orders.bids;
|
||||
sells = orders.asks;
|
||||
} else {
|
||||
error = err;
|
||||
}
|
||||
get_trades(coin, exchange, function (err, trades){
|
||||
get_chartdata(settings.coin.toUpperCase(), settings.exchange.toUpperCase(), function (err, chartdata) {
|
||||
if (err) { chartdata = []; error = err; }
|
||||
get_orders(settings.coin.toUpperCase(), settings.exchange.toUpperCase(), function (err, buys, sells) {
|
||||
if (err) { error = err; }
|
||||
get_trades(settings.coin.toUpperCase(), settings.exchange.toUpperCase(), function (err, trades) {
|
||||
if (err) { error = err; }
|
||||
get_summary(coin, exchange, function (err, stats){
|
||||
get_summary(settings.coin.toUpperCase(), settings.exchange.toUpperCase(), function (err, stats) {
|
||||
if (err) { error = err; }
|
||||
return cb(error, {buys: buys, sells: sells, chartdata: chartdata, trades: trades, stats: stats});
|
||||
});
|
||||
|
||||
+123
-127
@@ -1,105 +1,102 @@
|
||||
var request = require('postman-request');
|
||||
|
||||
var base_url = 'https://api3.stex.com/public';
|
||||
|
||||
function get_summary(coin, exchange, stex_id, cb) {
|
||||
var summary = {};
|
||||
var summary = {};
|
||||
|
||||
request({ uri: base_url + '/ticker/' + stex_id, json: true, headers: {'User-Agent': 'eiquidus'} }, function (error, response, body) {
|
||||
if (error)
|
||||
return cb(error, null);
|
||||
else if (body.success === true) {
|
||||
summary['bid'] = parseFloat(body.data['bid']).toFixed(8);
|
||||
summary['ask'] = parseFloat(body.data['ask']).toFixed(8);
|
||||
summary['volume'] = body.data['volume'];
|
||||
summary['high'] = parseFloat(body.data['high']).toFixed(8);
|
||||
summary['low'] = parseFloat(body.data['low']).toFixed(8);
|
||||
summary['last'] = parseFloat(body.data['last']).toFixed(8);
|
||||
return cb(null, summary);
|
||||
} else
|
||||
return cb(error, null);
|
||||
}).on('error', function(err) {
|
||||
return cb(error, null);
|
||||
});
|
||||
request({ uri: base_url + '/ticker/' + stex_id, json: true, headers: {'User-Agent': 'eiquidus'} }, function (error, response, body) {
|
||||
if (error)
|
||||
return cb(error, null);
|
||||
else if (body.success === true) {
|
||||
summary['bid'] = body.data['bid'];
|
||||
summary['ask'] = body.data['ask'];
|
||||
summary['volume'] = body.data['volume'];
|
||||
summary['high'] = body.data['high'];
|
||||
summary['low'] = body.data['low'];
|
||||
summary['last'] = body.data['last'];
|
||||
summary['change'] = body.data['change'];
|
||||
|
||||
return cb(null, summary);
|
||||
} else
|
||||
return cb(error, null);
|
||||
}).on('error', function(err) {
|
||||
return cb(error, null);
|
||||
});
|
||||
}
|
||||
|
||||
function get_trades(coin, exchange, stex_id, cb) {
|
||||
var req_url = base_url + '/trades/' + stex_id + '?sort=DESC&limit=100';
|
||||
var req_url = base_url + '/trades/' + stex_id + '?sort=DESC&limit=100';
|
||||
|
||||
request({ uri: req_url, json: true, headers: {'User-Agent': 'eiquidus'} }, function (error, response, body) {
|
||||
if (body.success == true) {
|
||||
var tTrades = body.data;
|
||||
var trades = [];
|
||||
for (var i = 0; i < tTrades.length; i++) {
|
||||
var Trade = {
|
||||
orderpair: coin,
|
||||
ordertype: tTrades[i].type,
|
||||
amount: parseFloat(tTrades[i].amount).toFixed(8),
|
||||
price: parseFloat(tTrades[i].price).toFixed(8),
|
||||
// total: parseFloat(tTrades[i].Total).toFixed(8)
|
||||
// Necessary because API will return 0.00 for small volume transactions
|
||||
total: (parseFloat(tTrades[i].amount).toFixed(8) * parseFloat(tTrades[i].price)).toFixed(8),
|
||||
timestamp: tTrades[i].timestamp
|
||||
}
|
||||
trades.push(Trade);
|
||||
}
|
||||
return cb(null, trades);
|
||||
}
|
||||
else
|
||||
return cb(body.message, null);
|
||||
}).on('error', function(err) {
|
||||
return cb(error, null);
|
||||
});
|
||||
request({ uri: req_url, json: true, headers: {'User-Agent': 'eiquidus'} }, function (error, response, body) {
|
||||
if (body.success == true) {
|
||||
var trades = [];
|
||||
|
||||
for (var i = 0; i < body.data.length; i++) {
|
||||
var trade = {
|
||||
ordertype: body.data[i].type,
|
||||
price: body.data[i].price,
|
||||
quantity: body.data[i].amount,
|
||||
timestamp: new Date(body.data[i].timestamp * 1000).toUTCString()
|
||||
}
|
||||
|
||||
trades.push(trade);
|
||||
}
|
||||
|
||||
return cb(null, trades);
|
||||
} else
|
||||
return cb(body.message, null);
|
||||
}).on('error', function(err) {
|
||||
return cb(error, null);
|
||||
});
|
||||
}
|
||||
|
||||
function get_orders(coin, exchange, stex_id, cb) {
|
||||
var req_url = base_url + '/orderbook/' + stex_id + '?limit_bids=100&limit_asks=100';
|
||||
var req_url = base_url + '/orderbook/' + stex_id + '?limit_bids=100&limit_asks=100';
|
||||
|
||||
request({ uri: req_url, json: true, headers: {'User-Agent': 'eiquidus'} }, function (error, response, body) {
|
||||
if (body.success == true) {
|
||||
var orders = body.data;
|
||||
var buys = [];
|
||||
var sells = [];
|
||||
if (orders['bid'].length > 0){
|
||||
for (var i = 0; i < orders['bid'].length; i++) {
|
||||
var order = {
|
||||
amount: parseFloat(orders.bid[i].amount).toFixed(8),
|
||||
price: parseFloat(orders.bid[i].price).toFixed(8),
|
||||
// total: parseFloat(orders.bid[i].Total).toFixed(8)
|
||||
// Necessary because API will return 0.00 for small volume transactions
|
||||
total: (parseFloat(orders.bid[i].amount).toFixed(8) * parseFloat(orders.bid[i].price)).toFixed(8)
|
||||
}
|
||||
buys.push(order);
|
||||
}
|
||||
}
|
||||
if (orders['ask'].length > 0) {
|
||||
for (var x = 0; x < orders['ask'].length; x++) {
|
||||
var order = {
|
||||
amount: parseFloat(orders.ask[x].amount).toFixed(8),
|
||||
price: parseFloat(orders.ask[x].price).toFixed(8),
|
||||
// total: parseFloat(orders.ask[x].Total).toFixed(8)
|
||||
// Necessary because API will return 0.00 for small volume transactions
|
||||
total: (parseFloat(orders.ask[x].amount).toFixed(8) * parseFloat(orders.ask[x].price)).toFixed(8)
|
||||
}
|
||||
sells.push(order);
|
||||
}
|
||||
}
|
||||
return cb(null, buys, sells);
|
||||
request({ uri: req_url, json: true, headers: {'User-Agent': 'eiquidus'} }, function (error, response, body) {
|
||||
if (body.success == true) {
|
||||
var orders = body.data;
|
||||
var buys = [];
|
||||
var sells = [];
|
||||
|
||||
if (orders['bid'].length > 0){
|
||||
for (var i = 0; i < orders['bid'].length; i++) {
|
||||
var order = {
|
||||
price: orders.bid[i].price,
|
||||
quantity: orders.bid[i].amount
|
||||
}
|
||||
|
||||
buys.push(order);
|
||||
}
|
||||
else
|
||||
return cb(body.message, [], [])
|
||||
}).on('error', function(err) {
|
||||
return cb(error, null, null);
|
||||
});
|
||||
}
|
||||
|
||||
if (orders['ask'].length > 0) {
|
||||
for (var i = 0; i < orders['ask'].length; i++) {
|
||||
var order = {
|
||||
price: orders.ask[i].price,
|
||||
quantity: orders.ask[i].amount
|
||||
}
|
||||
|
||||
sells.push(order);
|
||||
}
|
||||
}
|
||||
|
||||
return cb(null, buys, sells);
|
||||
} else
|
||||
return cb(body.message, [], []);
|
||||
}).on('error', function(err) {
|
||||
return cb(error, null, null);
|
||||
});
|
||||
}
|
||||
|
||||
function get_chartdata(coin, exchange, stex_id, cb) {
|
||||
// do not collect chart data for now
|
||||
return cb(null, []);
|
||||
/*
|
||||
var req_url = base_url + '/chart/' + stex_id + '/30?timeStart=' + start + '&timeEnd=' + end + '&limit=100';
|
||||
var end = Date.now();
|
||||
|
||||
end = end / 1000;
|
||||
start = end - 86400;
|
||||
start = end - 86400;
|
||||
|
||||
var req_url = base_url + '/chart/' + stex_id + '/30?timeStart=' + start + '&timeEnd=' + end + '&limit=1800&candlesType=1D';
|
||||
|
||||
request({ uri: req_url, json: true, headers: {'User-Agent': 'eiquidus'} }, function (error, response, chartdata) {
|
||||
if (error) {
|
||||
@@ -107,59 +104,58 @@ function get_chartdata(coin, exchange, stex_id, cb) {
|
||||
} else {
|
||||
if (chartdata.success == true) {
|
||||
var processed = [];
|
||||
for (var i = 0; i < chartdata.data.length; i++) {
|
||||
processed.push([chartdata.data[i].time, parseFloat(chartdata.data[i].open), parseFloat(chartdata.data[i].high), parseFloat(chartdata.data[i].low), parseFloat(chartdata.data[i].close)]);
|
||||
if (i == chartdata.data.length - 1)
|
||||
return cb(null, processed);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
for (var i = 0; i < chartdata.data.length; i++)
|
||||
processed.push([chartdata.data[i].time, parseFloat(chartdata.data[i].open), parseFloat(chartdata.data[i].high), parseFloat(chartdata.data[i].low), parseFloat(chartdata.data[i].close)]);
|
||||
|
||||
return cb(null, processed);
|
||||
} else
|
||||
return cb(chartdata.message, []);
|
||||
}
|
||||
});
|
||||
*/
|
||||
}
|
||||
|
||||
function get_pair_id(coin, exchange, cb) {
|
||||
// Lookup the currency pair id needed to use the stex api
|
||||
request({ uri: base_url + '/currency_pairs/list/' + exchange, json: true, headers: {'User-Agent': 'eiquidus'} }, function (error, response, body) {
|
||||
if (error)
|
||||
return cb(error, null);
|
||||
else if (body.success === true) {
|
||||
var stex_id = 0;
|
||||
// Find the currency pair
|
||||
for (i = 0; i < body.data.length; i++) {
|
||||
if (body.data[i].currency_code.toUpperCase() == coin.toUpperCase()) {
|
||||
stex_id = body.data[i].id;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return cb(null, stex_id);
|
||||
} else
|
||||
return cb(error, null);
|
||||
}).on('error', function(err) {
|
||||
// Lookup the currency pair id needed to use the stex api
|
||||
request({ uri: base_url + '/currency_pairs/list/' + exchange, json: true, headers: {'User-Agent': 'eiquidus'} }, function (error, response, body) {
|
||||
if (error)
|
||||
return cb(error, null);
|
||||
});
|
||||
else if (body.success === true) {
|
||||
var stex_id = 0;
|
||||
// Find the currency pair
|
||||
for (i = 0; i < body.data.length; i++) {
|
||||
if (body.data[i].currency_code.toUpperCase() == coin.toUpperCase()) {
|
||||
stex_id = body.data[i].id;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return cb(null, stex_id);
|
||||
} else
|
||||
return cb(error, null);
|
||||
}).on('error', function(err) {
|
||||
return cb(error, null);
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
get_data: function(coin, exchange, cb) {
|
||||
var error = null;
|
||||
get_pair_id(coin, exchange, function (err, stex_id) {
|
||||
get_chartdata(coin, exchange, stex_id, function (err, chartdata) {
|
||||
if (err) { chartdata = []; error = err; }
|
||||
get_orders(coin, exchange, stex_id, function (err, buys, sells) {
|
||||
if (err) { error = err; }
|
||||
get_trades(coin, exchange, stex_id, function (err, trades) {
|
||||
if (err) { error = err; }
|
||||
get_summary(coin, exchange, stex_id, function (err, stats) {
|
||||
if (err) { error = err; }
|
||||
return cb(error, { buys: buys, sells: sells, chartdata: chartdata, trades: trades, stats: stats });
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
market_name: 'Stex',
|
||||
get_data: function(settings, cb) {
|
||||
var error = null;
|
||||
get_pair_id(settings.coin.toUpperCase(), settings.exchange.toUpperCase(), function (err, stex_id) {
|
||||
get_chartdata(settings.coin.toUpperCase(), settings.exchange.toUpperCase(), stex_id, function (err, chartdata) {
|
||||
if (err) { chartdata = []; error = err; }
|
||||
get_orders(settings.coin.toUpperCase(), settings.exchange.toUpperCase(), stex_id, function (err, buys, sells) {
|
||||
if (err) { error = err; }
|
||||
get_trades(settings.coin.toUpperCase(), settings.exchange.toUpperCase(), stex_id, function (err, trades) {
|
||||
if (err) { error = err; }
|
||||
get_summary(settings.coin.toUpperCase(), settings.exchange.toUpperCase(), stex_id, function (err, stats) {
|
||||
if (err) { error = err; }
|
||||
return cb(error, { buys: buys, sells: sells, chartdata: chartdata, trades: trades, stats: stats });
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
};
|
||||
+67
-16
@@ -8,10 +8,19 @@ function get_summary(coin, exchange, cb) {
|
||||
if (error) {
|
||||
return cb(error, null);
|
||||
} else {
|
||||
if (body.message) {
|
||||
return cb(body.message, null)
|
||||
} else {
|
||||
return cb (null, body[coin + '_' + exchange]);
|
||||
if (body.message)
|
||||
return cb(body.message, null);
|
||||
else {
|
||||
var summary = {};
|
||||
|
||||
summary['bid'] = body[coin + '_' + exchange]['buy'];
|
||||
summary['ask'] = body[coin + '_' + exchange]['sell'];
|
||||
summary['volume'] = body[coin + '_' + exchange]['vol'];
|
||||
summary['high'] = body[coin + '_' + exchange]['high'];
|
||||
summary['low'] = body[coin + '_' + exchange]['low'];
|
||||
summary['last'] = body[coin + '_' + exchange]['last'];
|
||||
|
||||
return cb(null, summary);
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -19,14 +28,28 @@ function get_summary(coin, exchange, cb) {
|
||||
|
||||
function get_trades(coin, exchange, cb) {
|
||||
var req_url = base_url + '/trades/' + coin + '_' + exchange;
|
||||
|
||||
request({uri: req_url, json: true, headers: {'User-Agent': 'eiquidus'}}, function (error, response, body) {
|
||||
if (error) {
|
||||
return cb(error, null);
|
||||
} else {
|
||||
if (body.message) {
|
||||
return cb(body.message, null)
|
||||
} else {
|
||||
return cb (null, body[coin + '_' + exchange]);
|
||||
if (body.message)
|
||||
return cb(body.message, null);
|
||||
else {
|
||||
var trades = [];
|
||||
|
||||
for (var i = 0; i < body[coin + '_' + exchange].length; i++) {
|
||||
var trade = {
|
||||
ordertype: (body[coin + '_' + exchange][i]['type'].toLowerCase() == 'bid' ? 'BUY' : 'SELL'),
|
||||
price: body[coin + '_' + exchange][i].price,
|
||||
quantity: body[coin + '_' + exchange][i].amount,
|
||||
timestamp: new Date(body[coin + '_' + exchange][i].timestamp * 1000).toUTCString()
|
||||
}
|
||||
|
||||
trades.push(trade);
|
||||
}
|
||||
|
||||
return cb(null, trades);
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -34,27 +57,55 @@ function get_trades(coin, exchange, cb) {
|
||||
|
||||
function get_orders(coin, exchange, cb) {
|
||||
var req_url = base_url + '/depth/' + coin + '_' + exchange;
|
||||
|
||||
request({uri: req_url, json: true, headers: {'User-Agent': 'eiquidus'}}, function (error, response, body) {
|
||||
if (body.success == 0) {
|
||||
if (body.success == 0)
|
||||
return cb(body.error, null, null);
|
||||
} else {
|
||||
return cb(null, body[coin + '_' + exchange]['bids'], body[coin + '_' + exchange]['asks']);
|
||||
else {
|
||||
var orders = body[coin + '_' + exchange];
|
||||
var buys = [];
|
||||
var sells = [];
|
||||
|
||||
if (orders['bids'].length > 0){
|
||||
for (var i = 0; i < orders['bids'].length; i++) {
|
||||
var order = {
|
||||
price: orders.bids[i][0],
|
||||
quantity: orders.bids[i][1]
|
||||
}
|
||||
|
||||
buys.push(order);
|
||||
}
|
||||
}
|
||||
|
||||
if (orders['asks'].length > 0) {
|
||||
for (var i = 0; i < orders['asks'].length; i++) {
|
||||
var order = {
|
||||
price: orders.asks[i][0],
|
||||
quantity: orders.asks[i][1]
|
||||
}
|
||||
|
||||
sells.push(order);
|
||||
}
|
||||
}
|
||||
|
||||
return cb(null, buys, sells);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
get_data: function(coin, exchange, cb) {
|
||||
market_name: 'Yobit',
|
||||
get_data: function(settings, cb) {
|
||||
var error = null;
|
||||
get_orders(coin, exchange, function(err, buys, sells) {
|
||||
get_orders(settings.coin.toLowerCase(), settings.exchange.toLowerCase(), function(err, buys, sells) {
|
||||
if (err) { error = err; }
|
||||
get_trades(coin, exchange, function(err, trades) {
|
||||
get_trades(settings.coin.toLowerCase(), settings.exchange.toLowerCase(), function(err, trades) {
|
||||
if (err) { error = err; }
|
||||
get_summary(coin, exchange, function(err, stats) {
|
||||
get_summary(settings.coin.toLowerCase(), settings.exchange.toLowerCase(), function(err, stats) {
|
||||
if (err) { error = err; }
|
||||
return cb(error, {buys: buys, sells: sells, chartdata: [], trades: trades, stats: stats});
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
};
|
||||
};
|
||||
@@ -132,16 +132,6 @@
|
||||
"mkt_type": "Type",
|
||||
"mkt_time_stamp": "Time Stamp",
|
||||
|
||||
// Markets
|
||||
"fides": "Fides-ex",
|
||||
"poloniex": "Poloniex",
|
||||
"bittrex": "Bittrex",
|
||||
"altmarkets": "AltMarkets",
|
||||
"bleutrade": "Bleutrade",
|
||||
"yobit": "Yobit",
|
||||
"stex": "Stex",
|
||||
"crex": "Crex24",
|
||||
|
||||
// Heavy rewards view
|
||||
"heavy_title": "Reward/voting information",
|
||||
"heavy_vote": "Vote",
|
||||
|
||||
@@ -226,4 +226,8 @@ tr {
|
||||
|
||||
.decimal {
|
||||
font-size: 0.7em;
|
||||
}
|
||||
|
||||
.marketSpacer {
|
||||
padding-bottom:10px;
|
||||
}
|
||||
+3
-1
@@ -143,9 +143,11 @@ router.get('/markets/:market', function(req, res) {
|
||||
var market = req.params['market'];
|
||||
if (settings.markets.enabled.indexOf(market) != -1) {
|
||||
db.get_market(market, function(data) {
|
||||
res.render('./markets/' + market, {
|
||||
var exMarket = require('../lib/markets/' + market);
|
||||
res.render('./market', {
|
||||
active: 'markets',
|
||||
marketdata: {
|
||||
market_name: exMarket.market_name,
|
||||
coin: settings.markets.coin,
|
||||
exchange: settings.markets.exchange,
|
||||
data: data,
|
||||
|
||||
@@ -118,7 +118,7 @@
|
||||
},
|
||||
|
||||
// market settings
|
||||
//supported markets: bittrex, poloniex, yobit, bleutrade, stex
|
||||
//included markets: altmarkets, bittrex, bleutrade, crex, fides, poloniex, stex, yobit
|
||||
//default market is loaded by default and determines last price in header
|
||||
"markets": {
|
||||
"coin": "EXOR",
|
||||
|
||||
@@ -0,0 +1,248 @@
|
||||
extends layout
|
||||
|
||||
block content
|
||||
script.
|
||||
$(document).ready(function() {
|
||||
$('.order-table').dataTable({
|
||||
info: false,
|
||||
paging: false,
|
||||
searching: false,
|
||||
ordering: false,
|
||||
scrollY: '250px',
|
||||
autowidth: true,
|
||||
responsive: true
|
||||
});
|
||||
$('.market-toggle').tooltip({
|
||||
animation: true,
|
||||
delay: { hide: 500 }
|
||||
});
|
||||
});
|
||||
.col-xs-12.col-md-12
|
||||
.d-none.nav.navbar.navbar-default(role='navigation' id='market_menu')
|
||||
.container-fluid
|
||||
.collapse.navbar-collapse(id='navbar-collapse')
|
||||
ul.nav.navbar-nav
|
||||
each mkt in settings.markets.enabled
|
||||
if market == mkt
|
||||
li.active
|
||||
a.navbar-link.loading(href='/markets/' + mkt) #{settings.locale[mkt]}
|
||||
else
|
||||
li
|
||||
a.navbar-link.loading(href='/markets/' + mkt) #{settings.locale[mkt]}
|
||||
block market_view
|
||||
- function formatDate(date) {
|
||||
- var hours = date.getHours();
|
||||
- var minutes = date.getMinutes();
|
||||
- var seconds = date.getSeconds();
|
||||
- var ampm = hours >= 12 ? 'PM' : 'AM';
|
||||
- hours = hours % 12;
|
||||
- hours = hours ? hours : 12;
|
||||
- hours = hours < 10 ? '0' + hours : hours;
|
||||
- minutes = minutes < 10 ? '0' + minutes : minutes;
|
||||
- seconds = seconds < 10 ? '0' + seconds : seconds;
|
||||
- return (date.getMonth()+1) + '/' + date.getDate() + '/' + date.getFullYear() + ' ' + hours + ':' + minutes + ':' + seconds + ' ' + ampm;
|
||||
- }
|
||||
script.
|
||||
$(document).ready(function() {
|
||||
var jqplot = null;
|
||||
var chartData = !{(marketdata.data.chartdata == 'null' || marketdata.data.chartdata == '' || marketdata.data.chartdata == '[]' ? 'null' : marketdata.data.chartdata)};
|
||||
|
||||
if (chartData != null && chartData.length > 0 ) {
|
||||
jqplot = $.jqplot('chart', [chartData], {
|
||||
seriesDefaults: {
|
||||
yaxis: 'y2axis'
|
||||
},
|
||||
axes: {
|
||||
xaxis: {
|
||||
renderer: $.jqplot.DateAxisRenderer,
|
||||
tickOptions: { formatString: '%R' },
|
||||
tickInterval: '2 hours'
|
||||
},
|
||||
y2axis: {
|
||||
tickOptions: { formatString: '%.8f' },
|
||||
}
|
||||
},
|
||||
series: [
|
||||
{
|
||||
renderer: $.jqplot.OHLCRenderer,
|
||||
rendererOptions: {
|
||||
candleStick: true,
|
||||
upBodyColor: '#2aa3a3',
|
||||
downBodyColor: '#e2595b',
|
||||
fillUpBody: true,
|
||||
fillDownBody: true
|
||||
}
|
||||
}
|
||||
],
|
||||
highlighter: {
|
||||
show: true,
|
||||
showMarker: false,
|
||||
tooltipAxes: 'xy',
|
||||
yvalues: 4,
|
||||
formatString: '<table class="jqplot-highlighter"> \
|
||||
<tr><td>time:</td><td>%s</td></tr> \
|
||||
<tr><td>open:</td><td>%s</td></tr> \
|
||||
<tr><td>hi:</td><td>%s</td></tr> \
|
||||
<tr><td>low:</td><td>%s</td></tr> \
|
||||
<tr><td>close:</td><td>%s</td></tr></table>'
|
||||
}
|
||||
});
|
||||
}
|
||||
$(window).resize(function () {
|
||||
if (jqplot != null)
|
||||
jqplot.replot( { resetAxes: false } );
|
||||
});
|
||||
});
|
||||
.row
|
||||
.col-md-12.marketSpacer
|
||||
.card.card-default
|
||||
.card-header
|
||||
strong #{marketdata.market_name} - #{marketdata.coin}/#{marketdata.exchange} - #{settings.locale.mkt_hours}
|
||||
if marketdata.data.chartdata == 'null' || marketdata.data.chartdata == '' || marketdata.data.chartdata == '[]'
|
||||
span.fas.fa-chart-line.float-right.view-chart-disabled.iquidus.market-toggle(style='cursor: pointer;', data-toggle='tooltip', data-placement='bottom', title=settings.locale.mkt_no_chart)
|
||||
table.table.table-bordered.summary-table
|
||||
thead
|
||||
tr
|
||||
if marketdata.data.summary.high != null
|
||||
th #{settings.locale.mkt_high}
|
||||
if marketdata.data.summary.low != null
|
||||
th #{settings.locale.mkt_low}
|
||||
if marketdata.data.summary.volume != null
|
||||
th #{settings.locale.mkt_volume}
|
||||
if marketdata.data.summary.volume_btc != null
|
||||
th.d-none.d-xl-table-cell #{settings.locale.mkt_volume} (#{marketdata.exchange})
|
||||
if marketdata.data.summary.bid != null
|
||||
th.d-none.d-md-table-cell #{settings.locale.mkt_top_bid}
|
||||
if marketdata.data.summary.ask != null
|
||||
th.d-none.d-md-table-cell #{settings.locale.mkt_top_ask}
|
||||
if marketdata.data.summary.last != null
|
||||
th.d-none.d-xl-table-cell #{settings.locale.mkt_last}
|
||||
if marketdata.data.summary.prev != null
|
||||
th.d-none.d-xl-table-cell #{settings.locale.mkt_yesterday}
|
||||
if marketdata.data.summary.change != null || (marketdata.data.summary.last != null && marketdata.data.summary.prev != null)
|
||||
th.d-none.d-xl-table-cell #{settings.locale.mkt_change}
|
||||
tbody
|
||||
tr
|
||||
if marketdata.data.summary.high != null
|
||||
td #{parseFloat(marketdata.data.summary.high).toFixed(8)}
|
||||
if marketdata.data.summary.low != null
|
||||
td #{parseFloat(marketdata.data.summary.low).toFixed(8)}
|
||||
if marketdata.data.summary.volume != null
|
||||
td #{parseFloat(marketdata.data.summary.volume).toFixed(8)}
|
||||
if marketdata.data.summary.volume_btc != null
|
||||
td.d-none.d-xl-table-cell #{parseFloat(marketdata.data.summary.volume_btc).toFixed(8)}
|
||||
if marketdata.data.summary.bid != null
|
||||
td.d-none.d-md-table-cell #{parseFloat(marketdata.data.summary.bid).toFixed(8)}
|
||||
if marketdata.data.summary.ask != null
|
||||
td.d-none.d-md-table-cell #{parseFloat(marketdata.data.summary.ask).toFixed(8)}
|
||||
if marketdata.data.summary.last != null
|
||||
td.d-none.d-xl-table-cell #{parseFloat(marketdata.data.summary.last).toFixed(8)}
|
||||
if marketdata.data.summary.prev != null
|
||||
td.d-none.d-xl-table-cell #{parseFloat(marketdata.data.summary.prev).toFixed(8)}
|
||||
if marketdata.data.summary.change != null || (marketdata.data.summary.last != null && marketdata.data.summary.prev != null)
|
||||
if marketdata.data.summary.change != null
|
||||
if marketdata.data.summary.change == '' || marketdata.data.summary.change == '-'
|
||||
td.d-none.d-xl-table-cell.font-weight-bold 0.00 %
|
||||
else
|
||||
- var price_change = parseFloat(marketdata.data.summary.change).toFixed(2);
|
||||
else
|
||||
- var price_change = (100 - ((parseFloat(marketdata.data.summary.prev) / parseFloat(marketdata.data.summary.last)) * 100)).toFixed(2);
|
||||
if price_change >= 0
|
||||
td.d-none.d-xl-table-cell.text-success.font-weight-bold +#{price_change} %
|
||||
else
|
||||
td.d-none.d-xl-table-cell.text-danger.font-weight-bold #{price_change} %
|
||||
if marketdata.data.chartdata != 'null' && marketdata.data.chartdata != '' && marketdata.data.chartdata != '[]'
|
||||
.row
|
||||
.col-md-12.marketSpacer
|
||||
.card.card-default
|
||||
.card-header
|
||||
strong #{marketdata.market_name} - #{marketdata.coin}/#{marketdata.exchange} - #{settings.locale.mkt_hours}
|
||||
.card-body
|
||||
div#chart(style='width: 100%; height: 300px;')
|
||||
.row
|
||||
.col-md-6.col-xs-12.marketSpacer
|
||||
.card.card-default
|
||||
.card-header
|
||||
h5.card-title #{settings.locale.mkt_buy_orders}
|
||||
table.table.table-striped.table-bordered.order-table
|
||||
thead
|
||||
tr
|
||||
th #{settings.locale.mkt_price} (#{marketdata.exchange})
|
||||
th #{settings.locale.mkt_amount} (#{marketdata.coin})
|
||||
th.d-none.d-sm-table-cell #{settings.locale.mkt_total} (#{marketdata.exchange})
|
||||
tbody
|
||||
each buy in marketdata.data.buys
|
||||
tr
|
||||
td.text-success.font-weight-bold
|
||||
=parseFloat(buy.price).toFixed(8)
|
||||
td
|
||||
=parseFloat(buy.quantity).toFixed(8)
|
||||
td.d-none.d-sm-table-cell
|
||||
if buy.total != null
|
||||
=parseFloat(buy.total).toFixed(8)
|
||||
else
|
||||
=parseFloat(parseFloat(buy.price).toFixed(8) * parseFloat(buy.quantity).toFixed(8)).toFixed(8)
|
||||
.col-md-6.col-xs-12.marketSpacer
|
||||
.card.card-default
|
||||
.card-header
|
||||
h5.card-title #{settings.locale.mkt_sell_orders}
|
||||
table.table.table-striped.table-bordered.order-table
|
||||
thead
|
||||
tr
|
||||
th #{settings.locale.mkt_price} (#{marketdata.exchange})
|
||||
th #{settings.locale.mkt_amount} (#{marketdata.coin})
|
||||
th.d-none.d-sm-table-cell #{settings.locale.mkt_total} (#{marketdata.exchange})
|
||||
tbody
|
||||
each sell in marketdata.data.sells
|
||||
tr
|
||||
td.text-danger.font-weight-bold
|
||||
=parseFloat(sell.price).toFixed(8)
|
||||
td
|
||||
=parseFloat(sell.quantity).toFixed(8)
|
||||
td.d-none.d-sm-table-cell
|
||||
if sell.total != null
|
||||
=parseFloat(sell.total).toFixed(8)
|
||||
else
|
||||
=parseFloat(parseFloat(sell.price).toFixed(8) * parseFloat(sell.quantity).toFixed(8)).toFixed(8)
|
||||
.row
|
||||
.col-md-12.marketSpacer
|
||||
.card.card-default
|
||||
.card-header
|
||||
h5.card-title #{settings.locale.mkt_trade_history}
|
||||
table.table.table-hover.history-table.table-bordered(cellspacing='0')
|
||||
thead
|
||||
tr
|
||||
th #{settings.locale.mkt_price} (#{marketdata.exchange})
|
||||
th #{settings.locale.mkt_amount} (#{marketdata.coin})
|
||||
th #{settings.locale.mkt_total} (#{marketdata.exchange})
|
||||
th.d-none.d-lg-table-cell #{settings.locale.mkt_time_stamp}
|
||||
tbody
|
||||
each order in marketdata.data.history
|
||||
if order.ordertype != null
|
||||
if order.ordertype.toUpperCase() == 'BUY'
|
||||
tr
|
||||
td.text-success.font-weight-bold
|
||||
=parseFloat(order.price).toFixed(8)
|
||||
td
|
||||
=parseFloat(order.quantity).toFixed(8)
|
||||
td
|
||||
if order.total != null
|
||||
=parseFloat(order.total).toFixed(8)
|
||||
else
|
||||
=parseFloat(parseFloat(order.price).toFixed(8) * parseFloat(order.quantity).toFixed(8)).toFixed(8)
|
||||
td.d-none.d-lg-table-cell
|
||||
=formatDate(new Date(order.timestamp))
|
||||
else
|
||||
tr
|
||||
td.text-danger.font-weight-bold
|
||||
=parseFloat(order.price).toFixed(8)
|
||||
td
|
||||
=parseFloat(order.quantity).toFixed(8)
|
||||
td
|
||||
if order.total != null
|
||||
=parseFloat(order.total).toFixed(8)
|
||||
else
|
||||
=parseFloat(parseFloat(order.price).toFixed(8) * parseFloat(order.quantity).toFixed(8)).toFixed(8)
|
||||
td.d-none.d-lg-table-cell
|
||||
=formatDate(new Date(order.timestamp))
|
||||
.footer-padding
|
||||
@@ -1,164 +0,0 @@
|
||||
extends menu
|
||||
|
||||
block market_view
|
||||
script.
|
||||
$(document).ready(function(){
|
||||
$('#summary-panel').hide();
|
||||
var ohlc = #{marketdata.data.chartdata};
|
||||
var plot2 = $.jqplot('chart',[ohlc],{
|
||||
seriesDefaults:{yaxis:'y2axis'},
|
||||
axes: {
|
||||
xaxis: {
|
||||
renderer:$.jqplot.DateAxisRenderer,
|
||||
tickOptions:{formatString:'%R'},
|
||||
tickInterval: "2 hours",
|
||||
|
||||
},
|
||||
y2axis: {
|
||||
tickOptions:{formatString:'%.8f'},
|
||||
}
|
||||
},
|
||||
// To make a candle stick chart, set the "candleStick" option to true.
|
||||
series: [
|
||||
{
|
||||
renderer:$.jqplot.OHLCRenderer,
|
||||
rendererOptions:{ candleStick:true }
|
||||
}
|
||||
],
|
||||
highlighter: {
|
||||
show: true,
|
||||
showMarker:false,
|
||||
tooltipAxes: 'xy',
|
||||
yvalues: 4,
|
||||
formatString:'<table class="jqplot-highlighter"> \
|
||||
<tr><td>time:</td><td>%s</td></tr> \
|
||||
<tr><td>open:</td><td>%s</td></tr> \
|
||||
<tr><td>hi:</td><td>%s</td></tr> \
|
||||
<tr><td>low:</td><td>%s</td></tr> \
|
||||
<tr><td>close:</td><td>%s</td></tr></table>'
|
||||
}
|
||||
});
|
||||
$(window).resize(function () {
|
||||
plot2.replot( { resetAxes: false } );
|
||||
});
|
||||
});
|
||||
.row
|
||||
.col-md-12
|
||||
#chart-panel.panel.panel-default
|
||||
.panel-heading
|
||||
strong #{settings.locale.altmarkets} - #{marketdata.coin}/#{marketdata.exchange} - #{settings.locale.mkt_hours}
|
||||
a(href='#')
|
||||
span.fa.fa-th-list.pull-right.view-summary.iquidus.market-toggle(data-toggle='tooltip', data-placement='bottom', title=settings.locale.mkt_view_chart)
|
||||
.panel-body
|
||||
div#chart(style="width:100%;height:300px;")
|
||||
#summary-panel.panel.panel-default
|
||||
.panel-heading
|
||||
h5 #{settings.locale.altmarkets} - #{marketdata.coin}/#{marketdata.exchange} - #{settings.locale.mkt_hours}
|
||||
a(href='#')
|
||||
span.fa.fa-line-chart.float-right.view-chart.iquidus.market-toggle(data-toggle='tooltip', data-placement='bottom', title=settings.locale.mkt_view_summary)
|
||||
table.table.table-bordered.summary-table
|
||||
thead
|
||||
tr
|
||||
th #{settings.locale.mkt_high}
|
||||
th #{settings.locale.mkt_low}
|
||||
th #{settings.locale.mkt_volume} (#{marketdata.coin})
|
||||
th #{settings.locale.mkt_volume} (#{marketdata.exchange})
|
||||
th.hidden-xs #{settings.locale.mkt_top_bid}
|
||||
th.hidden-xs #{settings.locale.mkt_top_ask}
|
||||
th.hidden-xs #{settings.locale.mkt_last}
|
||||
th #{settings.locale.mkt_change}
|
||||
tbody
|
||||
tr
|
||||
td #{marketdata.data.summary.high}
|
||||
td #{marketdata.data.summary.low}
|
||||
td #{marketdata.data.summary.volume}
|
||||
td #{marketdata.data.summary.volume_btc}
|
||||
td.hidden-xs #{marketdata.data.summary.bid}
|
||||
td.hidden-xs #{marketdata.data.summary.ask}
|
||||
td.hidden-xs #{marketdata.data.summary.last}
|
||||
- var altmarkets_change = (marketdata.data.summary.change);
|
||||
if altmarkets_change >= 0
|
||||
td.success +#{altmarkets_change} %
|
||||
else
|
||||
td.danger #{altmarkets_change} %
|
||||
.row
|
||||
.col-md-6.col-xs-12
|
||||
.panel.panel-default
|
||||
.panel-heading
|
||||
h5.panel-title #{settings.locale.mkt_buy_orders}
|
||||
table.table.table-striped.table-bordered.order-table
|
||||
thead
|
||||
tr
|
||||
th #{settings.locale.mkt_price} (#{marketdata.exchange})
|
||||
th #{settings.locale.mkt_amount} (#{marketdata.coin})
|
||||
th.hidden-xs #{settings.locale.mkt_total} (#{marketdata.exchange})
|
||||
tbody
|
||||
each buy in marketdata.data.buys
|
||||
tr
|
||||
td
|
||||
=buy.price
|
||||
td
|
||||
=buy.amount
|
||||
td.hidden-xs
|
||||
=buy.total
|
||||
|
||||
.col-md-6.col-xs-12
|
||||
.panel.panel-default
|
||||
.panel-heading
|
||||
h5.panel-title #{settings.locale.mkt_sell_orders}
|
||||
table.table.table-striped.table-bordered.order-table
|
||||
thead
|
||||
tr
|
||||
th #{settings.locale.mkt_price} (#{marketdata.exchange})
|
||||
th #{settings.locale.mkt_amount} (#{marketdata.coin})
|
||||
th.hidden-xs #{settings.locale.mkt_total} (#{marketdata.exchange})
|
||||
tbody
|
||||
each sell in marketdata.data.sells
|
||||
tr
|
||||
td
|
||||
=sell.price
|
||||
td
|
||||
=sell.amount
|
||||
td.hidden-xs
|
||||
=sell.total
|
||||
.row
|
||||
.col-md-12
|
||||
.panel.panel-default
|
||||
.panel-heading
|
||||
h5.panel-title #{settings.locale.mkt_trade_history}
|
||||
table.table.table-hover.history-table.table-bordered(cellspacing="0")
|
||||
thead
|
||||
tr
|
||||
th.hidden-xs #{settings.locale.mkt_type}
|
||||
th #{settings.locale.mkt_amount} (#{marketdata.coin})
|
||||
th #{settings.locale.mkt_price} (#{marketdata.exchange})
|
||||
th #{settings.locale.mkt_total} (#{marketdata.exchange})
|
||||
th.hidden-xs #{settings.locale.mkt_time_stamp}
|
||||
tbody
|
||||
each order in marketdata.data.history
|
||||
if order.side == 'up'
|
||||
tr.success
|
||||
td.hidden-xs
|
||||
=order.side
|
||||
td
|
||||
=parseFloat(order.volume).toFixed(8)
|
||||
td
|
||||
=parseFloat(order.price).toFixed(8)
|
||||
td
|
||||
=parseFloat(order.funds).toFixed(8)
|
||||
td.hidden-xs
|
||||
=(new Date(order.timestamp * 1000).toUTCString())
|
||||
else
|
||||
tr.danger
|
||||
td.hidden-xs
|
||||
=order.side
|
||||
td
|
||||
=parseFloat(order.volume).toFixed(8)
|
||||
td
|
||||
=parseFloat(order.price).toFixed(8)
|
||||
td
|
||||
=parseFloat(order.funds).toFixed(8)
|
||||
td.hidden-xs
|
||||
=(new Date(order.timestamp * 1000).toUTCString())
|
||||
|
||||
.footer-padding
|
||||
@@ -1,114 +0,0 @@
|
||||
extends menu
|
||||
|
||||
block market_view
|
||||
.row
|
||||
.col-md-12
|
||||
.card.card-default
|
||||
.card-header
|
||||
strong #{settings.locale.bittrex} - #{marketdata.coin}/#{marketdata.exchange} - #{settings.locale.mkt_hours}
|
||||
a(href='#')
|
||||
span.fa.fa-line-chart.float-right.view-chart-disabled.iquidus.market-toggle(data-toggle='tooltip', data-placement='bottom', title=settings.locale.mkt_no_chart)
|
||||
table.table.table-bordered.summary-table
|
||||
thead
|
||||
tr
|
||||
th #{settings.locale.mkt_high}
|
||||
th #{settings.locale.mkt_low}
|
||||
th #{settings.locale.mkt_volume}
|
||||
th.d-none.d-sm-block #{settings.locale.mkt_top_bid}
|
||||
th.d-none.d-sm-block #{settings.locale.mkt_top_ask}
|
||||
th.d-none.d-sm-block #{settings.locale.mkt_yesterday}
|
||||
th.d-none.d-sm-block #{settings.locale.mkt_last}
|
||||
th #{settings.locale.mkt_change}
|
||||
tbody
|
||||
tr
|
||||
td #{parseFloat(marketdata.data.summary.High).toFixed(8)}
|
||||
td #{parseFloat(marketdata.data.summary.Low).toFixed(8)}
|
||||
td #{parseFloat(marketdata.data.summary.Volume).toFixed(8)}
|
||||
td.d-none.d-sm-block #{parseFloat(marketdata.data.summary.Bid).toFixed(8)}
|
||||
td.d-none.d-sm-block #{parseFloat(marketdata.data.summary.Ask).toFixed(8)}
|
||||
td.d-none.d-sm-block #{parseFloat(marketdata.data.summary.PrevDay).toFixed(8)}
|
||||
td.d-none.d-sm-block #{parseFloat(marketdata.data.summary.Last).toFixed(8)}
|
||||
- var bittrex_change = (100 - ((parseFloat(marketdata.data.summary.PrevDay)/parseFloat(marketdata.data.summary.Last))*100)).toFixed(2);
|
||||
if bittrex_change >= 0
|
||||
td.success +#{bittrex_change} %
|
||||
else
|
||||
td.danger #{bittrex_change} %
|
||||
.row
|
||||
.col-md-6.col-xs-12
|
||||
.card.card-default
|
||||
.card-header
|
||||
h3.card-title #{settings.locale.mkt_buy_orders}
|
||||
table.table.table-striped.table-bordered.order-table
|
||||
thead
|
||||
tr
|
||||
th #{settings.locale.mkt_price} (#{marketdata.exchange})
|
||||
th #{settings.locale.mkt_amount} (#{marketdata.coin})
|
||||
th.d-none.d-sm-block #{settings.locale.mkt_total} (#{marketdata.exchange})
|
||||
tbody
|
||||
each buy in marketdata.data.buys
|
||||
tr
|
||||
td
|
||||
=buy.price
|
||||
td
|
||||
=buy.amount
|
||||
td.d-none.d-sm-block
|
||||
=buy.total
|
||||
.col-md-6.col-xs-12
|
||||
.card.card-default
|
||||
.card-header
|
||||
h3.card-title #{settings.locale.mkt_sell_orders}
|
||||
table.table.table-striped.table-bordered.order-table
|
||||
thead
|
||||
tr
|
||||
th #{settings.locale.mkt_price} (#{marketdata.exchange})
|
||||
th #{settings.locale.mkt_amount} (#{marketdata.coin})
|
||||
th.d-none.d-sm-block #{settings.locale.mkt_total} (#{marketdata.exchange})
|
||||
tbody
|
||||
each sell in marketdata.data.sells
|
||||
tr
|
||||
td
|
||||
=parseFloat(sell.price).toFixed(8)
|
||||
td
|
||||
=parseFloat(sell.amount).toFixed(8)
|
||||
td.d-none.d-sm-block
|
||||
=parseFloat(sell.total).toFixed(8)
|
||||
.row
|
||||
.col-md-12
|
||||
.card.card-default
|
||||
.card-header
|
||||
h3.card-title #{settings.locale.mkt_trade_history}
|
||||
table.table.table-hover.history-table.table-bordered(cellspacing="0")
|
||||
thead
|
||||
tr
|
||||
th.d-none.d-sm-block #{settings.locale.mkt_type}
|
||||
th #{settings.locale.mkt_amount} (#{marketdata.coin})
|
||||
th #{settings.locale.mkt_price} (#{marketdata.exchange})
|
||||
th #{settings.locale.mkt_total} (#{marketdata.exchange})
|
||||
th.d-none.d-sm-block #{settings.locale.mkt_time_stamp}
|
||||
tbody
|
||||
each order in marketdata.data.history
|
||||
if order.OrderType == 'BUY'
|
||||
tr.success
|
||||
td.d-none.d-sm-block
|
||||
=order.OrderType
|
||||
td
|
||||
=order.Quantity.toFixed(8)
|
||||
td
|
||||
=order.Price.toFixed(8)
|
||||
td
|
||||
=order.Total.toFixed(8)
|
||||
td.d-none.d-sm-block
|
||||
=order.TimeStamp
|
||||
else
|
||||
tr.danger
|
||||
td.d-none.d-sm-block
|
||||
=order.OrderType
|
||||
td
|
||||
=order.Quantity.toFixed(8)
|
||||
td
|
||||
=order.Price.toFixed(8)
|
||||
td
|
||||
=order.Total.toFixed(8)
|
||||
td.d-none.d-sm-block
|
||||
=order.TimeStamp
|
||||
.footer-padding
|
||||
@@ -1,114 +0,0 @@
|
||||
extends menu
|
||||
|
||||
block market_view
|
||||
.row
|
||||
.col-md-12
|
||||
.card.card-default
|
||||
.card-header
|
||||
strong #{settings.locale.bleutrade} - #{marketdata.coin}/#{marketdata.exchange} - #{settings.locale.mkt_hours}
|
||||
a(href='#')
|
||||
span.fa.fa-line-chart.float-right.view-chart-disabled.iquidus.market-toggle(data-toggle='tooltip', data-placement='bottom', title=settings.locale.mkt_no_chart)
|
||||
table.table.table-bordered.summary-table
|
||||
thead
|
||||
tr
|
||||
th #{settings.locale.mkt_high}
|
||||
th #{settings.locale.mkt_low}
|
||||
th #{settings.locale.mkt_volume}
|
||||
th.d-none.d-sm-block #{settings.locale.mkt_top_bid}
|
||||
th.d-none.d-sm-block #{settings.locale.mkt_top_ask}
|
||||
th.d-none.d-sm-block #{settings.locale.mkt_yesterday}
|
||||
th.d-none.d-sm-block #{settings.locale.mkt_last}
|
||||
th #{settings.locale.mkt_change}
|
||||
tbody
|
||||
tr
|
||||
td #{parseFloat(marketdata.data.summary.High).toFixed(8)}
|
||||
td #{parseFloat(marketdata.data.summary.Low).toFixed(8)}
|
||||
td #{parseFloat(marketdata.data.summary.Volume).toFixed(8)}
|
||||
td.d-none.d-sm-block #{parseFloat(marketdata.data.summary.Bid).toFixed(8)}
|
||||
td.d-none.d-sm-block #{parseFloat(marketdata.data.summary.Ask).toFixed(8)}
|
||||
td.d-none.d-sm-block #{parseFloat(marketdata.data.summary.PrevDay).toFixed(8)}
|
||||
td.d-none.d-sm-block #{parseFloat(marketdata.data.summary.Last).toFixed(8)}
|
||||
- var bleutrade_change = (100 - ((parseFloat(marketdata.data.summary.PrevDay)/parseFloat(marketdata.data.summary.Last))*100)).toFixed(2);
|
||||
if bleutrade_change >= 0
|
||||
td.success +#{bleutrade_change} %
|
||||
else
|
||||
td.danger #{bleutrade_change} %
|
||||
.row
|
||||
.col-md-6.col-xs-12
|
||||
.card.card-default
|
||||
.card-header
|
||||
h3.card-title #{settings.locale.mkt_buy_orders}
|
||||
table.table.table-striped.table-bordered.order-table
|
||||
thead
|
||||
tr
|
||||
th #{settings.locale.mkt_price} (#{marketdata.exchange})
|
||||
th #{settings.locale.mkt_amount} (#{marketdata.coin})
|
||||
th.d-none.d-sm-block #{settings.locale.mkt_total} (#{marketdata.exchange})
|
||||
tbody
|
||||
each buy in marketdata.data.buys
|
||||
tr
|
||||
td
|
||||
=parseFloat(buy.price).toFixed(8)
|
||||
td
|
||||
=parseFloat(buy.amount).toFixed(8)
|
||||
td.d-none.d-sm-block
|
||||
=parseFloat(buy.total).toFixed(8)
|
||||
.col-md-6.col-xs-12
|
||||
.card.card-default
|
||||
.card-header
|
||||
h3.card-title #{settings.locale.mkt_sell_orders}
|
||||
table.table.table-striped.table-bordered.order-table
|
||||
thead
|
||||
tr
|
||||
th #{settings.locale.mkt_price} (#{marketdata.exchange})
|
||||
th #{settings.locale.mkt_amount} (#{marketdata.coin})
|
||||
th.d-none.d-sm-block #{settings.locale.mkt_total} (#{marketdata.exchange})
|
||||
tbody
|
||||
each sell in marketdata.data.sells
|
||||
tr
|
||||
td
|
||||
=parseFloat(sell.price).toFixed(8)
|
||||
td
|
||||
=parseFloat(sell.amount).toFixed(8)
|
||||
td.d-none.d-sm-block
|
||||
=parseFloat(sell.total).toFixed(8)
|
||||
.row
|
||||
.col-md-12
|
||||
.card.card-default
|
||||
.card-header
|
||||
h3.card-title #{settings.locale.mkt_trade_history}
|
||||
table.table.table-hover.history-table.table-bordered(cellspacing="0")
|
||||
thead
|
||||
tr
|
||||
th.d-none.d-sm-block #{settings.locale.mkt_type}
|
||||
th #{settings.locale.mkt_amount} (#{marketdata.coin})
|
||||
th #{settings.locale.mkt_price} (#{marketdata.exchange})
|
||||
th #{settings.locale.mkt_total} (#{marketdata.exchange})
|
||||
th #{settings.locale.mkt_time_stamp}
|
||||
tbody
|
||||
each order in marketdata.data.history
|
||||
if order.OrderType == "BUY"
|
||||
tr.success
|
||||
td.d-none.d-sm-block
|
||||
=order.OrderType
|
||||
td
|
||||
=order.Quantity.toFixed(8)
|
||||
td
|
||||
=order.Price.toFixed(8)
|
||||
td
|
||||
=order.Total.toFixed(8)
|
||||
td.d-none.d-sm-block
|
||||
=order.TimeStamp
|
||||
else
|
||||
tr.danger
|
||||
td.d-none.d-sm-block
|
||||
=order.OrderType
|
||||
td
|
||||
=order.Quantity.toFixed(8)
|
||||
td
|
||||
=order.Price.toFixed(8)
|
||||
td
|
||||
=order.Total.toFixed(8)
|
||||
td.d-none.d-sm-block
|
||||
=order.TimeStamp
|
||||
.footer-padding
|
||||
@@ -1,106 +0,0 @@
|
||||
extends menu
|
||||
|
||||
block market_view
|
||||
.row
|
||||
.col-md-12
|
||||
.card.card-default
|
||||
.card-header
|
||||
strong #{settings.locale.crex} - #{marketdata.coin}/#{marketdata.exchange} - #{settings.locale.mkt_hours}
|
||||
a(href='#')
|
||||
span.fas.fa-chart-line.float-right.view-chart-disabled.iquidus.market-toggle(data-toggle='tooltip', data-placement='bottom', title=settings.locale.mkt_no_chart)
|
||||
table.table.table-bordered.summary-table
|
||||
thead
|
||||
tr
|
||||
th #{settings.locale.mkt_high}
|
||||
th #{settings.locale.mkt_low}
|
||||
th #{settings.locale.mkt_volume}
|
||||
th.d-none.d-sm-block #{settings.locale.mkt_top_bid}
|
||||
th.d-none.d-sm-block #{settings.locale.mkt_top_ask}
|
||||
th.d-none.d-sm-block #{settings.locale.mkt_last}
|
||||
tbody
|
||||
tr
|
||||
td #{marketdata.data.summary.high}
|
||||
td #{marketdata.data.summary.low}
|
||||
td #{marketdata.data.summary.volume}
|
||||
td.d-none.d-sm-block #{marketdata.data.summary.bid}
|
||||
td.d-none.d-sm-block #{marketdata.data.summary.ask}
|
||||
td.d-none.d-sm-block #{marketdata.data.summary.last}
|
||||
.row
|
||||
.col-md-6.col-xs-12
|
||||
.card.card-default
|
||||
.card-header
|
||||
h3.card-title #{settings.locale.mkt_buy_orders}
|
||||
table.table.table-striped.table-bordered.order-table
|
||||
thead
|
||||
tr
|
||||
th #{settings.locale.mkt_price} (#{marketdata.exchange})
|
||||
th #{settings.locale.mkt_amount} (#{marketdata.coin})
|
||||
th.d-none.d-sm-block #{settings.locale.mkt_total} (#{marketdata.exchange})
|
||||
tbody
|
||||
each buy in marketdata.data.buys
|
||||
tr
|
||||
td
|
||||
=parseFloat(buy.price).toFixed(8)
|
||||
td
|
||||
=parseFloat(buy.amount).toFixed(8)
|
||||
td.d-none.d-sm-block
|
||||
=parseFloat(buy.total).toFixed(8)
|
||||
.col-md-6.col-xs-12
|
||||
.card.card-default
|
||||
.card-header
|
||||
h3.card-title #{settings.locale.mkt_sell_orders}
|
||||
table.table.table-striped.table-bordered.order-table
|
||||
thead
|
||||
tr
|
||||
th #{settings.locale.mkt_price} (#{marketdata.exchange})
|
||||
th #{settings.locale.mkt_amount} (#{marketdata.coin})
|
||||
th.d-none.d-sm-block #{settings.locale.mkt_total} (#{marketdata.exchange})
|
||||
tbody
|
||||
each sell in marketdata.data.sells
|
||||
tr
|
||||
td
|
||||
=parseFloat(sell.price).toFixed(8)
|
||||
td
|
||||
=parseFloat(sell.amount).toFixed(8)
|
||||
td.d-none.d-sm-block
|
||||
=parseFloat(sell.total).toFixed(8)
|
||||
.row
|
||||
.col-md-12
|
||||
.card.card-default
|
||||
.card-header
|
||||
h3.card-title #{settings.locale.mkt_trade_history}
|
||||
table.table.table-hover.history-table.table-bordered(cellspacing="0")
|
||||
thead
|
||||
tr
|
||||
th.d-none.d-sm-block #{settings.locale.mkt_type}
|
||||
th #{settings.locale.mkt_amount} (#{marketdata.coin})
|
||||
th #{settings.locale.mkt_price} (#{marketdata.exchange})
|
||||
th #{settings.locale.mkt_total} (#{marketdata.exchange})
|
||||
th #{settings.locale.mkt_time_stamp}
|
||||
tbody
|
||||
each order in marketdata.data.history
|
||||
if order.ordertype.toUpperCase() == 'BUY'
|
||||
tr.success
|
||||
td.d-none.d-sm-block
|
||||
=order.ordertype
|
||||
td
|
||||
=order.amount
|
||||
td
|
||||
=order.price
|
||||
td
|
||||
=order.total
|
||||
td.d-none.d-sm-block
|
||||
=(new Date(order.timestamp * 1000).toUTCString())
|
||||
else
|
||||
tr.danger
|
||||
td.d-none.d-sm-block
|
||||
=order.ordertype
|
||||
td
|
||||
=order.amount
|
||||
td
|
||||
=order.price
|
||||
td
|
||||
=order.total
|
||||
td.d-none.d-sm-block
|
||||
=(new Date(order.timestamp * 1000).toUTCString())
|
||||
.footer-padding
|
||||
@@ -1,113 +0,0 @@
|
||||
extends menu
|
||||
|
||||
block market_view
|
||||
.row
|
||||
.col-md-12
|
||||
.panel.panel-default
|
||||
.panel-heading
|
||||
strong #{settings.locale.fides} - #{marketdata.coin}/#{marketdata.exchange} - #{settings.locale.mkt_hours}
|
||||
a(href='#')
|
||||
span.fa.fa-line-chart.float-right.view-chart-disabled.iquidus.market-toggle(data-toggle='tooltip', data-placement='bottom', title=settings.locale.mkt_no_chart)
|
||||
table.table.table-bordered.summary-table
|
||||
thead
|
||||
tr
|
||||
th #{settings.locale.mkt_high}
|
||||
th #{settings.locale.mkt_low}
|
||||
th #{settings.locale.mkt_volume}
|
||||
th.hidden-xs #{settings.locale.mkt_top_bid}
|
||||
th.hidden-xs #{settings.locale.mkt_top_ask}
|
||||
th.hidden-xs #{settings.locale.mkt_last}
|
||||
th #{settings.locale.mkt_change}
|
||||
tbody
|
||||
tr
|
||||
td #{marketdata.data.summary.high}
|
||||
td #{marketdata.data.summary.low}
|
||||
td #{marketdata.data.summary.volume}
|
||||
td.hidden-xs #{marketdata.data.summary.bid}
|
||||
td.hidden-xs #{marketdata.data.summary.ask}
|
||||
td.hidden-xs #{marketdata.data.summary.last}
|
||||
- var fides_change = parseFloat(marketdata.data.summary.change).toFixed(4).replace(/(?:\.0+|(\.\d+?)0+)$/, "$1");
|
||||
if fides_change >= 0
|
||||
td.success +#{fides_change} %
|
||||
else
|
||||
td.danger #{fides_change} %
|
||||
.row
|
||||
.col-md-6.col-xs-12
|
||||
.panel.panel-default
|
||||
.panel-heading
|
||||
h3.panel-title #{settings.locale.mkt_buy_orders}
|
||||
table.table.table-hover.history-table.table-bordered(cellspacing="0")
|
||||
thead
|
||||
tr
|
||||
th #{settings.locale.mkt_price} (#{marketdata.exchange})
|
||||
th.hidden-xs #{settings.locale.mkt_total} (#{marketdata.coin})
|
||||
th #{settings.locale.mkt_amount} (#{marketdata.exchange})
|
||||
tbody
|
||||
each buy in marketdata.data.buys
|
||||
tr
|
||||
td
|
||||
=parseFloat(buy.Rate).toFixed(8)
|
||||
td
|
||||
=parseFloat(buy.Volume).toFixed(8)
|
||||
td.hidden-xs
|
||||
=parseFloat(buy.Total).toFixed(8)
|
||||
|
||||
.col-md-6.col-xs-12
|
||||
.panel.panel-default
|
||||
.panel-heading
|
||||
h3.panel-title #{settings.locale.mkt_sell_orders}
|
||||
table.table.table-hover.history-table.table-bordered(cellspacing="0")
|
||||
thead
|
||||
tr
|
||||
th #{settings.locale.mkt_price} (#{marketdata.exchange })
|
||||
th.hidden-xs #{settings.locale.mkt_total} (#{marketdata.coin })
|
||||
th #{settings.locale.mkt_amount} (#{marketdata.exchange})
|
||||
tbody
|
||||
each sell in marketdata.data.sells
|
||||
tr
|
||||
td
|
||||
=parseFloat(sell.Rate).toFixed(8)
|
||||
td
|
||||
=parseFloat(sell.Volume).toFixed(8)
|
||||
td.hidden-xs
|
||||
=parseFloat(sell.Total).toFixed(8)
|
||||
.row
|
||||
.col-md-12
|
||||
.panel.panel-default
|
||||
.panel-heading
|
||||
h3.panel-title #{settings.locale.mkt_trade_history}
|
||||
table.table.table-hover.history-table.table-bordered(cellspacing="0")
|
||||
thead
|
||||
tr
|
||||
th.hidden-xs #{settings.locale.mkt_type}
|
||||
th #{settings.locale.mkt_amount} (#{marketdata.coin})
|
||||
th #{settings.locale.mkt_price} (#{marketdata.exchange})
|
||||
th #{settings.locale.mkt_total} (#{marketdata.exchange})
|
||||
th.hidden-xs #{settings.locale.mkt_time_stamp}
|
||||
tbody
|
||||
each result in marketdata.data.history
|
||||
if result.Type == 'SELL'
|
||||
tr.danger
|
||||
td.hidden-xs
|
||||
=result.Type
|
||||
td
|
||||
=result.Volume.toFixed(8)
|
||||
td
|
||||
=result.Rate.toFixed(8)
|
||||
td
|
||||
=result.Total.toFixed(8)
|
||||
td.hidden-xs
|
||||
=result.Date
|
||||
else
|
||||
tr.success
|
||||
td.hidden-xs
|
||||
=result.Type
|
||||
td
|
||||
=result.Volume.toFixed(8)
|
||||
td
|
||||
=result.Rate.toFixed(8)
|
||||
td
|
||||
=result.Total.toFixed(8)
|
||||
td.hidden-xs
|
||||
=result.Date
|
||||
.footer-padding
|
||||
@@ -1,40 +0,0 @@
|
||||
extends ../layout
|
||||
|
||||
block content
|
||||
script.
|
||||
$(document).ready(function(){
|
||||
$('.order-table').dataTable( {
|
||||
info: false,
|
||||
paging: false,
|
||||
searching: false,
|
||||
ordering: false,
|
||||
scrollY: '250px',
|
||||
autowidth: true,
|
||||
responsive: true
|
||||
});
|
||||
$('.market-toggle').tooltip({
|
||||
animation: true,
|
||||
delay: { hide: 500 },
|
||||
});
|
||||
$('.view-summary').on('click', function(){
|
||||
$('#chart-panel').hide();
|
||||
$('#summary-panel').show();
|
||||
});
|
||||
$('.view-chart').on('click', function(){
|
||||
$('#summary-panel').hide();
|
||||
$('#chart-panel').show();
|
||||
});
|
||||
});
|
||||
.col-xs-12.col-md-12
|
||||
.d-none.nav.navbar.navbar-default(role='navigation' id='market_menu')
|
||||
.container-fluid
|
||||
.collapse.navbar-collapse(id='navbar-collapse')
|
||||
ul.nav.navbar-nav
|
||||
each mkt in settings.markets.enabled
|
||||
if market == mkt
|
||||
li.active
|
||||
a.navbar-link.loading(href='/markets/' + mkt) #{settings.locale[mkt]}
|
||||
else
|
||||
li
|
||||
a.navbar-link.loading(href='/markets/' + mkt) #{settings.locale[mkt]}
|
||||
block market_view
|
||||
@@ -1,180 +0,0 @@
|
||||
extends menu
|
||||
|
||||
block market_view
|
||||
script.
|
||||
$(document).ready(function(){
|
||||
$('#summary-card').hide();
|
||||
var ohlc = !{marketdata.data.chartdata}
|
||||
var plot2 = $.jqplot('chart',[ohlc],{
|
||||
seriesDefaults:{yaxis:'y2axis'},
|
||||
axes: {
|
||||
xaxis: {
|
||||
renderer:$.jqplot.DateAxisRenderer,
|
||||
tickOptions:{formatString:'%R'},
|
||||
tickInterval: "2 hours",
|
||||
|
||||
},
|
||||
y2axis: {
|
||||
tickOptions:{formatString:'%.8f'},
|
||||
}
|
||||
},
|
||||
// To make a candle stick chart, set the "candleStick" option to true.
|
||||
series: [
|
||||
{
|
||||
renderer:$.jqplot.OHLCRenderer,
|
||||
rendererOptions:{ candleStick:true }
|
||||
}
|
||||
],
|
||||
highlighter: {
|
||||
show: true,
|
||||
showMarker:false,
|
||||
tooltipAxes: 'xy',
|
||||
yvalues: 4,
|
||||
formatString:'<table class="jqplot-highlighter"> \
|
||||
<tr><td>time:</td><td>%s</td></tr> \
|
||||
<tr><td>open:</td><td>%s</td></tr> \
|
||||
<tr><td>hi:</td><td>%s</td></tr> \
|
||||
<tr><td>low:</td><td>%s</td></tr> \
|
||||
<tr><td>close:</td><td>%s</td></tr></table>'
|
||||
}
|
||||
});
|
||||
$(window).resize(function () {
|
||||
plot2.replot( { resetAxes: false } );
|
||||
});
|
||||
});
|
||||
.row
|
||||
.d-none.col-md-12
|
||||
#chart-card.card.card-default
|
||||
.card-header
|
||||
strong #{settings.locale.poloniex} - #{marketdata.coin}/#{marketdata.exchange} - #{settings.locale.mkt_hours}
|
||||
a(href='#')
|
||||
span.fa.fa-th-list.float-right.view-summary.iquidus.market-toggle(data-toggle='tooltip', data-placement='bottom', title=settings.locale.mkt_view_summary)
|
||||
.card-body
|
||||
div#chart(style="width:100%;height:300px;")
|
||||
#summary-card.card.card-default
|
||||
.card-header
|
||||
strong #{settings.locale.poloniex} - #{marketdata.coin}/#{marketdata.exchange} - #{settings.locale.mkt_hours}
|
||||
a(href='#')
|
||||
span.fas.fa-chart-line.float-right.view-chart.iquidus.market-toggle(data-toggle='tooltip', data-placement='bottom', title=settings.locale.mkt_view_chart)
|
||||
table.table.table-bordered.summary-table
|
||||
thead
|
||||
tr
|
||||
th #{settings.locale.mkt_high}
|
||||
th #{settings.locale.mkt_low}
|
||||
th #{settings.locale.mkt_volume}
|
||||
th.d-none.d-sm-block #{settings.locale.mkt_top_bid}
|
||||
th.d-none.d-sm-block #{settings.locale.mkt_top_ask}
|
||||
th.d-none.d-sm-block #{settings.locale.mkt_yesterday}
|
||||
th.d-none.d-sm-block #{settings.locale.mkt_last}
|
||||
th #{settings.locale.mkt_change}
|
||||
tbody
|
||||
tr
|
||||
td #{marketdata.data.summary['high24hr']}
|
||||
td #{marketdata.data.summary['low24hr']}
|
||||
td #{marketdata.data.summary['baseVolume']}
|
||||
td.d-none.d-sm-block #{marketdata.data.summary.highestBid}
|
||||
td.d-none.d-sm-block #{marketdata.data.summary.lowestAsk}
|
||||
td.d-none.d-sm-block #{marketdata.data.summary.last}
|
||||
if marketdata.data.summary.percentChange.substring(0, 1) == '-'
|
||||
td.danger #{marketdata.data.summary.percentChange} %
|
||||
else
|
||||
td.success #{marketdata.data.summary.percentChange} %
|
||||
.d-md-none.d-lg-none.col-xs-12
|
||||
.card.card-default
|
||||
.card-header
|
||||
strong Poloniex - #{marketdata.coin}/#{marketdata.exchange} - #{settings.locale.mkt_hours}
|
||||
a(href='#')
|
||||
span.fa.fa-line-chart.float-right.view-chart-disabled.iquidus.market-toggle(data-toggle='tooltip', data-placement='bottom', title=settings.locale.mkt_no_chart)
|
||||
table.table.table-bordered.summary-table
|
||||
thead
|
||||
tr
|
||||
th #{settings.locale.mkt_high}
|
||||
th #{settings.locale.mkt_low}
|
||||
th #{settings.locale.mkt_volume}
|
||||
th #{settings.locale.mkt_change}
|
||||
tbody
|
||||
tr
|
||||
td #{marketdata.data.summary['high24hr']}
|
||||
td #{marketdata.data.summary['low24hr']}
|
||||
td #{marketdata.data.summary['baseVolume']}
|
||||
if marketdata.data.summary.percentChange.substring(0, 1) == '-'
|
||||
td.danger #{marketdata.data.summary.percentChange} %
|
||||
else
|
||||
td.success #{marketdata.data.summary.percentChange} %
|
||||
.row
|
||||
.col-md-6.col-xs-12
|
||||
.card.card-default
|
||||
.card-header
|
||||
h3.card-title #{settings.locale.mkt_buy_orders}
|
||||
table.table.table-striped.table-bordered.order-table
|
||||
thead
|
||||
tr
|
||||
th #{settings.locale.mkt_price} (#{marketdata.exchange})
|
||||
th #{settings.locale.mkt_amount} (#{marketdata.coin})
|
||||
th.d-none.d-sm-block #{settings.locale.mkt_total} (#{marketdata.exchange})
|
||||
tbody
|
||||
each buy in marketdata.data.buys
|
||||
tr
|
||||
td
|
||||
=parseFloat(buy.price).toFixed(8)
|
||||
td
|
||||
=parseFloat(buy.amount).toFixed(8)
|
||||
td.d-none.d-sm-block
|
||||
=parseFloat(buy.total).toFixed(8)
|
||||
.col-md-6.col-xs-12
|
||||
.card.card-default
|
||||
.card-header
|
||||
h3.card-title #{settings.locale.mkt_sell_orders}
|
||||
table.table.table-striped.table-bordered.order-table
|
||||
thead
|
||||
tr
|
||||
th #{settings.locale.mkt_price} (#{marketdata.exchange})
|
||||
th #{settings.locale.mkt_amount} (#{marketdata.coin})
|
||||
th.d-none.d-sm-block #{settings.locale.mkt_total} (#{marketdata.exchange})
|
||||
tbody
|
||||
each sell in marketdata.data.sells
|
||||
tr
|
||||
td
|
||||
=parseFloat(sell.price).toFixed(8)
|
||||
td
|
||||
=parseFloat(sell.amount).toFixed(8)
|
||||
td.d-none.d-sm-block
|
||||
=parseFloat(sell.total).toFixed(8)
|
||||
.row
|
||||
.col-md-12
|
||||
.card.card-default
|
||||
.card-header
|
||||
h3.card-title #{settings.locale.mkt_trade_history}
|
||||
table.table.table-hover.history-table.table-bordered(cellspacing="0")
|
||||
thead
|
||||
tr
|
||||
th.d-none.d-sm-block #{settings.locale.mkt_type}
|
||||
th #{settings.locale.mkt_amount} (#{marketdata.coin})
|
||||
th #{settings.locale.mkt_price} (#{marketdata.exchange})
|
||||
th #{settings.locale.mkt_total} (#{marketdata.exchange})
|
||||
th #{settings.locale.mkt_time_stamp}
|
||||
tbody
|
||||
each trade in marketdata.data.history
|
||||
if trade.type == 'buy'
|
||||
tr.success
|
||||
td.d-none.d-sm-blockBUY
|
||||
td
|
||||
=trade.amount
|
||||
td
|
||||
=trade.rate
|
||||
td.d-none.d-sm-block
|
||||
=trade.total
|
||||
td.d-none.d-sm-block
|
||||
=trade.date
|
||||
else
|
||||
tr.danger
|
||||
td.d-none.d-sm-blockSELL
|
||||
td
|
||||
=trade.amount
|
||||
td
|
||||
=trade.rate
|
||||
td.d-none.d-sm-block
|
||||
=trade.total
|
||||
td.d-none.d-sm-block
|
||||
=trade.date
|
||||
.footer-padding
|
||||
@@ -1,106 +0,0 @@
|
||||
extends menu
|
||||
|
||||
block market_view
|
||||
.row
|
||||
.col-md-12
|
||||
.card.card-default
|
||||
.card-header
|
||||
strong #{settings.locale.stex} - #{marketdata.coin}/#{marketdata.exchange} - #{settings.locale.mkt_hours}
|
||||
a(href='#')
|
||||
span.fas.fa-chart-line.float-right.view-chart-disabled.iquidus.market-toggle(data-toggle='tooltip', data-placement='bottom', title=settings.locale.mkt_no_chart)
|
||||
table.table.table-bordered.summary-table
|
||||
thead
|
||||
tr
|
||||
th #{settings.locale.mkt_high}
|
||||
th #{settings.locale.mkt_low}
|
||||
th #{settings.locale.mkt_volume}
|
||||
th.d-none.d-sm-block #{settings.locale.mkt_top_bid}
|
||||
th.d-none.d-sm-block #{settings.locale.mkt_top_ask}
|
||||
th.d-none.d-sm-block #{settings.locale.mkt_last}
|
||||
tbody
|
||||
tr
|
||||
td #{marketdata.data.summary.high}
|
||||
td #{marketdata.data.summary.low}
|
||||
td #{marketdata.data.summary.volume}
|
||||
td.d-none.d-sm-block #{marketdata.data.summary.bid}
|
||||
td.d-none.d-sm-block #{marketdata.data.summary.ask}
|
||||
td.d-none.d-sm-block #{marketdata.data.summary.last}
|
||||
.row
|
||||
.col-md-6.col-xs-12
|
||||
.card.card-default
|
||||
.card-header
|
||||
h3.card-title #{settings.locale.mkt_buy_orders}
|
||||
table.table.table-striped.table-bordered.order-table
|
||||
thead
|
||||
tr
|
||||
th #{settings.locale.mkt_price} (#{marketdata.exchange})
|
||||
th #{settings.locale.mkt_amount} (#{marketdata.coin})
|
||||
th.d-none.d-sm-block #{settings.locale.mkt_total} (#{marketdata.exchange})
|
||||
tbody
|
||||
each buy in marketdata.data.buys
|
||||
tr
|
||||
td
|
||||
=parseFloat(buy.price).toFixed(8)
|
||||
td
|
||||
=parseFloat(buy.amount).toFixed(8)
|
||||
td.d-none.d-sm-block
|
||||
=parseFloat(buy.total).toFixed(8)
|
||||
.col-md-6.col-xs-12
|
||||
.card.card-default
|
||||
.card-header
|
||||
h3.card-title #{settings.locale.mkt_sell_orders}
|
||||
table.table.table-striped.table-bordered.order-table
|
||||
thead
|
||||
tr
|
||||
th #{settings.locale.mkt_price} (#{marketdata.exchange})
|
||||
th #{settings.locale.mkt_amount} (#{marketdata.coin})
|
||||
th.d-none.d-sm-block #{settings.locale.mkt_total} (#{marketdata.exchange})
|
||||
tbody
|
||||
each sell in marketdata.data.sells
|
||||
tr
|
||||
td
|
||||
=parseFloat(sell.price).toFixed(8)
|
||||
td
|
||||
=parseFloat(sell.amount).toFixed(8)
|
||||
td.d-none.d-sm-block
|
||||
=parseFloat(sell.total).toFixed(8)
|
||||
.row
|
||||
.col-md-12
|
||||
.card.card-default
|
||||
.card-header
|
||||
h3.card-title #{settings.locale.mkt_trade_history}
|
||||
table.table.table-hover.history-table.table-bordered(cellspacing="0")
|
||||
thead
|
||||
tr
|
||||
th.d-none.d-sm-block #{settings.locale.mkt_type}
|
||||
th #{settings.locale.mkt_amount} (#{marketdata.coin})
|
||||
th #{settings.locale.mkt_price} (#{marketdata.exchange})
|
||||
th #{settings.locale.mkt_total} (#{marketdata.exchange})
|
||||
th #{settings.locale.mkt_time_stamp}
|
||||
tbody
|
||||
each order in marketdata.data.history
|
||||
if order.ordertype.toUpperCase() == 'BUY'
|
||||
tr.success
|
||||
td.d-none.d-sm-block
|
||||
=order.ordertype
|
||||
td
|
||||
=order.amount
|
||||
td
|
||||
=order.price
|
||||
td
|
||||
=order.total
|
||||
td.d-none.d-sm-block
|
||||
=(new Date(order.timestamp * 1000).toUTCString())
|
||||
else
|
||||
tr.danger
|
||||
td.d-none.d-sm-block
|
||||
=order.ordertype
|
||||
td
|
||||
=order.amount
|
||||
td
|
||||
=order.price
|
||||
td
|
||||
=order.total
|
||||
td.d-none.d-sm-block
|
||||
=(new Date(order.timestamp * 1000).toUTCString())
|
||||
.footer-padding
|
||||
@@ -1,106 +0,0 @@
|
||||
extends menu
|
||||
|
||||
block market_view
|
||||
.row
|
||||
.col-md-12
|
||||
.card.card-default
|
||||
.card-header
|
||||
strong #{settings.locale.yobit} - #{marketdata.coin}/#{marketdata.exchange} - #{settings.locale.mkt_hours}
|
||||
a(href='#')
|
||||
span.fas.fa-chart-line.float-right.view-chart-disabled.iquidus.market-toggle(data-toggle='tooltip', data-placement='bottom', title=settings.locale.mkt_no_chart)
|
||||
table.table.table-bordered.summary-table
|
||||
thead
|
||||
tr
|
||||
th #{settings.locale.mkt_high}
|
||||
th #{settings.locale.mkt_low}
|
||||
th.d-none.d-sm-block #{settings.locale.mkt_top_bid}
|
||||
th.d-none.d-sm-block #{settings.locale.mkt_top_ask}
|
||||
th.d-none.d-sm-block #{settings.locale.mkt_last}
|
||||
tbody
|
||||
tr
|
||||
td #{marketdata.data.summary.high}
|
||||
td #{marketdata.data.summary.low}
|
||||
td.d-none.d-sm-block #{marketdata.data.summary.buy}
|
||||
td.d-none.d-sm-block #{marketdata.data.summary.sell}
|
||||
td.d-none.d-sm-block #{marketdata.data.summary.last}
|
||||
.row
|
||||
.col-md-6.col-xs-12
|
||||
.card.card-default
|
||||
.card-header
|
||||
h3.card-title #{settings.locale.mkt_buy_orders}
|
||||
table.table.table-striped.table-bordered.order-table
|
||||
thead
|
||||
tr
|
||||
th #{settings.locale.mkt_price} (#{marketdata.exchange})
|
||||
th #{settings.locale.mkt_amount} (#{marketdata.coin})
|
||||
th.d-none.d-sm-block #{settings.locale.mkt_total} (#{marketdata.exchange})
|
||||
tbody
|
||||
each buy in marketdata.data.buys
|
||||
tr
|
||||
td
|
||||
=parseFloat(buy.price).toFixed(8)
|
||||
td
|
||||
=parseFloat(buy.amount).toFixed(8)
|
||||
td.d-none.d-sm-block
|
||||
=parseFloat(buy.total).toFixed(8)
|
||||
.col-md-6.col-xs-12
|
||||
.card.card-default
|
||||
.card-header
|
||||
h3.card-title #{settings.locale.mkt_sell_orders}
|
||||
table.table.table-striped.table-bordered.order-table
|
||||
thead
|
||||
tr
|
||||
th #{settings.locale.mkt_price} (#{marketdata.exchange})
|
||||
th #{settings.locale.mkt_amount} (#{marketdata.coin})
|
||||
th.d-none.d-sm-block #{settings.locale.mkt_total} (#{marketdata.exchange})
|
||||
tbody
|
||||
each sell in marketdata.data.sells
|
||||
tr
|
||||
td
|
||||
=parseFloat(sell.price).toFixed(8)
|
||||
td
|
||||
=parseFloat(sell.amount).toFixed(8)
|
||||
td.d-none.d-sm-block
|
||||
=parseFloat(sell.total).toFixed(8)
|
||||
.row
|
||||
.col-md-12
|
||||
.card.card-default
|
||||
.card-header
|
||||
h3.card-title #{settings.locale.mkt_trade_history}
|
||||
table.table.table-hover.history-table.table-bordered(cellspacing="0")
|
||||
thead
|
||||
tr
|
||||
th.d-none.d-sm-block #{settings.locale.mkt_type}
|
||||
th #{settings.locale.mkt_amount} (#{marketdata.coin})
|
||||
th #{settings.locale.mkt_price} (#{marketdata.exchange})
|
||||
th #{settings.locale.mkt_total} (#{marketdata.exchange})
|
||||
th #{settings.locale.mkt_time_stamp}
|
||||
tbody
|
||||
each order in marketdata.data.history
|
||||
if order.type == 'bid'
|
||||
tr.success
|
||||
td.d-none.d-sm-block
|
||||
=order.type
|
||||
td
|
||||
=order.amount.toFixed(8)
|
||||
td
|
||||
=order.price.toFixed(8)
|
||||
td
|
||||
- var total = order.amount * order.price;
|
||||
=total.toFixed(8)
|
||||
td.d-none.d-sm-block
|
||||
=format_unixtime(order.timestamp)
|
||||
else
|
||||
tr.danger
|
||||
td.d-none.d-sm-block
|
||||
=order.type
|
||||
td
|
||||
=order.amount.toFixed(8)
|
||||
td
|
||||
=order.price.toFixed(8)
|
||||
td
|
||||
- var total = order.amount * order.price;
|
||||
=total.toFixed(8)
|
||||
td.d-none.d-sm-block
|
||||
=format_unixtime(order.timestamp)
|
||||
.footer-padding
|
||||
Reference in New Issue
Block a user