Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- let period = 20; // Number of days
- var averages = [];
- let current_average_sum = 0;
- let current_sum = 0;
- let current_time = Date.now();
- var closing_prices = [];
- let market = "ETHBTC"; // maybe an array of different markets?
- let candleSize = "1d";
- let multiplier = (2 / (period + 1));
- let Close = 0;
- let EMA = 0;
- let SMA = 0;
- let previous_ema = 0;
- const binance = require('node-binance-api')().options({
- APIKEY: 'xxx', // CHANGE THIS AND THE API SECRET!
- APISECRET: 'xxx',
- useServerTime: true,
- test: true // True = SandboxMode
- });
- function fetchPrice() {
- binance.candlesticks(market, candleSize, (error, ticks, symbol) => {
- for (i = 0; i < ticks.length; i++) {
- let last_tick = ticks[i];
- let [time, open, high, low, close, volume, closeTime, assetVolume, trades, buyBaseVolume, buyAssetVolume, ignored] = last_tick;
- closing_prices.push(close);
- current_close = closing_prices[i];
- Close = parseFloat(current_close);
- }
- calculateSMA();
- calculateEMA();
- }, {
- limit: period,
- endTime: current_time
- });
- }
- function calculateSMA() {
- for (i = 0; i < period; i++) {
- selected_elements = closing_prices.slice(0, period);
- for (x = 0; x < (selected_elements.length); x++) {
- current_value = selected_elements[x];
- current_sum += parseFloat(current_value);
- }
- closing_prices.shift();
- averages.push(current_sum / period);
- current_sum = 0;
- }
- SMA = averages[0];
- console.log(SMA + " SMA ");
- return SMA;
- }
- fetchPrice();
- function calculateEMA() {
- if (EMA == 0) {
- EMA = (Close - SMA) * multiplier + SMA;
- console.log(" EMA . " + EMA);
- previous_ema = EMA;
- //return EMA;
- calculateEMA();
- } else {
- for (a = 0; a < period; a++) {
- EMA = (Close - previous_ema) * multiplier + previous_ema;
- console.log(EMA + " ema");
- //console.log(previous_ema + " previous");
- previous_ema = EMA;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment