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