|
@@ -4,6 +4,7 @@ Info Commands - Handles information-related Telegram commands.
|
|
|
"""
|
|
|
|
|
|
import logging
|
|
|
+import html # Added for escaping HTML characters
|
|
|
from datetime import datetime, timezone, timedelta
|
|
|
from typing import Optional, Dict, Any, List
|
|
|
from telegram import Update, InlineKeyboardButton, InlineKeyboardMarkup
|
|
@@ -1198,15 +1199,15 @@ class InfoCommands:
|
|
|
# Check if we have enough data for risk calculations
|
|
|
if basic_stats['completed_trades'] < 2:
|
|
|
await context.bot.send_message(chat_id=chat_id, text=
|
|
|
- "📊 <b>Risk Analysis</b>\n\n"
|
|
|
- "📭 <b>Insufficient Data</b>\n\n"
|
|
|
- f"• Current completed trades: {basic_stats['completed_trades']}\n"
|
|
|
- f"• Required for risk analysis: 2+ trades\n"
|
|
|
- f"• Daily balance snapshots: {stats.get_daily_balance_record_count()}\n\n"
|
|
|
- "💡 <b>To enable risk analysis:</b>\n"
|
|
|
- "• Complete more trades to generate returns data\n"
|
|
|
- "• Bot automatically records daily balance snapshots\n"
|
|
|
- "• Risk metrics will be available after sufficient trading history\n\n"
|
|
|
+ "📊 <b>Risk Analysis</b>\\n\\n"
|
|
|
+ "📭 <b>Insufficient Data</b>\\n\\n"
|
|
|
+ f"• Current completed trades: {html.escape(str(basic_stats['completed_trades']))}\\n"
|
|
|
+ f"• Required for risk analysis: 2+ trades\\n"
|
|
|
+ f"• Daily balance snapshots: {html.escape(str(stats.get_daily_balance_record_count()))}\\n\\n"
|
|
|
+ "💡 <b>To enable risk analysis:</b>\\n"
|
|
|
+ "• Complete more trades to generate returns data\\n"
|
|
|
+ "• Bot automatically records daily balance snapshots\\n"
|
|
|
+ "• Risk metrics will be available after sufficient trading history\\n\\n"
|
|
|
"📈 Use /stats for current performance metrics",
|
|
|
parse_mode='HTML'
|
|
|
)
|
|
@@ -1229,7 +1230,7 @@ class InfoCommands:
|
|
|
• Current Balance: ${current_balance:,.2f}
|
|
|
• Initial Balance: ${basic_stats['initial_balance']:,.2f}
|
|
|
• Total P&L: ${basic_stats['total_pnl']:,.2f}
|
|
|
-• Days Active: {basic_stats['days_active']}
|
|
|
+• Days Active: {html.escape(str(basic_stats['days_active']))}
|
|
|
|
|
|
📊 <b>Risk Interpretation:</b>
|
|
|
"""
|
|
@@ -1277,9 +1278,9 @@ class InfoCommands:
|
|
|
• <b>Volatility:</b> Annualized standard deviation of returns
|
|
|
|
|
|
📈 <b>Data Based On:</b>
|
|
|
-• Completed Trades: {basic_stats['completed_trades']}
|
|
|
-• Daily Balance Records: {stats.get_daily_balance_record_count()}
|
|
|
-• Trading Period: {basic_stats['days_active']} days
|
|
|
+• Completed Trades: {html.escape(str(basic_stats['completed_trades']))}
|
|
|
+• Daily Balance Records: {html.escape(str(stats.get_daily_balance_record_count()))}
|
|
|
+• Trading Period: {html.escape(str(basic_stats['days_active']))} days
|
|
|
|
|
|
🔄 Use /stats for trading performance metrics
|
|
|
"""
|