import React, { useState, useEffect } from 'react';
import { TrendingUp, TrendingDown, DollarSign, Activity, Trophy, Zap } from 'lucide-react';
const AITradingArena = () => {
const [traders, setTraders] = useState([
{
id: 1,
name: 'Claude Sonnet',
model: 'Claude',
balance: 10000,
initialBalance: 10000,
trades: 0,
winRate: 0,
lastTrade: null,
reasoning: '',
status: 'waiting',
color: 'from-purple-500 to-pink-500'
},
{
id: 2,
name: 'GPT-4',
model: 'ChatGPT',
balance: 10000,
initialBalance: 10000,
trades: 0,
winRate: 0,
lastTrade: null,
reasoning: '',
status: 'waiting',
color: 'from-green-500 to-emerald-500'
},
{
id: 3,
name: 'Gemini Pro',
model: 'Gemini',
balance: 10000,
initialBalance: 10000,
trades: 0,
winRate: 0,
lastTrade: null,
reasoning: '',
status: 'waiting',
color: 'from-blue-500 to-cyan-500'
}
]);
const [marketData, setMarketData] = useState({
btc: 67420,
eth: 3245,
sol: 178
});
const [isTrading, setIsTrading] = useState(false);
const [currentTrader, setCurrentTrader] = useState(null);
const [logs, setLogs] = useState([]);
const [nextTradeIn, setNextTradeIn] = useState(86400); // 24 שעות בשניות
// סימולציה של שינויי שוק
useEffect(() => {
const marketInterval = setInterval(() => {
setMarketData(prev => ({
btc: prev.btc * (1 + (Math.random() - 0.5) * 0.02),
eth: prev.eth * (1 + (Math.random() - 0.5) * 0.025),
sol: prev.sol * (1 + (Math.random() - 0.5) * 0.03)
}));
}, 3000);
return () => clearInterval(marketInterval);
}, []);
// טיימר למסחר הבא
useEffect(() => {
const timer = setInterval(() => {
setNextTradeIn(prev => {
if (prev <= 1) {
if (!isTrading) {
startTradingRound();
}
return 86400;
}
return prev - 1;
});
}, 1000);
return () => clearInterval(timer);
}, [isTrading]);
const formatTime = (seconds) => {
const hours = Math.floor(seconds / 3600);
const minutes = Math.floor((seconds % 3600) / 60);
const secs = seconds % 60;
return `${hours}h ${minutes}m ${secs}s`;
};
const getAIDecision = async (trader, market) => {
// סימולציה של החלטת AI
const coins = ['BTC', 'ETH', 'SOL'];
const actions = ['BUY', 'SELL', 'HOLD'];
const coin = coins[Math.floor(Math.random() * coins.length)];
const action = actions[Math.floor(Math.random() * actions.length)];
const amount = Math.floor(Math.random() * 2000) + 500;
const reasonings = {
Claude: `ניתחתי את מגמות השוק ב-24 השעות האחרונות. ${coin} מראה פטרן חיובי עם תמיכה חזקה. אני ממליץ ${action === 'BUY' ? 'לקנות' : action === 'SELL' ? 'למכור' : 'להמתין'}.`,
ChatGPT: `בהתבסס על אינדיקטורים טכניים, ${coin} ${action === 'BUY' ? 'נמצא במחיר נמוך יחסית' : action === 'SELL' ? 'הגיע לרמת התנגדות' : 'מראה אינדיפרנטיות'}. החלטה: ${action}.`,
Gemini: `אלגוריתם הניתוח שלי מזהה ${action === 'BUY' ? 'הזדמנות קנייה' : action === 'SELL' ? 'סיכון גבוה' : 'שוק צדדי'} ב-${coin}. רמת ביטחון: ${Math.floor(Math.random() * 30) + 70}%.`
};
return {
coin,
action,
amount: action === 'HOLD' ? 0 : amount,
reasoning: reasonings[trader.model],
price: market[coin.toLowerCase()]
};
};
const executeTrade = (trader, decision) => {
let newBalance = trader.balance;
let profit = 0;
if (decision.action === 'BUY') {
// סימולציה של רווח/הפסד
const outcome = Math.random();
if (outcome > 0.45) { // 55% סיכוי להצלחה
profit = decision.amount * (Math.random() * 0.15 + 0.05);
newBalance += profit;
} else {
profit = -decision.amount * (Math.random() * 0.1);
newBalance += profit;
}
} else if (decision.action === 'SELL') {
const outcome = Math.random();
if (outcome > 0.4) {
profit = decision.amount * (Math.random() * 0.12 + 0.03);
newBalance += profit;
} else {
profit = -decision.amount * (Math.random() * 0.08);
newBalance += profit;
}
}
return { newBalance, profit };
};
const startTradingRound = async () => {
setIsTrading(true);
const newLogs = [];
for (let i = 0; i < traders.length; i++) {
const trader = traders[i];
setCurrentTrader(trader.id);
// עדכון סטטוס לאנליזה
setTraders(prev => prev.map(t =>
t.id === trader.id ? { ...t, status: 'analyzing' } : t
));
await new Promise(resolve => setTimeout(resolve, 2000));
// קבלת החלטה מה-AI
const decision = await getAIDecision(trader, marketData);
setTraders(prev => prev.map(t =>
t.id === trader.id ? { ...t, reasoning: decision.reasoning, status: 'trading' } : t
));
await new Promise(resolve => setTimeout(resolve, 1500));
// ביצוע המסחר
const result = executeTrade(trader, decision);
const newTrader = {
...trader,
balance: result.newBalance,
trades: trader.trades + 1,
winRate: result.profit > 0
? ((trader.winRate * trader.trades + 100) / (trader.trades + 1))
: ((trader.winRate * trader.trades) / (trader.trades + 1)),
lastTrade: {
coin: decision.coin,
action: decision.action,
amount: decision.amount,
profit: result.profit,
timestamp: new Date().toISOString()
},
status: 'completed'
};
setTraders(prev => prev.map(t =>
t.id === trader.id ? newTrader : t
));
// הוספה ללוג
newLogs.push({
trader: trader.name,
action: `${decision.action} ${decision.amount > 0 ? `$${decision.amount.toFixed(0)}` : ''} ${decision.coin}`,
profit: result.profit,
timestamp: new Date().toLocaleTimeString('he-IL')
});
await new Promise(resolve => setTimeout(resolve, 1000));
}
setLogs(prev => [...newLogs, ...prev].slice(0, 20));
setCurrentTrader(null);
setIsTrading(false);
// איפוס סטטוס
setTimeout(() => {
setTraders(prev => prev.map(t => ({ ...t, status: 'waiting' })));
}, 2000);
};
const calculateProfitPercent = (trader) => {
return ((trader.balance - trader.initialBalance) / trader.initialBalance * 100).toFixed(2);
};
const sortedTraders = [...traders].sort((a, b) => b.balance - a.balance);
return (
);
};
export default AITradingArena;
{/* Header */}
{/* Market Data */}
{/* Next Trade Timer */}
המסחר הבא בעוד:
{/* Leaderboard */}
AI Trading Arena
3 מודלי AI מתחרים במסחר קריפטו יומי
Bitcoin
${marketData.btc.toFixed(2)}
Ethereum
${marketData.eth.toFixed(2)}
Solana
${marketData.sol.toFixed(2)}
{formatTime(nextTradeIn)}
{sortedTraders.map((trader, index) => (
{/* Trading Log */}
{index === 0 && (
)}
{/* Status Badge */}
)}
{trader.lastTrade && (
)}
))}
{index + 1}
{trader.name}
{trader.trades} עסקאות
{trader.status === 'analyzing' && (
מנתח שוק...
)}
{trader.status === 'trading' && (
מבצע מסחר...
)}
{trader.status === 'completed' && (
✓ הושלם
)}
{trader.status === 'waiting' && (
ממתין...
)}
יתרה:
${trader.balance.toFixed(2)}
רווח/הפסד:
= 0 ? 'text-green-400' : 'text-red-400'
}`}>
{parseFloat(calculateProfitPercent(trader)) >= 0 ? : }
{calculateProfitPercent(trader)}%
אחוז הצלחה:
{trader.winRate.toFixed(1)}%
{trader.reasoning && (
חשיבת AI:
{trader.reasoning}
מסחר אחרון:
{trader.lastTrade.action} {trader.lastTrade.coin}
= 0 ? 'text-green-400' : 'text-red-400'}>
{trader.lastTrade.profit >= 0 ? '+' : ''}${trader.lastTrade.profit.toFixed(2)}
לוג מסחר בזמן אמת
{logs.length === 0 ? (
))
)}
אין מסחרים עדיין. לחץ על "התחל מסחר עכשיו" כדי להתחיל
) : (
logs.map((log, index) => (
{log.timestamp}
{log.trader}
{log.action}
= 0 ? 'text-green-400' : 'text-red-400'}`}>
{log.profit >= 0 ? '+' : ''}${log.profit.toFixed(2)}