I think that I have it working right. Now dailyMovingAverage is available for up to 365 days.
PS C:\Users\Ken\Desktop\Code> node index.js
HourlyMA: 142.83179999999996
MinutleyMA: 142.0304
DailyMA: 136.26
from node.js
indicators.minutelyMovingAverage(“ETH”,“USD”,50,function(result){
console.log("MinutleyMA: ", result)}),
indicators.hourlyMovingAverage(“ETH”,“USD”,50,function(result){
console.log("HourlyMA: ", result)}),
indicators.dailyMovingAverage(“ETH”,“USD”,50,function(result){
console.log("DailyMA: ", result)});
from indicators.js:
const CCAPIKey = “b5c65d6a8e240b7faec31b7243234c445eda6fa6a1c65382520c0ccdc7c95f5e”
const CryptoCompareAPI = require(“cryptocompare”);
CryptoCompareAPI.setApiKey(CCAPIKey);
module.exports = {
minutelyMovingAverage:function(cryptoAsset,fiatCurrency,minutes,callback){
if(minutes>1440){
console.error("Only up to 1440 minutes allowed!")
return
}
// 1 get data from CryptoCompare
CryptoCompareAPI.histoMinute(cryptoAsset, fiatCurrency)
.then(data => {
// 2 calculate MA from past minutes
data = data.reverse()
var sum = 0;
for(var i = 0;i<minutes;i++){
sum+=data[i].close;
}
var movingAverage = sum/minutes;
callback(movingAverage);
})
.catch(console.error)
},
hourlyMovingAverage:function(cryptoAsset,fiatCurrency,hours,callback){
if(hours>169){
console.error("Only up to 169 hours allowed!")
return
}
// 1 get data from CryptoCompare
CryptoCompareAPI.histoHour(cryptoAsset, fiatCurrency)
.then(data => {
// 2 calculate MA from past hours
data = data.reverse()
var sum = 0;
for(var i = 0;i<hours;i++){
sum+=data[i].close;
}
var movingAverage = sum/hours;
callback(movingAverage);
})
.catch(console.error)
},
dailyMovingAverage:function(cryptoAsset,fiatCurrency,days,callback){
if(days>365){
console.error("Only up to 365 days allowed!")
return
}
// 1 get data from CryptoCompare
CryptoCompareAPI.histoDay(cryptoAsset, fiatCurrency,{‘limit’:‘none’})
.then(data => {
// 2 calculate MA from past days
data = data.reverse()
var sum = 0;
for(var i = 0;i<days;i++){
sum+=data[i].close;
}
var movingAverage = sum/days;
callback(movingAverage);
})
.catch(console.error)
}
}