Descripción
<!DOCTYPE html> <html lang="ar" dir="rtl"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>وكيل الذكاء الاصطناعي للتداول</title> <style> * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: 'Arial', sans-serif; background: linear-gradient(135deg, #1e3c72 0%, #2a5298 100%); color: white; min-height: 100vh; padding: 20px; } .container { max-width: 1200px; margin: 0 auto; background: rgba(255, 255, 255, 0.1); backdrop-filter: blur(10px); border-radius: 20px; padding: 30px; box-shadow: 0 20px 40px rgba(0, 0, 0, 0.3); } .header { text-align: center; margin-bottom: 30px; border-bottom: 2px solid rgba(255, 255, 255, 0.2); padding-bottom: 20px; } .header h1 { font-size: 2.5em; margin-bottom: 10px; text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.5); } .status-bar { display: flex; justify-content: space-around; margin-bottom: 30px; flex-wrap: wrap; } .status-item { background: rgba(255, 255, 255, 0.15); padding: 15px; border-radius: 10px; min-width: 150px; text-align: center; margin: 5px; border: 1px solid rgba(255, 255, 255, 0.2); } .status-item h3 { margin-bottom: 5px; font-size: 0.9em; opacity: 0.8; } .status-value { font-size: 1.2em; font-weight: bold; } .controls { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 20px; margin-bottom: 30px; } .control-panel { background: rgba(255, 255, 255, 0.1); padding: 20px; border-radius: 15px; border: 1px solid rgba(255, 255, 255, 0.2); } .control-panel h3 { margin-bottom: 15px; color: #FFD700; font-size: 1.1em; } .form-group { margin-bottom: 15px; } .form-group label { display: block; margin-bottom: 5px; font-size: 0.9em; opacity: 0.9; } .form-group input, .form-group select { width: 100%; padding: 10px; border: none; border-radius: 8px; background: rgba(255, 255, 255, 0.15); color: white; font-size: 0.9em; } .form-group input::placeholder { color: rgba(255, 255, 255, 0.7); } .btn { padding: 12px 25px; border: none; border-radius: 8px; cursor: pointer; font-size: 1em; font-weight: bold; transition: all 0.3s ease; margin: 5px; } .btn-primary { background: linear-gradient(45deg, #00c853, #00e676); color: white; } .btn-danger { background: linear-gradient(45deg, #f44336, #ff5722); color: white; } .btn-warning { background: linear-gradient(45deg, #ff9800, #ffc107); color: white; } .btn:hover { transform: translateY(-2px); box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3); } .trading-log { background: rgba(0, 0, 0, 0.3); border-radius: 15px; padding: 20px; margin-top: 20px; max-height: 300px; overflow-y: auto; border: 1px solid rgba(255, 255, 255, 0.2); } .log-entry { padding: 10px; border-bottom: 1px solid rgba(255, 255, 255, 0.1); margin-bottom: 10px; border-radius: 8px; } .log-entry.success { background: rgba(76, 175, 80, 0.2); border-left: 4px solid #4CAF50; } .log-entry.error { background: rgba(244, 67, 54, 0.2); border-left: 4px solid #f44336; } .log-entry.info { background: rgba(33, 150, 243, 0.2); border-left: 4px solid #2196F3; } .chart-container { background: rgba(255, 255, 255, 0.1); border-radius: 15px; padding: 20px; margin-top: 20px; text-align: center; border: 1px solid rgba(255, 255, 255, 0.2); } .indicator { display: inline-block; width: 10px; height: 10px; border-radius: 50%; margin-left: 5px; } .indicator.active { background: #4CAF50; animation: pulse 2s infinite; } .indicator.inactive { background: #f44336; } @keyframes pulse { 0% { transform: scale(1); } 50% { transform: scale(1.2); } 100% { transform: scale(1); } } .progress-bar { width: 100%; height: 8px; background: rgba(255, 255, 255, 0.2); border-radius: 4px; overflow: hidden; margin-top: 10px; } .progress-fill { height: 100%; background: linear-gradient(90deg, #00c853, #00e676); width: 0%; transition: width 0.3s ease; } @media (max-width: 768px) { .controls { grid-template-columns: 1fr; } .status-bar { flex-direction: column; align-items: center; } .container { padding: 20px; } } </style> </head> <body> <div class="container"> <div class="header"> <h1>🤖 Agente de IA para Trading</h1> <p>Sistema avanzado de trading automático para Forex</p> </div> <div class="status-bar"> <div class="status-item"> <h3>Estado del sistema</h3> <div class="status-value"> <span id="system-status">Detenido</span> <span class="indicator inactive" id="system-indicator"></span> </div> </div> <div class="status-item"> <h3>Ganancia/Pérdida</h3> <div class="status-value" id="pnl">$0.00</div> </div> <div class="status-item"> <h3>Número de operaciones</h3> <div class="status-value" id="trades-count">0</div> </div> <div class="status-item"> <h3>Tasa de éxito</h3> <div class="status-value" id="success-rate">0%</div> </div> </div> <div class="controls"> <div class="control-panel"> <h3>⚙️ Configuración de trading</h3> <div class="form-group"> <label>Par de divisas</label> <select id="currency-pair"> <option value="EURUSD">EUR/USD</option> <option value="GBPUSD">GBP/USD</option> <option value="USDJPY">USD/JPY</option> <option value="USDCHF">USD/CHF</option> <option value="AUDUSD">AUD/USD</option> </select> </div> <div class="form-group"> <label>Tamaño de la operación (Lote)</label> <input type="number" id="lot-size" value="0.01" min="0.01" max="10" step="0.01"> </div> <div class="form-group"> <label>Estrategia de trading</label> <select id="strategy"> <option value="scalping">Scalping</option> <option value="swing">Swing Trading</option> <option value="trend">Seguimiento de tendencia</option> <option value="reversal">Reversión</option> </select> </div> </div> <div class="control-panel"> <h3>🛡️ Gestión de riesgos</h3> <div class="form-group"> <label>Stop Loss (puntos)</label> <input type="number" id="stop-loss" value="20" min="5" max="500"> </div> <div class="form-group"> <label>Take Profit (puntos)</label> <input type="number" id="take-profit" value="30" min="10" max="1000"> </div> <div class="form-group"> <label>Riesgo máximo (%)</label> <input type="number" id="max-risk" value="2" min="0.5" max="10" step="0.1"> </div> </div> <div class="control-panel"> <h3>📊 Indicadores técnicos</h3> <div class="form-group"> <label> <input type="checkbox" id="use-ma" checked> Usar media móvil </label> </div> <div class="form-group"> <label> <input type="checkbox" id="use-rsi" checked> Usar RSI </label> </div> <div class="form-group"> <label> <input type="checkbox" id="use-macd"> Usar MACD </label> </div> <div class="form-group"> <label> <input type="checkbox" id="use-bollinger"> Usar Bandas de Bollinger </label> </div> </div> </div> <div style="text-align: center; margin: 20px 0;"> <button class="btn btn-primary" onclick="startTrading()">🚀 Iniciar trading</button> <button class="btn btn-danger" onclick="stopTrading()">⏹️ Detener trading</button> <button class="btn btn-warning" onclick="pauseTrading()">⏸️ Pausar</button> <button class="btn btn-warning" onclick="resetSystem()">🔄 Reiniciar</button> </div> <div class="chart-container"> <h3>📈 Monitoreo de rendimiento</h3> <p>Análisis de rendimiento en tiempo real</p> <div class="progress-bar"> <div class="progress-fill" id="performance-progress"></div> </div> <p style="margin-top: 10px; font-size: 0.9em; opacity: 0.8;"> Última actualización: <span id="last-update">--</span> </p> </div> <div class="trading-log"> <h3>📋 Registro de trading</h3> <div id="log-container"> <div class="log-entry info"> <strong>Información:</strong> El sistema está listo para operar. Por favor, presione "Iniciar trading" para comenzar. </div> </div> </div> </div> <script> // متغيرات النظام let isTrading = false; let isPaused = false; let tradingInterval; let totalTrades = 0; let successfulTrades = 0; let currentPnL = 0; let marketData = {}; // تحديث الحالة function updateSystemStatus(status, isActive) { const statusEl = document.getElementById('system-status'); const indicatorEl = document.getElementById('system-indicator'); statusEl.textContent = status; indicatorEl.className = `indicator ${isActive ? 'active' : 'inactive'}`; } // تحديث الإحصائيات function updateStats() { document.getElementById('trades-count').textContent = totalTrades; document.getElementById('success-rate').textContent = totalTrades > 0 ? Math.round((successfulTrades / totalTrades) * 100) + '%' : '0%'; document.getElementById('pnl').textContent = (currentPnL >= 0 ? '+' : '') + '$' + currentPnL.toFixed(2); document.getElementById('pnl').style.color = currentPnL >= 0 ? '#4CAF50' : '#f44336'; } // إضافة سجل function addLogEntry(message, type = 'info') { const logContainer = document.getElementById('log-container'); const entry = document.createElement('div'); entry.className = `log-entry ${type}`; const timestamp = new Date().toLocaleTimeString('ar-SA'); entry.innerHTML = `<strong>${timestamp}:</strong> ${message}`; logContainer.insertBefore(entry, logContainer.firstChild); // إبقاء آخر 50 سجل فقط if (logContainer.children.length > 50) { logContainer.removeChild(logContainer.lastChild); } } // محاكاة بيانات السوق function generateMarketData() { const pairs = ['EURUSD', 'GBPUSD', 'USDJPY', 'USDCHF', 'AUDUSD']; pairs.forEach(pair => { marketData[pair] = { price: Math.random() * 2 + 1, change: (Math.random() - 0.5) * 0.01, volume: Math.floor(Math.random() * 1000000), rsi: Math.floor(Math.random() * 100), ma: Math.random() * 2 + 1 }; }); } // تحليل الإشارات function analyzeSignals() { const pair = document.getElementById('currency-pair').value; const strategy = document.getElementById('strategy').value; const useMA = document.getElementById('use-ma').checked; const useRSI = document.getElementById('use-rsi').checked; const data = marketData[pair]; if (!data) return null; let signal = null; let confidence = 0; // تحليل RSI if (useRSI) { if (data.rsi < 30) { signal = 'BUY'; confidence += 0.3; } else if (data.rsi > 70) { signal = 'SELL'; confidence += 0.3; } } // تحليل المتوسط المتحرك if (useMA) { if (data.price > data.ma) { if (signal === 'BUY' || signal === null) { signal = 'BUY'; confidence += 0.3; } } else { if (signal === 'SELL' || signal === null) { signal = 'SELL'; confidence += 0.3; } } } // تحليل الاستراتيجية if (strategy === 'scalping') { confidence += 0.2; } else if (strategy === 'trend') { confidence += 0.4; } return { signal, confidence }; } // تنفيذ الصفقة function executeTrade(signal, confidence) { if (confidence < 0.6) return; // حد أدنى للثقة const pair = document.getElementById('currency-pair').value; const lotSize = document.getElementById('lot-size').value; const stopLoss = document.getElementById('stop-loss').value; const takeProfit = document.getElementById('take-profit').value; totalTrades++; // محاكاة نتيجة الصفقة const success = Math.random() < confidence; const pnl = success ? (parseFloat(takeProfit) * parseFloat(lotSize) * 10) : (-parseFloat(stopLoss) * parseFloat(lotSize) * 10); currentPnL += pnl; if (success) { successfulTrades++; addLogEntry(`Operación exitosa: ${signal} ${pair} - Ganancia: +$${pnl.toFixed(2)}`, 'success'); } else { addLogEntry(`Operación fallida: ${signal} ${pair} - Pérdida: -$${Math.abs(pnl).toFixed(2)}`, 'error'); } updateStats(); } // حلقة التداول الرئيسية function tradingLoop() { if (!isTrading || isPaused) return; generateMarketData(); const analysis = analyzeSignals(); if (analysis && analysis.signal) { addLogEntry(`Se detectó señal: ${analysis.signal} - Confianza: ${(analysis.confidence * 100).toFixed(1)}%`, 'info'); executeTrade(analysis.signal, analysis.confidence); } // تحديث شريط التقدم const progress = document.getElementById('performance-progress'); progress.style.width = Math.min((successfulTrades / Math.max(totalTrades, 1)) * 100, 100) + '%'; // تحديث آخر تحديث document.getElementById('last-update').textContent = new Date().toLocaleTimeString('ar-SA'); } // بدء التداول function startTrading() { if (isTrading) return; isTrading = true; isPaused = false; updateSystemStatus('Activo', true); addLogEntry('Trading automático iniciado', 'success'); tradingInterval = setInterval(tradingLoop, 3000); // كل 3 ثوان } // إيقاف التداول function stopTrading() { if (!isTrading) return; isTrading = false; isPaused = false; updateSystemStatus('Detenido', false); addLogEntry('Trading detenido', 'error'); clearInterval(tradingInterval); } // إيقاف مؤقت function pauseTrading() { if (!isTrading) return; isPaused = !isPaused; updateSystemStatus(isPaused ? 'Pausado' : 'Activo', !isPaused); addLogEntry(isPaused ? 'Trading pausado' : 'Trading reanudado', 'info'); } // إعادة تعيين النظام function resetSystem() { stopTrading(); totalTrades = 0; successfulTrades = 0; currentPnL = 0; updateStats(); const logContainer = document.getElementById('log-container'); logContainer.innerHTML = ` <div class="log-entry info"> <strong>Información:</strong> Sistema reiniciado. Listo para operar de nuevo. </div> `; document.getElementById('performance-progress').style.width = '0%'; document.getElementById('last-update').textContent = '--'; } // تهيئة النظام document.addEventListener('DOMContentLoaded', function() { generateMarketData(); updateStats(); addLogEntry('Sistema cargado con éxito', 'success'); }); </script> </body> </html>
Resumen
The system integrates technical indicators like Moving Average (MA), Relative Strength Index (RSI), MACD, and Bollinger Bands to analyze market signals and generate trade decisions. It evaluates signal confidence before executing trades, simulating outcomes based on configured parameters. Real-time performance monitoring includes profit/loss tracking, trade count, and success rate, with a detailed trading log for transparency.
Control features allow starting, stopping, pausing, and resetting the trading process. The interface provides a status overview and performance progress visualization, supporting informed management of automated trading activities.
