187 lines
11 KiB
TypeScript
187 lines
11 KiB
TypeScript
export const portfolioData = {
|
|
netPnl: 1284.5,
|
|
netPnlPercent: 5.14,
|
|
totalCapital: 25000,
|
|
deployed: 18450,
|
|
available: 6550,
|
|
utilization: 73.8,
|
|
realizedPnl: 890.2,
|
|
unrealizedPnl: 394.3,
|
|
};
|
|
|
|
export const winRates = [
|
|
{ label: '24H', value: 75, active: true },
|
|
{ label: '7D', value: 68, active: false },
|
|
{ label: '30D', value: 71, active: false },
|
|
{ label: 'ALL', value: 66, active: false },
|
|
];
|
|
|
|
export const marketTicker = [
|
|
{ symbol: 'BTC/USDT', price: 67432.1, change: 2.41 },
|
|
{ symbol: 'ETH/USDT', price: 3521.8, change: -0.82 },
|
|
{ symbol: 'SOL/USDT', price: 142.55, change: 5.12 },
|
|
{ symbol: 'AVAX/USDT', price: 38.9, change: 1.44 },
|
|
{ symbol: 'DOGE/USDT', price: 0.1842, change: -2.15 },
|
|
];
|
|
|
|
export type AlertType = 'signal' | 'error' | 'pulse' | 'info';
|
|
|
|
export interface Alert {
|
|
id: string;
|
|
type: AlertType;
|
|
symbol: string;
|
|
message: string;
|
|
timestamp: string;
|
|
}
|
|
|
|
export const alerts: Alert[] = [
|
|
{ id: '1', type: 'signal', symbol: 'SOL/USDT', message: 'BUY signal triggered — EMA crossover confirmed on 1H', timestamp: '2m ago' },
|
|
{ id: '2', type: 'error', symbol: 'ETH/USDT', message: 'STOP LOSS hit — exited position at $3,480.00', timestamp: '18m ago' },
|
|
{ id: '3', type: 'signal', symbol: 'BTC/USDT', message: 'Position opened: LONG 0.05 BTC @ $67,100', timestamp: '1h ago' },
|
|
{ id: '4', type: 'pulse', symbol: 'BTC/USDT', message: 'Volatility spike detected — RSI approaching overbought', timestamp: '2h ago' },
|
|
{ id: '5', type: 'info', symbol: 'ALL', message: 'Daily profit target reached for Aggressive Bot profile', timestamp: '4h ago' },
|
|
];
|
|
|
|
export interface Position {
|
|
id: string;
|
|
symbol: string;
|
|
side: 'BUY' | 'SELL';
|
|
size: number;
|
|
entryPrice: number;
|
|
currentPrice: number;
|
|
stopLoss: number;
|
|
takeProfit: number;
|
|
unrealizedPnl: number;
|
|
unrealizedPnlPercent: number;
|
|
marketValue: number;
|
|
profileName: string;
|
|
source: 'BOT' | 'MANUAL';
|
|
tradeId: string;
|
|
sparkData: number[];
|
|
}
|
|
|
|
export const positions: Position[] = [
|
|
{ id: '1', symbol: 'BTC/USDT', side: 'BUY', size: 0.05, entryPrice: 67100, currentPrice: 67432.1, stopLoss: 66200, takeProfit: 69000, unrealizedPnl: 16.61, unrealizedPnlPercent: 0.49, marketValue: 3371.61, profileName: 'Aggressive Bot', source: 'BOT', tradeId: 'TRD-001', sparkData: [67100, 67200, 67150, 67300, 67250, 67350, 67400, 67432, 67410, 67450, 67420, 67432] },
|
|
{ id: '2', symbol: 'ETH/USDT', side: 'BUY', size: 1.5, entryPrice: 3480, currentPrice: 3521.8, stopLoss: 3380, takeProfit: 3700, unrealizedPnl: 62.7, unrealizedPnlPercent: 1.2, marketValue: 5282.7, profileName: 'Balanced Core', source: 'BOT', tradeId: 'TRD-002', sparkData: [3480, 3490, 3475, 3500, 3510, 3495, 3515, 3520, 3510, 3525, 3518, 3521] },
|
|
{ id: '3', symbol: 'SOL/USDT', side: 'BUY', size: 50, entryPrice: 138.2, currentPrice: 142.55, stopLoss: 132, takeProfit: 155, unrealizedPnl: 217.5, unrealizedPnlPercent: 3.15, marketValue: 7127.5, profileName: 'Aggressive Bot', source: 'BOT', tradeId: 'TRD-003', sparkData: [138.2, 139, 138.8, 140, 140.5, 141, 141.2, 142, 141.8, 142.3, 142.1, 142.55] },
|
|
{ id: '4', symbol: 'SOL/USDT', side: 'SELL', size: 20, entryPrice: 145.1, currentPrice: 142.55, stopLoss: 150, takeProfit: 135, unrealizedPnl: 51.0, unrealizedPnlPercent: 1.76, marketValue: 2851.0, profileName: 'Conservative Swing', source: 'MANUAL', tradeId: 'TRD-004', sparkData: [145.1, 144.5, 144.8, 144, 143.5, 143.8, 143, 142.8, 143.2, 142.6, 142.8, 142.55] },
|
|
];
|
|
|
|
export interface Order {
|
|
id: string;
|
|
symbol: string;
|
|
type: 'LIMIT' | 'STOP' | 'MARKET';
|
|
side: 'BUY' | 'SELL';
|
|
qty: number;
|
|
price: number;
|
|
status: 'pending_new' | 'filled' | 'cancelled';
|
|
action: 'ENTRY' | 'EXIT';
|
|
source: 'BOT' | 'MANUAL';
|
|
profileId: string;
|
|
timestamp: number;
|
|
}
|
|
|
|
export const orders: Order[] = [
|
|
{ id: 'ord-1', symbol: 'BTC/USDT', type: 'LIMIT', side: 'BUY', qty: 0.03, price: 66800, status: 'pending_new', action: 'ENTRY', source: 'BOT', profileId: 'p1', timestamp: Date.now() - 3600000 },
|
|
{ id: 'ord-2', symbol: 'ETH/USDT', type: 'STOP', side: 'SELL', qty: 1.5, price: 3380, status: 'pending_new', action: 'EXIT', source: 'BOT', profileId: 'p2', timestamp: Date.now() - 7200000 },
|
|
{ id: 'ord-3', symbol: 'SOL/USDT', type: 'MARKET', side: 'BUY', qty: 25, price: 141.2, status: 'filled', action: 'ENTRY', source: 'MANUAL', profileId: 'p1', timestamp: Date.now() - 1800000 },
|
|
];
|
|
|
|
export interface Trade {
|
|
id: string;
|
|
symbol: string;
|
|
side: 'BUY' | 'SELL';
|
|
entryPrice: number;
|
|
exitPrice: number;
|
|
size: number;
|
|
sizeUnit: string;
|
|
pnl: number;
|
|
pnlPercent: number;
|
|
reason: string;
|
|
profileName: string;
|
|
source: 'BOT' | 'MANUAL';
|
|
timestamp: string;
|
|
}
|
|
|
|
export const trades: Trade[] = [
|
|
{ id: 't1', symbol: 'BTC/USDT', side: 'BUY', entryPrice: 67100, exitPrice: 67850, size: 0.05, sizeUnit: 'BTC', pnl: 37.5, pnlPercent: 0.56, reason: 'Take Profit', profileName: 'Aggressive Bot', source: 'BOT', timestamp: 'Mar 6, 2:34 PM' },
|
|
{ id: 't2', symbol: 'ETH/USDT', side: 'BUY', entryPrice: 3450, exitPrice: 3380, size: 2, sizeUnit: 'ETH', pnl: -140, pnlPercent: -2.03, reason: 'Stop Loss', profileName: 'Balanced Core', source: 'BOT', timestamp: 'Mar 6, 11:20 AM' },
|
|
{ id: 't3', symbol: 'SOL/USDT', side: 'BUY', entryPrice: 135.5, exitPrice: 141.2, size: 30, sizeUnit: 'SOL', pnl: 171, pnlPercent: 4.21, reason: 'Take Profit', profileName: 'Aggressive Bot', source: 'BOT', timestamp: 'Mar 6, 9:15 AM' },
|
|
{ id: 't4', symbol: 'BTC/USDT', side: 'SELL', entryPrice: 68200, exitPrice: 67600, size: 0.03, sizeUnit: 'BTC', pnl: 18, pnlPercent: 0.88, reason: 'Signal Exit', profileName: 'Conservative Swing', source: 'MANUAL', timestamp: 'Mar 5, 4:45 PM' },
|
|
{ id: 't5', symbol: 'SOL/USDT', side: 'BUY', entryPrice: 140, exitPrice: 137.8, size: 40, sizeUnit: 'SOL', pnl: -88, pnlPercent: -1.57, reason: 'Stop Loss', profileName: 'Aggressive Bot', source: 'BOT', timestamp: 'Mar 5, 2:10 PM' },
|
|
{ id: 't6', symbol: 'ETH/USDT', side: 'BUY', entryPrice: 3400, exitPrice: 3520, size: 1.5, sizeUnit: 'ETH', pnl: 180, pnlPercent: 3.53, reason: 'Take Profit', profileName: 'Balanced Core', source: 'BOT', timestamp: 'Mar 5, 10:30 AM' },
|
|
{ id: 't7', symbol: 'AVAX/USDT', side: 'BUY', entryPrice: 36.5, exitPrice: 38.2, size: 100, sizeUnit: 'AVAX', pnl: 170, pnlPercent: 4.66, reason: 'Take Profit', profileName: 'Aggressive Bot', source: 'BOT', timestamp: 'Mar 4, 3:20 PM' },
|
|
{ id: 't8', symbol: 'BTC/USDT', side: 'BUY', entryPrice: 66800, exitPrice: 67300, size: 0.04, sizeUnit: 'BTC', pnl: 20, pnlPercent: 0.75, reason: 'Signal Exit', profileName: 'Balanced Core', source: 'BOT', timestamp: 'Mar 4, 1:15 PM' },
|
|
{ id: 't9', symbol: 'SOL/USDT', side: 'SELL', entryPrice: 143, exitPrice: 145.5, size: 25, sizeUnit: 'SOL', pnl: -62.5, pnlPercent: -1.75, reason: 'Stop Loss', profileName: 'Conservative Swing', source: 'MANUAL', timestamp: 'Mar 4, 9:00 AM' },
|
|
{ id: 't10', symbol: 'ETH/USDT', side: 'BUY', entryPrice: 3380, exitPrice: 3440, size: 2, sizeUnit: 'ETH', pnl: 120, pnlPercent: 1.78, reason: 'Take Profit', profileName: 'Aggressive Bot', source: 'BOT', timestamp: 'Mar 3, 5:30 PM' },
|
|
{ id: 't11', symbol: 'BTC/USDT', side: 'BUY', entryPrice: 66500, exitPrice: 67100, size: 0.06, sizeUnit: 'BTC', pnl: 36, pnlPercent: 0.9, reason: 'Take Profit', profileName: 'Balanced Core', source: 'BOT', timestamp: 'Mar 3, 2:45 PM' },
|
|
{ id: 't12', symbol: 'DOGE/USDT', side: 'BUY', entryPrice: 0.175, exitPrice: 0.182, size: 5000, sizeUnit: 'DOGE', pnl: 35, pnlPercent: 4, reason: 'Take Profit', profileName: 'Aggressive Bot', source: 'BOT', timestamp: 'Mar 3, 11:00 AM' },
|
|
{ id: 't13', symbol: 'SOL/USDT', side: 'BUY', entryPrice: 132, exitPrice: 129.5, size: 35, sizeUnit: 'SOL', pnl: -87.5, pnlPercent: -1.89, reason: 'Stop Loss', profileName: 'Aggressive Bot', source: 'BOT', timestamp: 'Mar 2, 4:00 PM' },
|
|
{ id: 't14', symbol: 'ETH/USDT', side: 'SELL', entryPrice: 3550, exitPrice: 3480, size: 1, sizeUnit: 'ETH', pnl: 70, pnlPercent: 1.97, reason: 'Take Profit', profileName: 'Conservative Swing', source: 'MANUAL', timestamp: 'Mar 2, 10:20 AM' },
|
|
{ id: 't15', symbol: 'BTC/USDT', side: 'BUY', entryPrice: 65800, exitPrice: 66400, size: 0.05, sizeUnit: 'BTC', pnl: 30, pnlPercent: 0.91, reason: 'Signal Exit', profileName: 'Balanced Core', source: 'BOT', timestamp: 'Mar 1, 3:15 PM' },
|
|
{ id: 't16', symbol: 'AVAX/USDT', side: 'BUY', entryPrice: 37, exitPrice: 36.2, size: 80, sizeUnit: 'AVAX', pnl: -64, pnlPercent: -2.16, reason: 'Stop Loss', profileName: 'Aggressive Bot', source: 'BOT', timestamp: 'Mar 1, 11:30 AM' },
|
|
];
|
|
|
|
export interface Strategy {
|
|
id: string;
|
|
name: string;
|
|
riskStyle: 'aggressive' | 'balanced' | 'safe';
|
|
allocatedCapital: number;
|
|
tradeCount: number;
|
|
wins: number;
|
|
winRate: number;
|
|
netPnl: number;
|
|
dailyTarget: number;
|
|
dailyProgress: number;
|
|
symbols: string[];
|
|
isActive: boolean;
|
|
}
|
|
|
|
export const strategies: Strategy[] = [
|
|
{ id: 's1', name: 'Aggressive Bot', riskStyle: 'aggressive', allocatedCapital: 5000, tradeCount: 18, wins: 13, winRate: 72.2, netPnl: 520.4, dailyTarget: 100, dailyProgress: 80, symbols: ['BTC/USDT', 'SOL/USDT'], isActive: true },
|
|
{ id: 's2', name: 'Balanced Core', riskStyle: 'balanced', allocatedCapital: 12000, tradeCount: 22, wins: 15, winRate: 68.2, netPnl: 614.8, dailyTarget: 75, dailyProgress: 55, symbols: ['BTC/USDT', 'ETH/USDT', 'SOL/USDT'], isActive: true },
|
|
{ id: 's3', name: 'Conservative Swing', riskStyle: 'safe', allocatedCapital: 8000, tradeCount: 7, wins: 4, winRate: 57.1, netPnl: -245, dailyTarget: 50, dailyProgress: 12, symbols: ['BTC/USDT'], isActive: false },
|
|
];
|
|
|
|
export interface MarketplacePreset {
|
|
id: string;
|
|
name: string;
|
|
risk: 'aggressive' | 'balanced' | 'safe';
|
|
assets: string[];
|
|
trades: string;
|
|
tag: string;
|
|
isPopular: boolean;
|
|
description: string;
|
|
}
|
|
|
|
export const marketplacePresets: MarketplacePreset[] = [
|
|
{ id: 'mp1', name: 'Top Performing Aggressive Bot', risk: 'aggressive', assets: ['BTC/USDT', 'SOL/USDT'], trades: '8-12/day', tag: '+14.2% (Last 30d)', isPopular: true, description: 'High-frequency scalping strategy targeting volatile breakouts with tight risk management.' },
|
|
{ id: 'mp2', name: 'Low Volatility BTC Bot', risk: 'safe', assets: ['BTC/USDT'], trades: '1-2/day', tag: 'Low Risk', isPopular: false, description: 'Conservative mean-reversion strategy on Bitcoin with wide stops and modest targets.' },
|
|
{ id: 'mp3', name: 'Standard Balanced Core', risk: 'balanced', assets: ['BTC/USDT', 'ETH/USDT', 'SOL/USDT'], trades: '3-5/day', tag: 'Consistent', isPopular: false, description: 'Multi-asset swing trading approach balancing risk across major crypto pairs.' },
|
|
];
|
|
|
|
export interface ChatMessage {
|
|
id: string;
|
|
role: 'bot' | 'user';
|
|
text: string;
|
|
}
|
|
|
|
export const chatMessages: ChatMessage[] = [
|
|
{ id: 'c1', role: 'bot', text: "Hey! I'm your trading assistant. How can I help?" },
|
|
{ id: 'c2', role: 'user', text: "How's my portfolio doing today?" },
|
|
{ id: 'c3', role: 'bot', text: "Your portfolio is up +5.14% ($1,284.50) with 4 active positions. SOL/USDT is your best performer at +3.15%. Your 7-day win rate is 68%, and you're 80% toward your daily profit target on the Aggressive Bot profile. Want me to break down any specific position?" },
|
|
];
|
|
|
|
export const chatSuggestions = [
|
|
'Show my P&L',
|
|
'Pause all trades',
|
|
'Explain my best strategy',
|
|
'Market analysis',
|
|
];
|
|
|
|
export const historyMetrics = {
|
|
totalTrades: 47,
|
|
winRate: 68.1,
|
|
netPnl: 890.2,
|
|
};
|