From 42c9b17ca80aac1cbe4e614e30e0217102234359 Mon Sep 17 00:00:00 2001 From: joeuhren <46763106+joeuhren@users.noreply.github.com> Date: Mon, 23 Nov 2020 19:43:27 -0700 Subject: [PATCH] Markets API: Add Altmarkets chart data --- lib/markets/altmarkets.js | 39 ++++++++++++++++++++---- views/markets/altmarkets.pug | 58 ++++++++++++++++++++++++++++++++---- 2 files changed, 86 insertions(+), 11 deletions(-) diff --git a/lib/markets/altmarkets.js b/lib/markets/altmarkets.js index 2ec0a74..73b3cff 100644 --- a/lib/markets/altmarkets.js +++ b/lib/markets/altmarkets.js @@ -15,7 +15,7 @@ function get_summary(coin, exchange, cb) { 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']['quotevol']).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); @@ -93,16 +93,43 @@ function get_orders(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) { + 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); + } + } + } else { + return cb(chartdata.error, []); + } + } + }); +} + module.exports = { get_data: function(coin, exchange, 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(coin, exchange, function (err, chartdata){ + if (err) { chartdata = []; error = err; } + get_orders(coin, exchange, function(err, buys, sells) { if (err) { error = err; } - get_summary(coin, exchange, function(err, stats) { + get_trades(coin, exchange, function(err, trades) { if (err) { error = err; } - return cb(error, {buys: buys, sells: sells, chartdata: [], trades: trades, stats: stats}); + get_summary(coin, exchange, function(err, stats) { + if (err) { error = err; } + return cb(error, {buys: buys, sells: sells, chartdata: chartdata, trades: trades, stats: stats}); + }); }); }); }); diff --git a/views/markets/altmarkets.pug b/views/markets/altmarkets.pug index d3b5a0c..12afe0b 100644 --- a/views/markets/altmarkets.pug +++ b/views/markets/altmarkets.pug @@ -1,13 +1,61 @@ 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 - .panel.panel-default + .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-disabled.iquidus.market-toggle(data-toggle='tooltip', data-placement='bottom', title=settings.locale.mkt_no_chart) + 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 @@ -113,4 +161,4 @@ block market_view td.hidden-xs =(new Date(order.timestamp * 1000).toUTCString()) - .footer-padding + .footer-padding \ No newline at end of file