chore: add AGENTS.md with build, lint, test commands and style guidelines
This commit is contained in:
69
js/indicators/index.js
Normal file
69
js/indicators/index.js
Normal file
@ -0,0 +1,69 @@
|
||||
// Indicator registry and exports for self-contained indicators
|
||||
|
||||
// Import all indicator classes and their signal functions
|
||||
export { MAIndicator, calculateMASignal } from './moving_average.js';
|
||||
export { MACDIndicator, calculateMACDSignal } from './macd.js';
|
||||
export { HTSIndicator, calculateHTSSignal } from './hts.js';
|
||||
export { RSIIndicator, calculateRSISignal } from './rsi.js';
|
||||
export { BollingerBandsIndicator, calculateBollingerBandsSignal } from './bb.js';
|
||||
export { StochasticIndicator, calculateStochSignal } from './stoch.js';
|
||||
export { ATRIndicator, calculateATRSignal } from './atr.js';
|
||||
export { HurstBandsIndicator, calculateHurstSignal } from './hurst.js';
|
||||
|
||||
// Import for registry
|
||||
import { MAIndicator as MAI, calculateMASignal as CMA } from './moving_average.js';
|
||||
import { MACDIndicator as MACDI, calculateMACDSignal as CMC } from './macd.js';
|
||||
import { HTSIndicator as HTSI, calculateHTSSignal as CHTS } from './hts.js';
|
||||
import { RSIIndicator as RSII, calculateRSISignal as CRSI } from './rsi.js';
|
||||
import { BollingerBandsIndicator as BBI, calculateBollingerBandsSignal as CBB } from './bb.js';
|
||||
import { StochasticIndicator as STOCHI, calculateStochSignal as CST } from './stoch.js';
|
||||
import { ATRIndicator as ATRI, calculateATRSignal as CATR } from './atr.js';
|
||||
import { HurstBandsIndicator as HURSTI, calculateHurstSignal as CHURST } from './hurst.js';
|
||||
|
||||
// Signal function registry for easy dispatch
|
||||
export const SignalFunctionRegistry = {
|
||||
ma: CMA,
|
||||
macd: CMC,
|
||||
hts: CHTS,
|
||||
rsi: CRSI,
|
||||
bb: CBB,
|
||||
stoch: CST,
|
||||
atr: CATR,
|
||||
hurst: CHURST
|
||||
};
|
||||
|
||||
// Indicator registry for UI
|
||||
export const IndicatorRegistry = {
|
||||
ma: MAI,
|
||||
macd: MACDI,
|
||||
hts: HTSI,
|
||||
rsi: RSII,
|
||||
bb: BBI,
|
||||
stoch: STOCHI,
|
||||
atr: ATRI,
|
||||
hurst: HURSTI
|
||||
};
|
||||
|
||||
/**
|
||||
* Get list of available indicators for the UI catalog
|
||||
*/
|
||||
export function getAvailableIndicators() {
|
||||
return Object.entries(IndicatorRegistry).map(([type, IndicatorClass]) => {
|
||||
const instance = new IndicatorClass({ type, params: {}, name: '' });
|
||||
const meta = instance.getMetadata();
|
||||
return {
|
||||
type,
|
||||
name: meta.name || type.toUpperCase(),
|
||||
description: meta.description || ''
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Get signal function for an indicator type
|
||||
* @param {string} indicatorType - The type of indicator (e.g., 'ma', 'rsi')
|
||||
* @returns {Function|null} The signal calculation function or null if not found
|
||||
*/
|
||||
export function getSignalFunction(indicatorType) {
|
||||
return SignalFunctionRegistry[indicatorType] || null;
|
||||
}
|
||||
Reference in New Issue
Block a user