123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 |
- #!/usr/bin/env python3
- """
- Manual Trading Bot Launcher
- A focused launcher for manual Hyperliquid trading via Telegram.
- This script sets up comprehensive statistics tracking and phone-friendly controls.
- """
- import logging
- import asyncio
- import sys
- from datetime import datetime
- from config import Config
- from telegram_bot import TelegramTradingBot
- # Set up logging
- logging.basicConfig(
- format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
- level=getattr(logging, Config.LOG_LEVEL)
- )
- logger = logging.getLogger(__name__)
- def print_banner():
- """Print a nice startup banner."""
- banner = """
- ╔══════════════════════════════════════════════════════════════╗
- ║ 📱 MANUAL TRADING BOT ║
- ║ for Hyperliquid ║
- ╠══════════════════════════════════════════════════════════════╣
- ║ ║
- ║ 🤖 Control your account from your phone via Telegram ║
- ║ 📊 Comprehensive trading statistics tracking ║
- ║ 📈 Real-time P&L monitoring ║
- ║ 🛡️ Risk metrics (Sharpe, Sortino, VaR) ║
- ║ 📱 Mobile-optimized interface ║
- ║ ║
- ╚══════════════════════════════════════════════════════════════╝
- """
- print(banner)
- def validate_setup():
- """Validate that everything is set up correctly."""
- print("🔍 Validating configuration...")
-
- # Check configuration
- if not Config.validate():
- print("❌ Configuration validation failed!")
- return False
-
- # Check Telegram setup
- if not Config.TELEGRAM_ENABLED:
- print("❌ Telegram is not enabled in configuration")
- print("💡 Please set TELEGRAM_ENABLED=true in your .env file")
- return False
-
- if not Config.TELEGRAM_BOT_TOKEN:
- print("❌ TELEGRAM_BOT_TOKEN not configured")
- print("💡 Please add your Telegram bot token to .env file")
- return False
-
- if not Config.TELEGRAM_CHAT_ID:
- print("❌ TELEGRAM_CHAT_ID not configured")
- print("💡 Please run: python get_telegram_chat_id.py")
- return False
-
- # Check Hyperliquid setup
- if not Config.HYPERLIQUID_PRIVATE_KEY:
- print("❌ HYPERLIQUID_PRIVATE_KEY not configured")
- print("💡 Please add your private key to .env file")
- return False
-
- print("✅ Configuration validation passed!")
- return True
- def print_configuration():
- """Print current configuration."""
- print("\n📋 Current Configuration:")
- print(f"🌐 Network: {'Testnet' if Config.HYPERLIQUID_TESTNET else '🚨 MAINNET 🚨'}")
- print(f"📊 Trading Symbol: {Config.DEFAULT_TRADING_SYMBOL}")
- print(f"💰 Default Amount: {Config.DEFAULT_TRADE_AMOUNT}")
- print(f"💬 Telegram Bot: @{Config.TELEGRAM_BOT_TOKEN.split(':')[0] if Config.TELEGRAM_BOT_TOKEN else 'Not configured'}")
- print(f"🔑 Chat ID: {Config.TELEGRAM_CHAT_ID}")
- print(f"📈 Statistics: Enabled (saved to trading_stats.json)")
-
- if not Config.HYPERLIQUID_TESTNET:
- print("\n⚠️ WARNING: You are running on MAINNET!")
- print("💸 Real money will be used for trading!")
- response = input("Are you sure you want to continue? (type 'YES' to confirm): ")
- if response != 'YES':
- print("❌ Cancelled by user")
- return False
-
- return True
- def print_usage_guide():
- """Print usage guide."""
- print("""
- 📱 How to Use Your Manual Trading Bot:
- 1️⃣ Start Telegram and find your bot
- 2️⃣ Send /start to see quick action buttons
- 3️⃣ Use these commands for manual trading:
- 💼 ACCOUNT MONITORING:
- • /balance - Check your account balance
- • /positions - View open positions
- • /orders - See pending orders
- • /stats - Full trading statistics
- 🔄 MANUAL TRADING:
- • /buy 0.001 50000 - Buy 0.001 BTC at $50,000
- • /sell 0.001 55000 - Sell 0.001 BTC at $55,000
- • /trades - View recent trade history
- 📊 STATISTICS TRACKED:
- • 💰 Starting vs Current Balance
- • 📈 Total P&L and Return %
- • 🏆 Win Rate and Profit Factor
- • 📊 Sharpe & Sortino Ratios
- • 🎯 Max Drawdown and VaR
- • 🔄 Trade Count and Expectancy
- 🛡️ SAFETY FEATURES:
- • All trades require confirmation
- • Comprehensive logging
- • Real-time balance tracking
- • Risk metrics calculation
- • Order confirmations
- ⚠️ IMPORTANT:
- • Bot starts statistics tracking from first launch
- • All manual trades are automatically recorded
- • Statistics persist between bot restarts
- • Use /stats to see comprehensive performance metrics
- Ready to start manual trading from your phone! 🚀
- """)
- async def main():
- """Main function to start the manual trading bot."""
- try:
- print_banner()
-
- # Validate setup
- if not validate_setup():
- sys.exit(1)
-
- # Print configuration
- if not print_configuration():
- sys.exit(1)
-
- print_usage_guide()
-
- print("🚀 Starting Manual Trading Bot...")
- print("📱 Your phone controls are ready!")
- print("🔄 Statistics tracking initialized")
- print("⏰ Started at:", datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
- print("\n💡 Open Telegram and send /start to your bot!")
- print("🛑 Press Ctrl+C to stop the bot\n")
-
- # Create and run the bot
- bot = TelegramTradingBot()
- await bot.run()
-
- except KeyboardInterrupt:
- print("\n👋 Manual Trading Bot stopped by user")
- print("📊 Your trading statistics have been saved")
- print("🔄 Restart anytime to continue tracking!")
- except Exception as e:
- logger.error(f"❌ Unexpected error: {e}")
- print(f"\n❌ Error: {e}")
- print("💡 Check your configuration and try again")
- if __name__ == "__main__":
- asyncio.run(main())
|