Bläddra i källkod

Refactor trading configuration - Replace DEFAULT_TRADING_SYMBOL and DEFAULT_TRADE_AMOUNT with DEFAULT_TRADING_TOKEN in configuration files and Telegram bot. Update related validation and logging to ensure proper handling of the new token format for market commands.

Carles Sentis 2 veckor sedan
förälder
incheckning
ff030e0ae5
3 ändrade filer med 21 tillägg och 24 borttagningar
  1. 2 5
      config/env.example
  2. 4 6
      src/config.py
  3. 15 13
      src/telegram_bot.py

+ 2 - 5
config/env.example

@@ -14,11 +14,8 @@ HYPERLIQUID_TESTNET=true
 # ========================================
 # Trading Bot Configuration
 # ========================================
-# Default symbol to trade (Hyperliquid format)
-DEFAULT_TRADING_SYMBOL=BTC/USDC:USDC
-
-# Default trade amount (in base currency)
-DEFAULT_TRADE_AMOUNT=0.001
+# Default token for market/price commands (when no token specified)
+DEFAULT_TRADING_TOKEN=BTC
 
 # Risk management settings
 RISK_MANAGEMENT_ENABLED=true

+ 4 - 6
src/config.py

@@ -17,8 +17,7 @@ class Config:
     HYPERLIQUID_TESTNET: bool = os.getenv('HYPERLIQUID_TESTNET', 'true').lower() == 'true'
     
     # Trading Bot Configuration
-    DEFAULT_TRADING_SYMBOL: str = os.getenv('DEFAULT_TRADING_SYMBOL', 'BTC/USDC:USDC')
-    DEFAULT_TRADE_AMOUNT: float = float(os.getenv('DEFAULT_TRADE_AMOUNT', '0.001'))
+    DEFAULT_TRADING_TOKEN: str = os.getenv('DEFAULT_TRADING_TOKEN', 'BTC')
     RISK_MANAGEMENT_ENABLED: bool = os.getenv('RISK_MANAGEMENT_ENABLED', 'true').lower() == 'true'
     STOP_LOSS_PERCENTAGE: float = float(os.getenv('STOP_LOSS_PERCENTAGE', '10.0'))
     
@@ -69,8 +68,8 @@ class Config:
             logger.warning("⚠️ BOT_HEARTBEAT_SECONDS is very high (>10 minutes), monitoring may be slow")
         
         # Validate trading settings
-        if cls.DEFAULT_TRADE_AMOUNT <= 0:
-            logger.error("❌ DEFAULT_TRADE_AMOUNT must be positive")
+        if cls.DEFAULT_TRADING_TOKEN == '':
+            logger.error("❌ DEFAULT_TRADING_TOKEN must be set")
             is_valid = False
         
         # Validate logging settings
@@ -114,8 +113,7 @@ class Config:
         """Print current configuration (hiding sensitive data)."""
         print("🔧 Current Configuration:")
         print(f"  HYPERLIQUID_TESTNET: {cls.HYPERLIQUID_TESTNET}")
-        print(f"  DEFAULT_TRADING_SYMBOL: {cls.DEFAULT_TRADING_SYMBOL}")
-        print(f"  DEFAULT_TRADE_AMOUNT: {cls.DEFAULT_TRADE_AMOUNT}")
+        print(f"  DEFAULT_TRADING_TOKEN: {cls.DEFAULT_TRADING_TOKEN}")
         print(f"  RISK_MANAGEMENT_ENABLED: {cls.RISK_MANAGEMENT_ENABLED}")
         print(f"  STOP_LOSS_PERCENTAGE: {cls.STOP_LOSS_PERCENTAGE}%")
         print(f"  TELEGRAM_ENABLED: {cls.TELEGRAM_ENABLED}")

+ 15 - 13
src/telegram_bot.py

@@ -169,8 +169,7 @@ Type /help for detailed command information.
 
 For support, contact your bot administrator.
         """.format(
-            symbol=Config.DEFAULT_TRADING_SYMBOL,
-            amount=Config.DEFAULT_TRADE_AMOUNT,
+            symbol=Config.DEFAULT_TRADING_TOKEN,
             network="Testnet" if Config.HYPERLIQUID_TESTNET else "Mainnet",
             risk_enabled=Config.RISK_MANAGEMENT_ENABLED,
             stop_loss=Config.STOP_LOSS_PERCENTAGE,
@@ -275,8 +274,7 @@ For support, contact your bot administrator.
 
 For support, contact your bot administrator.
         """.format(
-            symbol=Config.DEFAULT_TRADING_SYMBOL,
-            amount=Config.DEFAULT_TRADE_AMOUNT,
+            symbol=Config.DEFAULT_TRADING_TOKEN,
             network="Testnet" if Config.HYPERLIQUID_TESTNET else "Mainnet",
             risk_enabled=Config.RISK_MANAGEMENT_ENABLED,
             stop_loss=Config.STOP_LOSS_PERCENTAGE,
@@ -504,10 +502,12 @@ For support, contact your bot administrator.
         
         # Check if token is provided as argument
         if context.args and len(context.args) >= 1:
-            symbol = context.args[0].upper()
+            token = context.args[0].upper()
         else:
-            symbol = Config.DEFAULT_TRADING_SYMBOL
+            token = Config.DEFAULT_TRADING_TOKEN
         
+        # Convert token to full symbol format for API
+        symbol = f"{token}/USDC:USDC"
         market_data = self.client.get_market_data(symbol)
         
         if market_data and market_data.get('ticker'):
@@ -521,7 +521,7 @@ For support, contact your bot administrator.
                 low_24h = float(ticker.get('low') or 0)
                 volume_24h = ticker.get('baseVolume') or ticker.get('volume') or 'N/A'
                 
-                market_text = f"📊 <b>Market Data - {symbol}</b>\n\n"
+                market_text = f"📊 <b>Market Data - {token}</b>\n\n"
                 
                 if current_price > 0:
                     market_text += f"💵 <b>Current Price:</b> ${current_price:,.2f}\n"
@@ -567,14 +567,14 @@ For support, contact your bot administrator.
                     market_text += f"📋 <b>Orderbook:</b> Not available\n"
                 
                 # Add usage hint
-                market_text += f"\n💡 <b>Usage:</b> <code>/market {symbol}</code> or <code>/market</code> for default"
+                market_text += f"\n💡 <b>Usage:</b> <code>/market {token}</code> or <code>/market</code> for default"
                 
             except (ValueError, TypeError) as e:
                 market_text = f"❌ <b>Error parsing market data</b>\n\n"
                 market_text += f"🔧 Raw data received but couldn't parse values.\n"
                 market_text += f"📞 Please try again or contact support if this persists."
         else:
-            market_text = f"❌ <b>Could not fetch market data for {symbol}</b>\n\n"
+            market_text = f"❌ <b>Could not fetch market data for {token}</b>\n\n"
             market_text += f"🔄 Please try again in a moment.\n"
             market_text += f"🌐 Check your network connection.\n"
             market_text += f"📡 API may be temporarily unavailable.\n\n"
@@ -590,10 +590,12 @@ For support, contact your bot administrator.
         
         # Check if token is provided as argument
         if context.args and len(context.args) >= 1:
-            symbol = context.args[0].upper()
+            token = context.args[0].upper()
         else:
-            symbol = Config.DEFAULT_TRADING_SYMBOL
+            token = Config.DEFAULT_TRADING_TOKEN
         
+        # Convert token to full symbol format for API
+        symbol = f"{token}/USDC:USDC"
         market_data = self.client.get_market_data(symbol)
         
         if market_data and market_data.get('ticker'):
@@ -603,7 +605,7 @@ For support, contact your bot administrator.
                 
                 if price_value is not None:
                     price = float(price_value)
-                    price_text = f"💵 <b>{symbol}</b>: ${price:,.2f}"
+                    price_text = f"💵 <b>{token}</b>: ${price:,.2f}"
                     
                     # Add timestamp
                     timestamp = datetime.now().strftime('%H:%M:%S')
@@ -1100,7 +1102,7 @@ For support, contact your bot administrator.
             await self.send_message(
                 "🤖 <b>Manual Trading Bot Started</b>\n\n"
                 f"✅ Connected to Hyperliquid {'Testnet' if Config.HYPERLIQUID_TESTNET else 'Mainnet'}\n"
-                f"📊 Default Symbol: {Config.DEFAULT_TRADING_SYMBOL}\n"
+                f"📊 Default Symbol: {Config.DEFAULT_TRADING_TOKEN}\n"
                 f"📱 Manual trading ready!\n"
                 f"🔄 Order monitoring: Active ({Config.BOT_HEARTBEAT_SECONDS}s interval)\n"
                 f"🔄 External trade monitoring: Active\n"