AI-Powered Trading Signal Generator

Market & Strategy Setup

AI Model Parameters (Simplified & Conceptual)

Generated Trading Signal

Please configure parameters and click "Generate Trading Signal" on the "AI Parameters" tab.

Generated Signal: ${signal.type}

Confidence Level: ${signal.confidence}%

Simulated Current Price: ${aitgs_formatCurrency(signal.simulatedCurrentPrice)}

${signal.type !== 'HOLD' ? `

Simulated Target Price: ${aitgs_formatCurrency(signal.simulatedTargetPrice)}

` : ''}

Conceptual Rationale: ${signal.rationale}


Disclaimer: This is a conceptual tool. Signals are simulated and NOT financial advice. For educational and illustrative purposes only.

`; dlButton.style.display = 'block'; resTabLink.disabled = false; resTabLink.click(); } } window.aitgs_downloadPDF = function() { const { jsPDF } = window.jspdf; if (!jsPDF || !aitgs_signalData.inputs || !aitgs_signalData.signal) { alert("PDF library not loaded or no signal data to export. Please generate a signal first."); return; } const doc = new jsPDF(); let yPos = 20; const lineHeight = 7; const indent = 5; const pageMargin = 15; const pageWidth = doc.internal.pageSize.getWidth(); const usableWidth = pageWidth - 2 * pageMargin; doc.setFontSize(18); doc.setTextColor(0, 174, 255); // #00aeff doc.text("AI-Powered Trading Signal Report", pageWidth / 2, yPos, { align: 'center' }); yPos += lineHeight * 1.5; doc.setFontSize(10); doc.setTextColor(200,200,200); doc.text(`Report Date: ${new Date().toLocaleDateString()}`, pageWidth / 2, yPos, { align: 'center' }); yPos += lineHeight * 2.5; function addSection(title, dataObj) { if (yPos > doc.internal.pageSize.getHeight() - pageMargin - 30) { doc.addPage(); yPos = pageMargin; } doc.setFontSize(13); doc.setFont(undefined, 'bold'); doc.setTextColor(0, 198, 255); // #00c6ff doc.text(title, pageMargin, yPos); yPos += lineHeight * 1.5; doc.setFontSize(10); doc.setFont(undefined, 'normal'); doc.setTextColor(224,224,224); // #e0e0e0 for (const [key, value] of Object.entries(dataObj)) { if (yPos > doc.internal.pageSize.getHeight() - pageMargin - lineHeight) { doc.addPage(); yPos = pageMargin; } let formattedKey = key.replace(/([A-Z])/g, ' $1').replace(/^./, str => str.toUpperCase()); let valStr = String(value); // No specific currency formatting needed for most inputs here, but keep for prices. if (key.toLowerCase().includes('price')) { valStr = aitgs_formatCurrency(value); } else if (key.toLowerCase().includes('confidence')) { valStr = value + '%'; } doc.text(`${formattedKey}:`, pageMargin + indent, yPos); doc.text(valStr, pageMargin + indent + 70, yPos, {align: 'left', maxWidth: usableWidth - (indent + 70)}); yPos += lineHeight * 1.1; } yPos += lineHeight * 0.5; } const inputSummaryForPdf = { "Asset Class": aitgs_signalData.inputs.assetClass, "Trading Symbol": aitgs_signalData.inputs.tradingSymbol, "Analysis Timeframe": aitgs_signalData.inputs.analysisTimeframe, "Investor Risk Profile": aitgs_getSelectText('aitgs_risk_profile'), // Get text for PDF "Signal Sensitivity": aitgs_getSelectText('aitgs_signal_sensitivity'), "Pattern Strength": aitgs_signalData.inputs.patternStrength, "Trend Focus": aitgs_signalData.inputs.trendFocus }; addSection("Input Parameters", inputSummaryForPdf); const signalDetailsForPdf = { "Generated Signal": aitgs_signalData.signal.type, "Confidence Level": aitgs_signalData.signal.confidence, "Simulated Current Price": aitgs_signalData.signal.simulatedCurrentPrice, ...(aitgs_signalData.signal.type !== 'HOLD' && {"Simulated Target Price": aitgs_signalData.signal.simulatedTargetPrice}), // Conditionally add target price "Conceptual Rationale": aitgs_signalData.signal.rationale }; addSection("Generated Signal Details", signalDetailsForPdf); // Add disclaimer to PDF yPos += lineHeight * 2; if (yPos > doc.internal.pageSize.getHeight() - pageMargin - (lineHeight * 3)) { doc.addPage(); yPos = pageMargin; } doc.setFontSize(8); doc.setTextColor(150,150,150); // Lighter grey for disclaimer const disclaimerLines = doc.splitTextToSize("Disclaimer: This is a conceptual tool. Signals are simulated and NOT financial advice. For educational and illustrative purposes only. Always conduct your own research and consult with a qualified financial advisor before making any investment decisions.", usableWidth); doc.text(disclaimerLines, pageMargin, yPos); doc.save('AI_Trading_Signal_Report.pdf'); }
Scroll to Top