Citat:
Ursprungligen postat av
esoul
Risk för lågkonjuktur ska väl vara Ja när arbetslösheten är över medelvärdet?
Ja, tittade endast på värdet 14.7.
Edit: Testa ersätta koden med:
Kod:
/**
* GS AZ TAA v1.0.2
*/
// azPost
function azGet( id, ma, period ){
// options
id = id || false;
ma = ma || 10;
period = period.toUpperCase() || 'MONTH';
// checks
if(!id) return 'Inget id definierat';
if (['MINUTE', 'HOUR', 'DAY', 'WEEK', 'MONTH'].indexOf( period ) < 0 ){
return 'Perioden är fel, använd MINUTE, HOUR, DAY, WEEK eller MONTH';
}
// base VARs
var azPostURL = 'https://www.avanza.se/ab/component/highstockchart/getchart/orderbook';
var cacheTime = 21600; // 21600 = 6 hours
var json = '{"orderbookId":{id},"chartType":"AREA","widthOfPlotContainer":558,"chartResolution":"{period}","navigator":true,"percentage":false,"volume":false,"owners":false,"timePeriod":"three_months","ta":[]}';
// replace json with user options
json = json
.replace('{id}', id)
.replace('[]', '[{"type":"sma","timeFrame": '+ ma +'}]')
if( period === 'HOUR' || period === 'MINUTE' ){
json = json.replace('three_months', 'today'); // three months does not support hour/minute data
}
json = json.replace('{period}',period);
// ------------------------------------------------------ //
// request options
var requestOptions = {
'method' : 'post',
'contentType': 'application/json',
'payload' : json,
'muteHttpExceptions': true
}
var response, data, updated;
// check/setup cache
var cacheString = 'cache_' + id.toString() + ma + period;
var cache = CacheService.getDocumentCache();
// execute the request or get from cache
if(cache.get(cacheString) != null) {
updated = new Date(Date.now()-cacheTime);
data = cache.get(cacheString);
}
else {
updated = new Date();
response = UrlFetchApp.fetch(azPostURL, requestOptions);
data = response.getContentText();
cache.put(cacheString, data, cacheTime); // use cacheTime variable
}
// ------------------------------------------------------ //
// PARSE DATA
data = JSON.parse(data);
var dataPoints = data.dataPoints;
var maData = data.technicalAnalysis[0]['dataPoints'];
var rows = [],
data,
len = dataPoints.length,
mlen = maData.length;
// get last dataPoint only
dataPoints = dataPoints[len-1];
maData = maData[mlen-1];
// get all data
var cur = dataPoints;
var nav = cur[1];
var jsdate = updated,
y = jsdate.getFullYear(),
m = pad( jsdate.getMonth()+1 ),
d = pad( jsdate.getDate() ),
hh = pad( jsdate.getHours() ),
mm = pad( jsdate.getMinutes() );
var dateFormat = y + '-' + m + '-' + d + ' ' + hh + ':' + mm;
var cur_sma = maData[1]; // sma-index is index-1
// last point did not have ma, must find latest ma (since 1 year data does not include 100% of all MA-points)
if( cur_sma === '' ){
var all_sma = data.technicalAnalysis[0]['dataPoints'];
var len = all_sma.length;
cur_sma = all_sma[len-1];
}
// get difference in perent
//var indicator = toPercent((nav/cur_sma)-1) + '%';
var indicator = ((nav/cur_sma)-1);
// push data to rows
rows.push([indicator, nav, cur_sma, dateFormat]);
return rows;
} // azGet()
// helpers
function toPercent(val){ return Math.round(val*10000)/100; }
function pad(n){return n<10 ? '0'+n : n} // add leading zeros to days, months etc
/**
* UNRATE v1.0.0
* Get unemployment rate and its current moving average
* usage ie =UNRATE(12)
*/
function UNRATE(ma){
ma = ma || 12;
// setup
var url = "https://fred.stlouisfed.org/graph/fredgraph.csv?id=UNRATE";
// max months to get
var date = new Date();
date.setMonth(date.getMonth() - ma);
date.setDate(1);
date = date.getFullYear() + '-' + pad(date.getMonth()) + '-' + pad(date.getDate());
url += '&cosd=' + date;
// get and parse csv
var req = UrlFetchApp.fetch(url, { "muteHttpExceptions": true });
var res = Utilities.parseCsv(req.getContentText());
// only use last X values (use MA-value)
res = res.slice(-1 * ma);
var sum = 0,
len = res.length, i = 0;
for(i; i<len; i++){
sum += parseFloat( res[i][1] );
}
// current and ma
var current = parseFloat(res[len-1][1]);
var currentMA = (sum/ma).toFixed(1);
// rows, push
var rows = [];
rows.push(["Nuvarande UNRATE", current]);
rows.push(["Medelvärde (MA" + ma + ")", currentMA]);
rows.push(["Risk för lågkonjunktur?", currentMA >= current ? "Nej" : "Ja"]);
return rows;
} // UNRATE()