说明
<!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>🤖 交易人工智能代理</h1> <p>先进的外汇自动交易系统</p> </div> <div class="status-bar"> <div class="status-item"> <h3>系统状态</h3> <div class="status-value"> <span id="system-status">停止</span> <span class="indicator inactive" id="system-indicator"></span> </div> </div> <div class="status-item"> <h3>盈亏</h3> <div class="status-value" id="pnl">$0.00</div> </div> <div class="status-item"> <h3>交易次数</h3> <div class="status-value" id="trades-count">0</div> </div> <div class="status-item"> <h3>成功率</h3> <div class="status-value" id="success-rate">0%</div> </div> </div> <div class="controls"> <div class="control-panel"> <h3>⚙️ 交易设置</h3> <div class="form-group"> <label>货币对</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>交易量 (手)</label> <input type="number" id="lot-size" value="0.01" min="0.01" max="10" step="0.01"> </div> <div class="form-group"> <label>交易策略</label> <select id="strategy"> <option value="scalping">剥头皮</option> <option value="swing">波段交易</option> <option value="trend">趋势跟踪</option> <option value="reversal">反转</option> </select> </div> </div> <div class="control-panel"> <h3>🛡️ 风险管理</h3> <div class="form-group"> <label>止损 (点)</label> <input type="number" id="stop-loss" value="20" min="5" max="500"> </div> <div class="form-group"> <label>止盈 (点)</label> <input type="number" id="take-profit" value="30" min="10" max="1000"> </div> <div class="form-group"> <label>最大风险 (%)</label> <input type="number" id="max-risk" value="2" min="0.5" max="10" step="0.1"> </div> </div> <div class="control-panel"> <h3>📊 技术指标</h3> <div class="form-group"> <label> <input type="checkbox" id="use-ma" checked> 使用移动平均线 </label> </div> <div class="form-group"> <label> <input type="checkbox" id="use-rsi" checked> 使用RSI </label> </div> <div class="form-group"> <label> <input type="checkbox" id="use-macd"> 使用MACD </label> </div> <div class="form-group"> <label> <input type="checkbox" id="use-bollinger"> 使用布林带 </label> </div> </div> </div> <div style="text-align: center; margin: 20px 0;"> <button class="btn btn-primary" onclick="startTrading()">🚀 开始交易</button> <button class="btn btn-danger" onclick="stopTrading()">⏹️ 停止交易</button> <button class="btn btn-warning" onclick="pauseTrading()">⏸️ 暂停</button> <button class="btn btn-warning" onclick="resetSystem()">🔄 重置</button> </div> <div class="chart-container"> <h3>📈 性能监控</h3> <p>实时性能分析</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;"> 最后更新: <span id="last-update">--</span> </p> </div> <div class="trading-log"> <h3>📋 交易日志</h3> <div id="log-container"> <div class="log-entry info"> <strong>信息:</strong> 系统已准备好交易。请点击“开始交易”以启动。 </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(`成功交易: ${signal} ${pair} - 盈利: +$${pnl.toFixed(2)}`, 'success'); } else { addLogEntry(`失败交易: ${signal} ${pair} - 亏损: -$${Math.abs(pnl).toFixed(2)}`, 'error'); } updateStats(); } // 主交易循环 function tradingLoop() { if (!isTrading || isPaused) return; generateMarketData(); const analysis = analyzeSignals(); if (analysis && analysis.signal) { addLogEntry(`检测到信号: ${analysis.signal} - 置信度: ${(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('运行中', true); addLogEntry('自动交易已启动', 'success'); tradingInterval = setInterval(tradingLoop, 3000); // 每3秒 } // 停止交易 function stopTrading() { if (!isTrading) return; isTrading = false; isPaused = false; updateSystemStatus('停止', false); addLogEntry('交易已停止', 'error'); clearInterval(tradingInterval); } // 暂停交易 function pauseTrading() { if (!isTrading) return; isPaused = !isPaused; updateSystemStatus(isPaused ? '暂停中' : '运行中', !isPaused); addLogEntry(isPaused ? '交易已暂停' : '交易已恢复', '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>信息:</strong> 系统已重置。准备重新交易。 </div> `; document.getElementById('performance-progress').style.width = '0%'; document.getElementById('last-update').textContent = '--'; } // 初始化系统 document.addEventListener('DOMContentLoaded', function() { generateMarketData(); updateStats(); addLogEntry('系统加载成功', 'success'); }); </script> </body> </html>
摘要
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.
