UNPKG

candlestick-chart-generator

Version:

A Node.js library for generating candlestick chart screenshots using financial data

212 lines (196 loc) 8.27 kB
const CandlestickChartGenerator = require('../index'); /** * Advanced usage examples demonstrating various features */ async function advancedExamples() { const generator = new CandlestickChartGenerator({ headless: true }); try { console.log('=== Advanced Candlestick Chart Generator Examples ===\n'); // Example 1: Multiple timeframes for the same symbol console.log('1. Generating multiple timeframes for AAPL...'); const intervals = ['1d', '1wk', '1mo']; for (const interval of intervals) { await generator.generateChartScreenshot({ symbol: 'AAPL', interval: interval, startDate: '2023-01-01', endDate: '2023-12-31', outputPath: `examples/aapl_${interval}_chart.png`, width: 1200, height: 600 }); console.log(`✅ AAPL ${interval} chart saved`); } // Example 2: Crypto portfolio charts console.log('\n2. Generating crypto portfolio charts...'); const cryptos = ['BTC-USD', 'ETH-USD', 'ADA-USD']; for (const crypto of cryptos) { await generator.generateChartScreenshot({ symbol: crypto, interval: '1d', startDate: new Date(Date.now() - 30 * 24 * 60 * 60 * 1000), // 30 days endDate: new Date(), outputPath: `examples/${crypto.replace('-', '_').toLowerCase()}_30d.png`, width: 1000, height: 500, chartOptions: { layout: { background: { color: '#0a0e27' }, textColor: '#ffffff' }, grid: { vertLines: { color: '#1e2761' }, horzLines: { color: '#1e2761' } } } }); console.log(`✅ ${crypto} chart saved`); } // Example 3: FOREX major pairs console.log('\n3. Generating FOREX major pairs...'); const forexPairs = ['EURUSD=X', 'GBPUSD=X', 'USDJPY=X', 'AUDUSD=X']; for (const pair of forexPairs) { await generator.generateChartScreenshot({ symbol: pair, interval: '1h', startDate: new Date(Date.now() - 7 * 24 * 60 * 60 * 1000), // 7 days endDate: new Date(), outputPath: `examples/${pair.replace('=X', '').toLowerCase()}_7d.png`, width: 1200, height: 600, chartOptions: { layout: { background: { color: '#ffffff' }, textColor: '#000000' }, grid: { vertLines: { color: '#f0f0f0' }, horzLines: { color: '#f0f0f0' } } } }); console.log(`✅ ${pair} chart saved`); } // Example 4: High-resolution charts for printing console.log('\n4. Generating high-resolution chart for printing...'); await generator.generateChartScreenshot({ symbol: 'SPY', interval: '1d', startDate: '2023-01-01', endDate: '2023-12-31', outputPath: 'examples/spy_high_res.png', width: 2400, // High resolution height: 1600, chartOptions: { layout: { background: { color: '#ffffff' }, textColor: '#000000' } } }); console.log('✅ High-resolution SPY chart saved'); // Example 5: Intraday trading charts console.log('\n5. Generating intraday trading charts...'); const tradingSymbols = ['TSLA', 'NVDA', 'AMD']; for (const symbol of tradingSymbols) { const params = { symbol: symbol, interval: '5m', startDate: new Date(Date.now() - 24 * 60 * 60 * 1000), // Last 24 hours endDate: new Date(), outputPath: `examples/${symbol.toLowerCase()}_5m_intraday.png`, width: 1400, height: 800, chartOptions: { layout: { background: { color: '#131722' }, textColor: '#d1d4dc' } } }; await generator.generateChartScreenshot(params); console.log(`✅ ${symbol} 5-minute intraday chart saved`); } // Add a dedicated NVDA 1h example showing desiredBars (~35 calendar days ≈ 160 stock bars) console.log('\n5b. Generating NVDA 1-hour with desired bar count...'); await generator.generateChartScreenshot({ symbol: 'NVDA', interval: '1h', // no startDate provided; compute from desiredBars for a consistent look endDate: new Date(), desiredBars: 160, // ≈ ~35 calendar days for stocks outputPath: 'examples/nvda_1h_chart.png', width: 1400, height: 800, chartOptions: { layout: { background: { color: '#131722' }, textColor: '#d1d4dc' } } }); console.log('✅ NVDA 1-hour chart with desiredBars saved'); // Example 6: Custom styled chart with specific colors console.log('\n6. Generating custom styled chart...'); await generator.generateChartScreenshot({ symbol: 'AMZN', interval: '1d', startDate: '2023-01-01', endDate: '2023-12-31', outputPath: 'examples/amzn_custom_style.png', width: 1200, height: 600, chartOptions: { layout: { background: { color: '#2c2c54' }, textColor: '#ffffff' }, grid: { vertLines: { color: '#40407a' }, horzLines: { color: '#40407a' } }, timeScale: { borderColor: '#706fd3' }, rightPriceScale: { borderColor: '#706fd3' } } }); console.log('✅ Custom styled AMZN chart saved'); // Example 7: Generate charts as base64 for web applications console.log('\n7. Generating charts as base64 data...'); const symbols = ['GOOGL', 'META', 'NFLX']; const base64Results = []; for (const symbol of symbols) { const base64Data = await generator.generateChartBase64({ symbol: symbol, interval: '1d', startDate: '2023-06-01', endDate: '2023-12-31', width: 800, height: 400 }); base64Results.push({ symbol, dataLength: base64Data.length }); console.log(`✅ ${symbol} base64 chart generated (${base64Data.length} chars)`); } console.log('\n📊 Base64 Results Summary:'); base64Results.forEach(result => { console.log(` ${result.symbol}: ${result.dataLength} characters`); }); console.log('\n🎉 All advanced examples completed successfully!'); console.log('\n📁 Generated files:'); console.log(' - Multiple timeframe charts for AAPL'); console.log(' - Crypto portfolio charts (BTC, ETH, ADA)'); console.log(' - FOREX major pairs charts'); console.log(' - High-resolution SPY chart'); console.log(' - Intraday trading charts (TSLA, NVDA, AMD)'); console.log(' - NVDA 1h chart with desiredBars'); console.log(' - Custom styled AMZN chart'); console.log(' - Base64 data for GOOGL, META, NFLX'); } catch (error) { console.error('❌ Error in advanced examples:', error.message); } finally { // Always close the browser to free resources await generator.close(); } } // Run the advanced examples advancedExamples();