From 85fef18cdbe7ecd7e1e67fc060c19852844170fc Mon Sep 17 00:00:00 2001
From: joeuhren <46763106+joeuhren@users.noreply.github.com>
Date: Fri, 27 Nov 2020 20:34:15 -0700
Subject: [PATCH] Complete overhaul of all markets
---
lib/database.js | 8 +-
lib/locale.js | 9 --
lib/markets/altmarkets.js | 112 +++++++++-------
lib/markets/bittrex.js | 134 ++++++++++++++-----
lib/markets/bleutrade.js | 144 ++++++++++++++------
lib/markets/crex.js | 168 +++++++++++++----------
lib/markets/fides.js | 160 +++++++++++++---------
lib/markets/poloniex.js | 101 ++++++++++----
lib/markets/stex.js | 250 +++++++++++++++++------------------
lib/markets/yobit.js | 83 +++++++++---
locale/en.json | 10 --
public/stylesheets/style.css | 4 +
routes/index.js | 4 +-
settings.json.template | 2 +-
views/market.pug | 248 ++++++++++++++++++++++++++++++++++
views/markets/altmarkets.pug | 164 -----------------------
views/markets/bittrex.pug | 114 ----------------
views/markets/bleutrade.pug | 114 ----------------
views/markets/crex.pug | 106 ---------------
views/markets/fides.pug | 113 ----------------
views/markets/menu.pug | 40 ------
views/markets/poloniex.pug | 180 -------------------------
views/markets/stex.pug | 106 ---------------
views/markets/yobit.pug | 106 ---------------
24 files changed, 988 insertions(+), 1492 deletions(-)
create mode 100644 views/market.pug
delete mode 100644 views/markets/altmarkets.pug
delete mode 100644 views/markets/bittrex.pug
delete mode 100644 views/markets/bleutrade.pug
delete mode 100644 views/markets/crex.pug
delete mode 100644 views/markets/fides.pug
delete mode 100644 views/markets/menu.pug
delete mode 100644 views/markets/poloniex.pug
delete mode 100644 views/markets/stex.pug
delete mode 100644 views/markets/yobit.pug
diff --git a/lib/database.js b/lib/database.js
index 2693519..853eb0b 100644
--- a/lib/database.js
+++ b/lib/database.js
@@ -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}, {
diff --git a/lib/locale.js b/lib/locale.js
index db8f4d0..58ebad8 100644
--- a/lib/locale.js
+++ b/lib/locale.js
@@ -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;
diff --git a/lib/markets/altmarkets.js b/lib/markets/altmarkets.js
index 73b3cff..2969627 100644
--- a/lib/markets/altmarkets.js
+++ b/lib/markets/altmarkets.js
@@ -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 = {
});
});
}
-};
+};
\ No newline at end of file
diff --git a/lib/markets/bittrex.js b/lib/markets/bittrex.js
index 02cc04c..330fc44 100644
--- a/lib/markets/bittrex.js
+++ b/lib/markets/bittrex.js
@@ -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});
+ });
});
});
});
}
-};
+};
\ No newline at end of file
diff --git a/lib/markets/bleutrade.js b/lib/markets/bleutrade.js
index 74b41cb..5fc1b95 100644
--- a/lib/markets/bleutrade.js
+++ b/lib/markets/bleutrade.js
@@ -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});
+ });
});
});
});
}
-};
+};
\ No newline at end of file
diff --git a/lib/markets/crex.js b/lib/markets/crex.js
index a819d1b..513abb5 100644
--- a/lib/markets/crex.js
+++ b/lib/markets/crex.js
@@ -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});
+ });
});
});
});
diff --git a/lib/markets/fides.js b/lib/markets/fides.js
index 2045520..b53009d 100644
--- a/lib/markets/fides.js
+++ b/lib/markets/fides.js
@@ -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});
+ });
});
});
});
}
-};
+};
\ No newline at end of file
diff --git a/lib/markets/poloniex.js b/lib/markets/poloniex.js
index 6045481..3e4a80e 100644
--- a/lib/markets/poloniex.js
+++ b/lib/markets/poloniex.js
@@ -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});
});
diff --git a/lib/markets/stex.js b/lib/markets/stex.js
index be915ae..6d7f985 100644
--- a/lib/markets/stex.js
+++ b/lib/markets/stex.js
@@ -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 });
+ });
+ });
});
- }
+ });
+ });
+ }
};
\ No newline at end of file
diff --git a/lib/markets/yobit.js b/lib/markets/yobit.js
index 923fa69..d54549b 100644
--- a/lib/markets/yobit.js
+++ b/lib/markets/yobit.js
@@ -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});
});
});
});
}
-};
+};
\ No newline at end of file
diff --git a/locale/en.json b/locale/en.json
index 6093a6e..bc08598 100644
--- a/locale/en.json
+++ b/locale/en.json
@@ -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",
diff --git a/public/stylesheets/style.css b/public/stylesheets/style.css
index 5c427ea..33756f6 100644
--- a/public/stylesheets/style.css
+++ b/public/stylesheets/style.css
@@ -226,4 +226,8 @@ tr {
.decimal {
font-size: 0.7em;
+}
+
+.marketSpacer {
+ padding-bottom:10px;
}
\ No newline at end of file
diff --git a/routes/index.js b/routes/index.js
index 1e35788..cf1af09 100644
--- a/routes/index.js
+++ b/routes/index.js
@@ -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,
diff --git a/settings.json.template b/settings.json.template
index 010765f..5acafa6 100644
--- a/settings.json.template
+++ b/settings.json.template
@@ -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",
diff --git a/views/market.pug b/views/market.pug
new file mode 100644
index 0000000..64a1607
--- /dev/null
+++ b/views/market.pug
@@ -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: '
\
+ | time: | %s |
\
+ | open: | %s |
\
+ | hi: | %s |
\
+ | low: | %s |
\
+ | close: | %s |
'
+ }
+ });
+ }
+ $(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
\ No newline at end of file
diff --git a/views/markets/altmarkets.pug b/views/markets/altmarkets.pug
deleted file mode 100644
index 12afe0b..0000000
--- a/views/markets/altmarkets.pug
+++ /dev/null
@@ -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:' \
- | time: | %s |
\
- | open: | %s |
\
- | hi: | %s |
\
- | low: | %s |
\
- | close: | %s |
'
- }
- });
- $(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
\ No newline at end of file
diff --git a/views/markets/bittrex.pug b/views/markets/bittrex.pug
deleted file mode 100644
index 06191d3..0000000
--- a/views/markets/bittrex.pug
+++ /dev/null
@@ -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
\ No newline at end of file
diff --git a/views/markets/bleutrade.pug b/views/markets/bleutrade.pug
deleted file mode 100644
index 495159d..0000000
--- a/views/markets/bleutrade.pug
+++ /dev/null
@@ -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
\ No newline at end of file
diff --git a/views/markets/crex.pug b/views/markets/crex.pug
deleted file mode 100644
index 480236d..0000000
--- a/views/markets/crex.pug
+++ /dev/null
@@ -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
\ No newline at end of file
diff --git a/views/markets/fides.pug b/views/markets/fides.pug
deleted file mode 100644
index 3aed92e..0000000
--- a/views/markets/fides.pug
+++ /dev/null
@@ -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
diff --git a/views/markets/menu.pug b/views/markets/menu.pug
deleted file mode 100644
index 6e042fa..0000000
--- a/views/markets/menu.pug
+++ /dev/null
@@ -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
\ No newline at end of file
diff --git a/views/markets/poloniex.pug b/views/markets/poloniex.pug
deleted file mode 100644
index 83d5f6d..0000000
--- a/views/markets/poloniex.pug
+++ /dev/null
@@ -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:' \
- | time: | %s |
\
- | open: | %s |
\
- | hi: | %s |
\
- | low: | %s |
\
- | close: | %s |
'
- }
- });
- $(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
\ No newline at end of file
diff --git a/views/markets/stex.pug b/views/markets/stex.pug
deleted file mode 100644
index 8bf9c58..0000000
--- a/views/markets/stex.pug
+++ /dev/null
@@ -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
\ No newline at end of file
diff --git a/views/markets/yobit.pug b/views/markets/yobit.pug
deleted file mode 100644
index 68f2093..0000000
--- a/views/markets/yobit.pug
+++ /dev/null
@@ -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
\ No newline at end of file