skills/charts/SKILL.md
Generate price charts and technical overlays for crypto trading
npx skillsauth add ticruz38/skills skills/chartsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Generate price charts and technical overlays for cryptocurrency trading. Creates beautiful SVG charts with candlesticks, line charts, volume bars, and moving averages.
cd skills/charts
npm install
npm run build
This skill requires the binance skill to be configured first:
# Configure binance authentication
binance-auth-cli connect --testnet # or without --testnet for production
# Check connection status
charts-cli status
# Check health
charts-cli health
# Simple line chart (last 100 candles, 1h interval)
charts-cli line BTCUSDT
# Line chart with specific interval and limit
charts-cli line BTCUSDT --interval 1d --limit 30
# Candlestick chart with volume
charts-cli candle BTCUSDT --interval 4h --limit 50 --volume
# Chart with moving averages
charts-cli line BTCUSDT --ma 7 --ma 30
# Candlestick with MAs
charts-cli candle BTCUSDT --ma 20 --ma 50 --volume
# Save to specific file
charts-cli line BTCUSDT --output ./btc_chart.svg
# Generate PNG (via SVG)
charts-cli line BTCUSDT --format png --output ./btc_chart.png
1m - 1 minute5m - 5 minutes15m - 15 minutes30m - 30 minutes1h - 1 hour4h - 4 hours1d - 1 day1w - 1 week1M - 1 monthLine Chart: Simple price line showing closing prices
charts-cli line ETHUSDT --interval 1h --limit 100
Candlestick Chart: Full OHLC with wicks and bodies
charts-cli candle BTCUSDT --interval 4h --limit 50 --volume --ma 20
# Use a specific profile (for multiple accounts)
charts-cli --profile trading line BTCUSDT
charts-cli --profile hodl candle ETHUSDT
import { ChartsSkill, getChartsSkill, ChartType, OutputFormat } from '@openclaw/charts';
// Create skill instance
const skill = getChartsSkill('default');
// Check connection
const connected = await skill.isConnected();
// Generate line chart
const lineChart = await skill.generateLineChart('BTCUSDT', {
interval: '1h',
limit: 100,
movingAverages: [7, 30],
width: 1200,
height: 600,
});
// Generate candlestick chart
const candleChart = await skill.generateCandlestickChart('BTCUSDT', {
interval: '4h',
limit: 50,
showVolume: true,
movingAverages: [20, 50],
width: 1200,
height: 700,
});
// Save to file
await skill.saveChart(candleChart, './btc_chart.svg', 'svg');
// Calculate moving averages only
const klines = await skill.getKlines('BTCUSDT', '1h', 100);
const ma20 = skill.calculateSMA(klines, 20);
const ma50 = skill.calculateSMA(klines, 50);
// Cleanup
await skill.close();
interface LineChartOptions {
interval?: string; // Kline interval (default: '1h')
limit?: number; // Number of candles (default: 100, max: 1000)
movingAverages?: number[]; // MA periods to display (e.g., [7, 30])
width?: number; // Chart width in pixels (default: 1200)
height?: number; // Chart height in pixels (default: 600)
theme?: 'light' | 'dark'; // Color theme (default: 'dark')
title?: string; // Custom chart title
}
interface CandlestickChartOptions {
interval?: string; // Kline interval (default: '1h')
limit?: number; // Number of candles (default: 100)
showVolume?: boolean; // Show volume bars (default: false)
movingAverages?: number[]; // MA periods to display
width?: number; // Chart width in pixels (default: 1200)
height?: number; // Chart height in pixels (default: 700)
theme?: 'light' | 'dark'; // Color theme (default: 'dark')
title?: string; // Custom chart title
}
Charts are generated as SVG strings that can be:
.svg filesCalculates the average price over a specified period.
// Calculate 20-period SMA
const ma20 = skill.calculateSMA(klines, 20);
// Multiple MAs
const ma7 = skill.calculateSMA(klines, 7);
const ma30 = skill.calculateSMA(klines, 30);
Dark Theme (default):
Light Theme:
Common errors and solutions:
binance-auth-cli connect first@openclaw/auth-provider: Authentication provider@openclaw/binance: Binance skill for price dataChart data comes from Binance API klines (candlestick) endpoint. All price data is real-time from the exchange.
import {
ChartsSkill,
ChartsSkillConfig,
LineChartOptions,
CandlestickChartOptions,
ChartType,
OutputFormat,
ChartResult,
Theme
} from '@openclaw/charts';
MIT
testing
Suggest recipes based on dietary preferences, available ingredients, and cuisine preferences
development
Extract data from receipt photos using Google Vision API
business
QuickBooks Online integration for accounting sync - sync customers, invoices, and transactions with two-way sync and conflict resolution
testing
QuickBooks OAuth adapter for QuickBooks Online accounting integration. Built on top of auth-provider for secure token management with automatic refresh, multi-profile support, sandbox/production toggle, and health checks.