3.9 KiB
3.9 KiB
Chart Utilities - Standard OHLC Plotting
Overview
The chart_utils.py module provides convenience functions for creating beautiful, professional OHLC candlestick charts with a consistent look and feel. This is designed to be used by the LLM in analyze_chart_data scripts, eliminating the need to write custom matplotlib code for every chart.
Key Features
- Beautiful by default: Uses mplfinance with seaborn-inspired aesthetics
- Consistent styling: Professional color scheme (teal green up, coral red down)
- Easy to use: Simple function calls instead of complex matplotlib code
- Customizable: Supports all mplfinance options via kwargs
- Volume integration: Optional volume subplot
Installation
The required package mplfinance has been added to requirements.txt:
pip install mplfinance
Available Functions
1. plot_ohlc(df, title=None, volume=True, figsize=(14, 8), **kwargs)
Main function for creating standard OHLC candlestick charts.
Parameters:
df: pandas DataFrame with DatetimeIndex and OHLCV columnstitle: Optional chart titlevolume: Whether to include volume subplot (default: True)figsize: Figure size in inches (default: (14, 8))**kwargs: Additional mplfinance.plot() arguments
Example:
fig = plot_ohlc(df, title='BTC/USDT 15min', volume=True)
2. add_indicators_to_plot(df, indicators, **plot_kwargs)
Creates OHLC chart with technical indicators overlaid.
Parameters:
df: DataFrame with OHLCV data and indicator columnsindicators: Dict mapping indicator column names to display parameters**plot_kwargs: Additional arguments for plot_ohlc()
Example:
df['SMA_20'] = df['close'].rolling(20).mean()
df['SMA_50'] = df['close'].rolling(50).mean()
fig = add_indicators_to_plot(
df,
indicators={
'SMA_20': {'color': 'blue', 'width': 1.5},
'SMA_50': {'color': 'red', 'width': 1.5}
},
title='Price with Moving Averages'
)
3. Preset Functions
plot_price_volume(df, title=None)- Standard price + volume chartplot_price_only(df, title=None)- Candlesticks without volume
Integration with analyze_chart_data
These functions are automatically available in the analyze_chart_data tool's script environment:
# In an analyze_chart_data script:
# df is already provided
# Simple usage
fig = plot_ohlc(df, title='Price Action')
# With indicators
df['SMA'] = df['close'].rolling(20).mean()
fig = add_indicators_to_plot(
df,
indicators={'SMA': {'color': 'blue', 'width': 1.5}},
title='Price with SMA'
)
# Return data for the assistant
df[['close', 'SMA']].tail(10)
Styling
The default style includes:
- Up candles: Teal green (#26a69a)
- Down candles: Coral red (#ef5350)
- Background: Light gray with white axes
- Grid: Subtle dashed lines with 30% alpha
- Professional fonts: Clean, readable sizes
Why This Matters
Before:
# LLM had to write this every time
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(12, 6))
ax.plot(df.index, df['close'], label='Close')
# ... lots more code for styling, colors, etc.
After:
# LLM can now just do this
fig = plot_ohlc(df, title='BTC/USDT')
Benefits:
- ✅ Less code to generate → faster response
- ✅ Consistent appearance across all charts
- ✅ Professional look out of the box
- ✅ Easier to maintain and customize
- ✅ Better use of mplfinance's candlestick rendering
Example Output
See chart_utils_example.py for runnable examples demonstrating:
- Basic OHLC chart with volume
- OHLC chart with multiple indicators
- Price-only chart
- Custom styling options
File Locations
- Main module:
backend/src/agent/tools/chart_utils.py - Integration:
backend/src/agent/tools/chart_tools.py(lines 306-328) - Examples:
backend/src/agent/tools/chart_utils_example.py - Dependency:
backend/requirements.txt(mplfinance added)