From 7d88edb6e7305650535805155fa760f2f2dadd41 Mon Sep 17 00:00:00 2001 From: Michael Simard Date: Fri, 26 Dec 2025 12:15:27 -0600 Subject: [PATCH] Add example candlestick chart to examples directory MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Save AAPL 30-day candlestick chart as reference - Add README explaining chart features and data source - Example shows green/red candles with dark theme 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 --- examples/README.md | 22 ++++++++++++++++++++++ examples/candlestick_chart_example.png | Bin 0 -> 21329 bytes 2 files changed, 22 insertions(+) create mode 100644 examples/README.md create mode 100644 examples/candlestick_chart_example.png diff --git a/examples/README.md b/examples/README.md new file mode 100644 index 0000000..05a037c --- /dev/null +++ b/examples/README.md @@ -0,0 +1,22 @@ +# Chart Examples + +This directory contains example chart images generated by the Discord Stock Bot. + +## Candlestick Chart + +**File:** `candlestick_chart_example.png` + +**Description:** 30-day daily candlestick chart for AAPL generated using Polygon.io data and matplotlib. + +**Features:** +- Green candles: Closing price > Opening price (bullish) +- Red candles: Closing price < Opening price (bearish) +- Dark theme optimized for Discord +- High/low wicks showing intraday range +- 30 days of historical data + +**Data Source:** Polygon.io API (free tier) +**Resolution:** Daily (1 day per candle) +**Chart Library:** matplotlib 3.8.2 + +This chart is automatically generated and attached to Discord embeds when users execute `!stock AAPL` or similar commands. diff --git a/examples/candlestick_chart_example.png b/examples/candlestick_chart_example.png new file mode 100644 index 0000000000000000000000000000000000000000..cf4732a6b2c675ea53892dbc20bfd54ef2df939e GIT binary patch literal 21329 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