Upload files to "static"
init
This commit is contained in:
32
static/ema.js
Normal file
32
static/ema.js
Normal file
@ -0,0 +1,32 @@
|
||||
/**
|
||||
* Indicator Definition Object for EMA.
|
||||
*/
|
||||
const EMA_INDICATOR = {
|
||||
name: 'EMA',
|
||||
label: 'Exponential Moving Average',
|
||||
usesBaseData: false, // This simple indicator uses the chart's currently displayed data
|
||||
params: [
|
||||
{ name: 'period', type: 'number', defaultValue: 20, min: 2 },
|
||||
],
|
||||
calculateFull: calculateFullEMA,
|
||||
};
|
||||
|
||||
function calculateFullEMA(data, params) {
|
||||
const period = params.period;
|
||||
if (!data || data.length < period) return [];
|
||||
let emaData = [];
|
||||
const multiplier = 2 / (period + 1);
|
||||
let sum = 0;
|
||||
for (let i = 0; i < period; i++) {
|
||||
sum += data[i].close;
|
||||
}
|
||||
let prevEma = sum / period;
|
||||
emaData.push({ time: data[period - 1].time, value: prevEma });
|
||||
for (let i = period; i < data.length; i++) {
|
||||
const close = data[i].close;
|
||||
const ema = (close - prevEma) * multiplier + prevEma;
|
||||
emaData.push({ time: data[i].time, value: ema });
|
||||
prevEma = ema;
|
||||
}
|
||||
return emaData;
|
||||
}
|
||||
Reference in New Issue
Block a user