|
@@ -41,21 +41,13 @@ class PerformanceCommands(InfoCommandsBase):
|
|
|
async def _show_performance_ranking(self, update: Update, stats) -> None:
|
|
|
"""Show performance ranking for all tokens."""
|
|
|
try:
|
|
|
- # Get performance data for all tokens
|
|
|
- token_performance = stats.get_token_performance()
|
|
|
- if not token_performance:
|
|
|
- await self._reply(update,
|
|
|
- "📊 <b>Token Performance</b>\n\n"
|
|
|
- "📭 No trading data available yet.\n\n"
|
|
|
- "💡 Performance tracking starts after your first completed trades.\n"
|
|
|
- "Use /long or /short to start trading!",
|
|
|
- parse_mode='HTML'
|
|
|
- )
|
|
|
- return
|
|
|
+ # Get token performance data, sorted by total P&L
|
|
|
+ token_performance_data = self.trading_engine.stats.performance_calculator.get_token_performance(limit=10)
|
|
|
+ logger.info(f"Retrieved {len(token_performance_data)} tokens for performance ranking.")
|
|
|
|
|
|
# Sort tokens by P&L
|
|
|
sorted_tokens = sorted(
|
|
|
- token_performance,
|
|
|
+ token_performance_data,
|
|
|
key=lambda x: x.get('total_pnl', 0),
|
|
|
reverse=True
|
|
|
)
|
|
@@ -100,13 +92,13 @@ class PerformanceCommands(InfoCommandsBase):
|
|
|
performance_text += "\n\n"
|
|
|
|
|
|
# Add summary
|
|
|
- total_pnl = sum(stats_data.get('total_pnl', 0) for stats_data in token_performance)
|
|
|
- total_trades = sum(stats_data.get('total_trades', 0) for stats_data in token_performance)
|
|
|
+ total_pnl = sum(stats_data.get('total_pnl', 0) for stats_data in token_performance_data)
|
|
|
+ total_trades = sum(stats_data.get('total_trades', 0) for stats_data in token_performance_data)
|
|
|
total_pnl_emoji = "🟢" if total_pnl >= 0 else "🔴"
|
|
|
|
|
|
performance_text += f"💼 <b>Portfolio Summary:</b>\n"
|
|
|
performance_text += f" {total_pnl_emoji} Total P&L: ${total_pnl:,.2f}\n"
|
|
|
- performance_text += f" 📈 Tokens Traded: {len(token_performance)}\n"
|
|
|
+ performance_text += f" 📈 Tokens Traded: {len(token_performance_data)}\n"
|
|
|
performance_text += f" 🔄 Completed Trades: {total_trades}\n\n"
|
|
|
|
|
|
performance_text += f"💡 <b>Usage:</b> <code>/performance BTC</code> for detailed {Config.DEFAULT_TRADING_TOKEN} stats"
|