44 lines
1.3 KiB
JavaScript
44 lines
1.3 KiB
JavaScript
/**
|
|
* Indicator Definition Object for Fast SMA.
|
|
*/
|
|
const FAST_SMA_INDICATOR = {
|
|
name: 'FAST_SMA',
|
|
label: 'Fast SMA',
|
|
usesBaseData: false, // This simple indicator uses the chart's currently displayed data
|
|
params: [
|
|
{ name: 'period', type: 'number', defaultValue: 33, min: 2 },
|
|
],
|
|
calculateFull: calculateFullSMA,
|
|
color: '#00bcd4',
|
|
};
|
|
|
|
/**
|
|
* Indicator Definition Object for Slow SMA.
|
|
*/
|
|
const SLOW_SMA_INDICATOR = {
|
|
name: 'SLOW_SMA',
|
|
label: 'Slow SMA',
|
|
usesBaseData: false, // This simple indicator uses the chart's currently displayed data
|
|
params: [
|
|
{ name: 'period', type: 'number', defaultValue: 133, min: 2 },
|
|
],
|
|
calculateFull: calculateFullSMA,
|
|
color: '#ff5252',
|
|
};
|
|
|
|
function calculateFullSMA(data, params) {
|
|
const period = params.period;
|
|
if (!data || data.length < period) return [];
|
|
let smaData = [];
|
|
let sum = 0;
|
|
for (let i = 0; i < period; i++) {
|
|
sum += data[i].close;
|
|
}
|
|
smaData.push({ time: data[period - 1].time, value: sum / period });
|
|
for (let i = period; i < data.length; i++) {
|
|
sum = sum - data[i - period].close + data[i].close;
|
|
smaData.push({ time: data[i].time, value: sum / period });
|
|
}
|
|
return smaData;
|
|
}
|