Futures Market Trend Analyzer

Futures Market Trend Analyzer

Analyze historical price action with key technical indicators.

ZC Analysis

Price & Moving Averages

Relative Strength Index (RSI)

Settings & Data

Indicator Settings

Historical OHLC Data

Date O H L C

${value}

`; function renderCharts(chartData) { const labels = state.historicalData.map(d => d.date); const priceData = state.historicalData.map(d => d.close); const chartDefaults = { scales: { x: { type: 'time', time: { unit: 'day' }, grid: { color: '#374151' } }, y: { grid: { color: '#374151' } } } }; Chart.defaults.color = '#d1d5db'; if (priceChart) priceChart.destroy(); priceChart = new Chart(document.getElementById('price-chart'), { type: 'line', data: { labels, datasets: [ { label: 'Close Price', data: priceData, borderColor: '#e5e7eb', borderWidth: 2, pointRadius: 0 }, { label: `SMA(${state.settings.shortMa})`, data: chartData.shortMa, borderColor: '#60a5fa', borderWidth: 1.5, pointRadius: 0 }, { label: `SMA(${state.settings.longMa})`, data: chartData.longMa, borderColor: '#f59e0b', borderWidth: 1.5, pointRadius: 0 } ]}, options: chartDefaults }); if (rsiChart) rsiChart.destroy(); rsiChart = new Chart(document.getElementById('rsi-chart'), { type: 'line', data: { labels, datasets: [{ label: 'RSI', data: chartData.rsi, borderColor: '#a78bfa', borderWidth: 2, pointRadius: 0, fill: { target: 'origin', above: 'rgba(167, 139, 250, 0.1)', below: 'rgba(167, 139, 250, 0.1)' } }]}, options: { ...chartDefaults, scales: { ...chartDefaults.scales, y: { ...chartDefaults.scales.y, min: 0, max: 100 } } } }); } runAnalysisBtn.addEventListener('click', runAnalysis); // --- PDF GENERATION --- async function generatePdfReport() { const result = state.analysisResult; if (!result) return alert("Please run an analysis first."); downloadPdfBtn.disabled = true; downloadPdfBtn.textContent = 'Generating...'; const priceChartImg = priceChart.toBase64Image(); const rsiChartImg = rsiChart.toBase64Image(); const { kpis } = result; const createPdfKpi = (label, value, status = '') => `
${label}
${value}
`; const reportHtml = `

Futures Market Analysis

Contract: ${state.settings.ticker}
Date: ${new Date().toLocaleDateString()}

Key Indicator Summary

${createPdfKpi('Current Trend', kpis.trend, kpis.trend === 'Up' ? 'up' : kpis.trend === 'Down' ? 'down' : 'neutral')} ${createPdfKpi('RSI Value', kpis.rsi.toFixed(2))} ${createPdfKpi('RSI Condition', kpis.rsiCondition, 'neutral')} ${createPdfKpi('Volatility (ATR)', kpis.volatility.toFixed(2))}

Price Chart Analysis

Relative Strength Index (RSI)

`; const pdfTemplate = document.getElementById('pdf-template'); pdfTemplate.innerHTML = reportHtml; pdfTemplate.classList.remove('invisible'); try { const { jsPDF } = window.jspdf; const canvas = await html2canvas(pdfTemplate.querySelector('.pdf-report-container'), { scale: 2 }); const imgData = canvas.toDataURL('image/png'); const pdf = new jsPDF({ orientation: 'p', unit: 'pt', format: 'a4' }); pdf.addImage(imgData, 'PNG', 0, 0, pdf.internal.pageSize.getWidth(), (canvas.height * pdf.internal.pageSize.getWidth()) / canvas.width); pdf.save(`${state.settings.ticker.split(' ')[0]}_Market_Analysis.pdf`); } catch(e) { console.error('PDF Generation Error:', e); } finally { downloadPdfBtn.disabled = false; downloadPdfBtn.textContent = 'Download Analysis Report'; pdfTemplate.classList.add('invisible'); } } downloadPdfBtn.addEventListener('click', generatePdfReport); // --- INITIALIZATION --- generateSampleData(); populateSettingsUI(); renderDataTable(); attachDataListeners(); runAnalysis(); switchTab(0); });
Scroll to Top