JSPM

apexstock

0.1.0
    • ESM via JSPM
    • ES Module Entrypoint
    • Export Map
    • Keywords
    • License
    • Repository URL
    • TypeScript Types
    • README
    • Created
    • Published
    • Downloads 4
    • Score
      100M100P100Q37746F
    • License see LICENSE in LICENSE

    An extension library for ApexCharts focusing on stock charts

    Package Exports

      This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (apexstock) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

      Readme

      ApexStock

      A comprehensive, feature-rich stock chart library built on top of ApexCharts. ApexStock provides professional-grade financial charting capabilities with technical indicators, drawing tools, theme support, and an intuitive interface.

      Features

      • Multiple Chart Types: Candlestick, line, area, heikinashi, ohlc, etc
      • Technical Indicators: 20+ built-in indicators including RSI, MACD, Bollinger Bands, and more
      • Drawing Tools: Interactive drawing capabilities for technical analysis
      • Theme Support: Light and dark theme modes with seamless switching
      • Zoom Controls: Interactive zoom and pan functionality
      • Export Capabilities: Export charts as images
      • Responsive Design: Adaptive layout for different screen sizes
      • Shadow DOM Support: Works within Shadow DOM environments

      Dependencies

      • ApexCharts: The core charting library (required)
      • Modern Browser: ES6+ support required

      Installation

      npm install apexcharts
      npm install apexstock

      Basic Usage

      // Basic HTML structure
      <div id="chart-container"></div>;
      
      // JavaScript
      const chartEl = document.getElementById("chart-container");
      
      const chartOptions = {
        chart: {
          height: 600,
        },
        series: [
          {
            name: "Stock Price",
            data: [
              {
                x: new Date("2024-01-01"),
                o: 100,
                h: 110,
                l: 95,
                c: 105,
                v: 1000000,
              },
              {
                x: new Date("2024-01-02"),
                o: 105,
                h: 115,
                l: 100,
                c: 112,
                v: 1200000,
              },
              // ... more OHLCV data
            ],
          },
        ],
        theme: {
          mode: "light", // or 'dark'
        },
      };
      
      const apexStock = new ApexStock(chartEl, chartOptions);
      apexStock.render();

      Chart Options

      Basic Configuration

      const chartOptions = {
        chart: {
          height: 600, // Chart height in pixels
          id: "my-chart", // Chart ID (auto-generated if not provided)
        },
      
        series: [
          {
            name: "Stock Price",
            data: [
              // OHLCV data format
              {
                x: timestamp, // Date/timestamp
                o: openPrice, // Open price
                h: highPrice, // High price
                l: lowPrice, // Low price
                c: closePrice, // Close price
                v: volume, // Volume (optional)
              },
            ],
          },
        ],
      
        theme: {
          mode: "light", // 'light' or 'dark'
        },
      
        plotOptions: {
          stockChart: {
            indicators: {
              // Configure available indicators
              rsi: { enabled: true },
              macd: { enabled: true },
              "moving average": { enabled: true },
              "bollinger bands": { enabled: true },
              // ... more indicators
            },
          },
        },
      };

      Theme Configuration

      {
        theme: {
          mode: "dark"; // 'light' or 'dark'
        }
      }

      Indicator Configuration

      You can configure indicators in two ways:

      Object Format (Recommended):

      plotOptions: {
        stockChart: {
          indicators: {
            'rsi': { enabled: true },
            'macd': { enabled: true },
            'moving average': { enabled: false },
            'bollinger bands': { enabled: true }
          }
        }
      }

      Array Format:

      plotOptions: {
        stockChart: {
          indicators: ["rsi", "macd", "bollinger bands"];
        }
      }

      Available Indicators

      Overlays (displayed on main chart)

      These indicators are drawn directly on the price chart:

      Indicator Key Description
      Moving Average "moving average" Simple moving average line
      Bollinger Bands "bollinger bands" Price volatility bands (upper, middle, lower)
      Exponential Moving Average "exponential moving average" EMA line with exponential weighting
      Fibonacci Retracements "fibonacci retracements" Fibonacci retracement levels (0%, 23.6%, 38.2%, 50%, 61.8%, 100%)
      Linear Regression "linear regression" Linear regression trend line
      Ichimoku Cloud Indicator "ichimoku cloud indicator" Complete Ichimoku system with cloud, lines

      Oscillators (displayed in separate panels)

      These indicators are displayed in their own panels below the main chart. Note: Only one oscillator can be active at a time.

      Oscillator Key Description
      RSI "rsi" Relative Strength Index (0-100 scale)
      MACD "macd" Moving Average Convergence Divergence with signal line
      Volumes "volumes" Volume bars showing trading volume
      Price Volume Trend "price volume trend" PVT cumulative indicator
      Stochastic Oscillator "stochastic oscillator" %K and %D stochastic lines
      Standard Deviation Indicator "standard deviation indicator" Price volatility measure
      Average Directional Index "average directional index" ADX trend strength indicator
      Chaikin Oscillator "chaikin oscillator" Volume-based momentum oscillator
      Commodity Channel Index "commodity channel index" CCI overbought/oversold indicator
      Trend Strength Index "trend strength index" TSI momentum indicator
      Accelerator Oscillator "accelerator oscillator" Acceleration/deceleration of price movement
      Bollinger Bands %B "bollinger bands %b" Position within Bollinger Bands (0-1 scale)
      Bollinger Bands Width "bollinger bands width" Width of Bollinger Bands (volatility measure)

      Usage Examples

      Adding Overlays (multiple allowed):

      // Add multiple overlays simultaneously
      apexStock.updateIndicator("moving average");
      apexStock.updateIndicator("bollinger bands");
      apexStock.updateIndicator("fibonacci retracements");

      Adding Oscillators (only one at a time):

      // Add RSI (removes any existing oscillator)
      apexStock.updateIndicator("rsi");
      
      // Switch to MACD (removes RSI)
      apexStock.updateIndicator("macd");

      Configuration in Chart Options:

      plotOptions: {
        stockChart: {
          indicators: {
            // Overlays (can have multiple)
            'moving average': { enabled: true },
            'bollinger bands': { enabled: true },
            'exponential moving average': { enabled: true },
      
            // Oscillators (only one will be active)
            'rsi': { enabled: false },
            'macd': { enabled: true },  // This will be the active oscillator
            'volumes': { enabled: false }
          }
        }
      }

      Public Methods

      Core Methods

      render()

      Renders the chart and initializes all components.

      apexStock.render();

      update(newOptions)

      Updates the chart with new options while preserving state.

      apexStock.update({
        series: [{ data: newData }],
        theme: { mode: "dark" },
      });

      destroy()

      Cleans up the chart instance and removes event listeners.

      apexStock.destroy();

      Theme Methods

      updateTheme(newTheme)

      Changes the chart theme.

      apexStock.updateTheme("dark"); // or 'light'

      getTheme()

      Returns the current theme.

      const currentTheme = apexStock.getTheme(); // 'light' or 'dark'

      Indicator Methods

      updateIndicator(indicatorKey)

      Adds or updates a specific indicator.

      apexStock.updateIndicator("rsi");
      apexStock.updateIndicator("moving average");

      removeIndicator(indicatorKey)

      Removes a specific indicator.

      apexStock.removeIndicator("rsi");

      Chart Configuration Methods

      updateChartOptions(newOptions)

      Updates chart options with theme handling.

      apexStock.updateChartOptions({
        chart: { height: 800 },
        theme: { mode: "dark" },
      });

      Technical Analysis Methods

      Moving Averages

      const ma = apexStock.calculateMovingAverage(series, period);
      const ema = apexStock.calculateEMA(series, period);

      Oscillators

      const rsi = apexStock.calculateRSI(series, period);
      const macd = apexStock.calculateMACD(
        series,
        fastPeriod,
        slowPeriod,
        signalPeriod
      );
      const stochastic = apexStock.calculateStochastic(series, period, smoothPeriod);

      Volatility Indicators

      const bb = apexStock.calculateBollingerBands(series, period, stdDev);
      const stdDev = apexStock.calculateStdDevIndicator(series, period);

      Volume Indicators

      const pvt = apexStock.calculatePVT(series);
      const chaikin = apexStock.calculateChaikinOsc(series, shortPeriod, longPeriod);

      Trend Indicators

      const adx = apexStock.calculateADX(series, period);
      const cci = apexStock.calculateCCI(series, period);
      const tsi = apexStock.calculateTSI(series, longPeriod, shortPeriod);

      Advanced Indicators

      const ichimoku = apexStock.calculateIchimoku(series);
      const fibonacci = apexStock.calculateFibonacciRetracements(series);
      const linearReg = apexStock.calculateLinearRegression(series, period);

      Advanced Usage

      Multiple Indicators

      const chartOptions = {
        // ... basic options
        plotOptions: {
          stockChart: {
            indicators: {
              rsi: { enabled: true },
              "moving average": { enabled: true },
              "bollinger bands": { enabled: true },
              macd: { enabled: true },
            },
          },
        },
      };

      Dynamic Updates

      // Change theme dynamically
      apexStock.updateTheme("dark");
      
      // Add indicators programmatically
      apexStock.updateIndicator("rsi");
      apexStock.updateIndicator("bollinger bands");

      Browser Support

      • Modern browsers with ES6+ support
      • Chrome 60+
      • Firefox 55+
      • Safari 12+
      • Edge 79+

      License

      Please refer to the ApexCharts license for usage terms and conditions.