@neabyte/candlestick-cli
Version:
Beautiful terminal candlestick charts with real-time trading data. Create stunning ASCII art charts directly in your terminal with support for live market data, custom colors, and professional trading visualization.
376 lines (284 loc) • 9.4 kB
Markdown
# 📚 API Reference
Complete API documentation for Candlestick-CLI.
## Table of Contents
- [Chart Class](#chart-class)
- [ChartData Class](#chartdata-class)
- [ChartRenderer Class](#chartrenderer-class)
- [YAxis Class](#yaxis-class)
- [VolumePane Class](#volumepane-class)
- [InfoBar Class](#infobar-class)
- [CandleSet Class](#candleset-class)
- [CCXTProvider Class](#ccxtprovider-class)
- [Export Functions](#export-functions)
- [Utility Functions](#utility-functions)
- [Constants](#constants)
- [Error Types](#error-types)
- [Types](#types)
## Chart Class
Main chart class for creating and rendering candlestick charts.
### Constructor
```typescript
new Chart(candles: Candles, options?: ChartOptions)
```
**Parameters:**
- `candles: Candles` - Array of candle data
- `options?: ChartOptions` - Optional configuration
**ChartOptions:**
```typescript
interface ChartOptions {
title?: string // Chart title (default: 'My chart')
width?: number // Chart width (default: 0 for auto)
height?: number // Chart height (default: 0 for auto)
rendererClass?: typeof ChartRenderer // Custom renderer class
}
```
### Methods
#### Core Rendering
- `render(): Promise<string>` - Renders the chart to a string representation
- `draw(): Promise<void>` - Renders the chart to console output
#### Color Configuration
- `setBearColor(r: number, g: number, b: number): void` - Set bearish candle color (RGB values 0-255)
- `setBullColor(r: number, g: number, b: number): void` - Set bullish candle color (RGB values 0-255)
- `setVolBearColor(r: number, g: number, b: number): void` - Set volume bearish color (RGB values 0-255)
- `setVolBullColor(r: number, g: number, b: number): void` - Set volume bullish color (RGB values 0-255)
#### Volume Configuration
- `setVolumePaneEnabled(enabled: boolean): void` - Enable or disable volume pane display
- `setVolumePaneHeight(height: number): void` - Set volume pane height in lines
#### Chart Customization
- `setHighlight(price: string, color: ColorValue): void` - Highlight specific price level with color
- `setName(name: string): void` - Set chart name/title
- `setMargins(top?: number, right?: number, bottom?: number, left?: number): void` - Set chart margins
#### Data Management
- `updateCandles(candles: Candles, reset?: boolean): void` - Update chart with new candle data
#### Size Management
- `updateSize(width: number, height: number): void` - Update chart dimensions
- `updateSizeFromTerminal(): void` - Update size from current terminal dimensions
- `enableAutoResize(interval?: number): void` - Enable automatic terminal size following
- `disableAutoResize(): void` - Disable automatic terminal size following
#### Scaling Configuration
- `setScalingMode(mode: 'fit' | 'fixed' | 'price'): void` - Set chart scaling mode
- `setPriceRange(minPrice: number, maxPrice: number): void` - Set price range for price-based scaling
- `setTimeRange(startIndex: number, endIndex: number): void` - Set time range for fixed scaling
- `fitToData(): void` - Fit chart to display all data points
## CCXTProvider Class
Market data provider for fetching real-time cryptocurrency data using CCXT library.
### Constructor
```typescript
new CCXTProvider()
```
Creates a new CCXT provider instance configured for Binance futures trading.
### Methods
#### Data Fetching
- `fetchOHLCV(symbol?: string, timeframe?: string, limit?: number): Promise<Candles>` - Fetch OHLCV data from exchange
- `fetch4H(symbol?: string, limit?: number): Promise<Candles>` - Fetch 4-hour timeframe data
- `fetch1D(symbol?: string, limit?: number): Promise<Candles>` - Fetch 1-day timeframe data
#### Market Information
- `getLatestPrice(symbol?: string): Promise<number>` - Get latest price for symbol
- `getMarketInfo(symbol?: string): Promise<MarketInfo>` - Get market information
**MarketInfo:**
```typescript
interface MarketInfo {
symbol: string
base: string
quote: string
precision: Record<string, unknown>
limits: Record<string, unknown>
}
```
## Export Functions
### `exportToText(chart: Chart, outputPath: string, preserveColors?: boolean): Promise<void>`
Export chart to text file with optional color preservation.
**Parameters:**
- `chart: Chart` - Chart instance to export
- `outputPath: string` - Output file path
- `preserveColors?: boolean` - Whether to preserve ANSI color codes (default: false)
**Example:**
```typescript
import { exportToText } from '@neabyte/candlestick-cli'
await exportToText(chart, 'chart.txt')
await exportToText(chart, 'chart.txt', true) // Preserve colors
```
### `exportToImage(chart: Chart, options: ExportOptions): Promise<void>`
Export chart to PNG image with customizable settings.
**Parameters:**
- `chart: Chart` - Chart instance to export
- `options: ExportOptions` - Export configuration
**ExportOptions:**
```typescript
interface ExportOptions {
outputPath: string
background?: 'light' | 'dark' // Background theme (default: 'dark')
}
```
**Example:**
```typescript
import { exportToImage } from '@neabyte/candlestick-cli'
await exportToImage(chart, {
outputPath: 'chart.png',
background: 'light'
})
```
### `exportChart(chart: Chart, outputPath: string, options?: Partial<ExportOptions>): Promise<void>`
Auto-detect export format based on file extension.
**Parameters:**
- `chart: Chart` - Chart instance to export
- `outputPath: string` - Output file path (.txt or .png)
- `options?: Partial<ExportOptions>` - Optional export options
**Example:**
```typescript
import { exportChart } from '@neabyte/candlestick-cli'
await exportChart(chart, 'chart.txt') // Text export
await exportChart(chart, 'chart.png') // Image export
```
## Utility Functions
### Number Formatting
- `fnum(number: number): string` - Format number with commas
- `roundPrice(price: number): number` - Round price to 2 decimal places
- `formatPrice(price: number): string` - Format price with commas and 2 decimals
### Data Parsing
- `parseCandlesFromCsv(content: string): Candles` - Parse candles from CSV content
- `parseCandlesFromJson(content: string): Candles` - Parse candles from JSON content
**Example:**
```typescript
import { fnum, formatPrice, parseCandlesFromCsv } from '@neabyte/candlestick-cli'
const formatted = fnum(1234.56) // "1,234.56"
const price = formatPrice(50000) // "50,000.00"
const candles = parseCandlesFromCsv(csvContent)
```
## Constants
### `CONSTANTS`
Chart rendering constants including margins, dimensions, and formatting options.
### `LABELS`
Default labels and text constants used throughout the application.
### `COLORS`
Default color definitions for chart elements.
### `RESET_COLOR`
ANSI color reset code for terminal output.
**Example:**
```typescript
import { CONSTANTS, LABELS, COLORS, RESET_COLOR } from '@neabyte/candlestick-cli'
console.log(`${COLORS.RED}Error${RESET_COLOR}`)
```
## Error Types
### `OHLCError`
Error thrown when OHLC data validation fails.
### `MarketDataError`
Error thrown when market data fetching or processing fails.
### `ChartRenderError`
Error thrown when chart rendering fails.
### `ValidationError`
Error thrown when input validation fails.
### `TerminalError`
Error thrown when terminal operations fail.
### `ConfigurationError`
Error thrown when configuration is invalid.
### `ErrorType`
Enum of all error types.
**Example:**
```typescript
import { MarketDataError, ConfigurationError } from '@neabyte/candlestick-cli'
try {
const data = await provider.fetchOHLCV('BTC/USDT')
} catch (error) {
if (error instanceof MarketDataError) {
console.error('Market data error:', error.message)
}
}
```
## Types
### `Candle`
Individual candle data structure.
```typescript
interface Candle {
open: number
high: number
low: number
close: number
volume: number
timestamp: number
type: CandleType
}
```
### `Candles`
Array of candle data.
```typescript
type Candles = Candle[]
```
### `CandleType`
Candle type enumeration.
```typescript
type CandleType = 1 | -1 // 1 for bullish, -1 for bearish
```
### `RGBColor`
RGB color tuple.
```typescript
type RGBColor = [number, number, number]
```
### `ColorValue`
Color value union type.
```typescript
type ColorValue = string | RGBColor | number
```
### `ChartHighlights`
Price highlighting configuration.
```typescript
type ChartHighlights = Record<string, ColorValue>
```
### `ChartLabels`
Chart label configuration.
```typescript
type ChartLabels = Record<string, string>
```
### `ChartConstants`
Chart constants configuration.
```typescript
type ChartConstants = Record<string, unknown>
```
### `CandleSetStats`
Statistics for a set of candles.
```typescript
interface CandleSetStats {
count: number
high: number
low: number
open: number
close: number
volume: number
}
```
### `ChartDimensions`
Chart dimension configuration.
```typescript
interface ChartDimensions {
width: number
height: number
}
```
### `TerminalSize`
Terminal size information.
```typescript
interface TerminalSize {
width: number
height: number
}
```
### `ExportOptions`
Export configuration options.
```typescript
interface ExportOptions {
outputPath: string
background?: 'light' | 'dark'
}
```
### `MarketData`
Market data structure for CCXT integration.
```typescript
interface MarketData {
open: number
high: number
low: number
close: number
volume: number
timestamp: number
}
```