Files
personal_TV/static/sma.js
2025-07-21 21:20:39 +02:00

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;
}