Browse Source

Enhance CopyTradingMonitor with leverage management for order execution

- Added functionality to set leverage before placing and reducing positions, improving order execution control.
- Implemented logging for leverage setting actions, including success and failure messages for better tracking of leverage adjustments.
Carles Sentis 4 days ago
parent
commit
04a0531ee6
2 changed files with 27 additions and 1 deletions
  1. 26 0
      src/monitoring/copy_trading_monitor.py
  2. 1 1
      trading_bot.py

+ 26 - 0
src/monitoring/copy_trading_monitor.py

@@ -651,6 +651,20 @@ class CopyTradingMonitor:
             if 'open' in trade.action or 'add' in trade.action:
                 # Open new position or add to existing position
                 symbol = f"{trade.coin}/USDC:USDC"
+                
+                # Set leverage before placing the order
+                self.logger.info(f"⚖️ Setting leverage to {leverage}x for {trade.coin}")
+                leverage_result, leverage_error = await asyncio.to_thread(
+                    self.client.set_leverage,
+                    leverage=int(leverage),
+                    symbol=symbol
+                )
+                if leverage_error:
+                    self.logger.warning(f"⚠️ Failed to set leverage to {leverage}x for {trade.coin}: {leverage_error}")
+                    # Continue anyway - leverage might already be set or order might still work
+                else:
+                    self.logger.info(f"✅ Successfully set leverage to {leverage}x for {trade.coin}")
+                
                 result, error = await asyncio.to_thread(
                     self.client.place_market_order,
                     symbol=symbol,
@@ -725,6 +739,18 @@ class CopyTradingMonitor:
                 reduce_side = 'sell' if 'long' in trade.action else 'buy'
                 self.logger.info(f"📉 Reducing position: {reduce_side} {token_amount:.6f} {trade.coin} (current size: {current_size:.6f})")
                 
+                # Set leverage before reducing position (in case it affects the order)
+                self.logger.info(f"⚖️ Setting leverage to {leverage}x for {trade.coin} (reduce)")
+                leverage_result, leverage_error = await asyncio.to_thread(
+                    self.client.set_leverage,
+                    leverage=int(leverage),
+                    symbol=symbol
+                )
+                if leverage_error:
+                    self.logger.warning(f"⚠️ Failed to set leverage to {leverage}x for {trade.coin}: {leverage_error}")
+                else:
+                    self.logger.info(f"✅ Successfully set leverage to {leverage}x for {trade.coin}")
+                
                 result, error = await asyncio.to_thread(
                     self.client.place_market_order,
                     symbol=symbol,

+ 1 - 1
trading_bot.py

@@ -14,7 +14,7 @@ from datetime import datetime
 from pathlib import Path
 
 # Bot version
-BOT_VERSION = "3.0.341"
+BOT_VERSION = "3.0.342"
 
 # Add src directory to Python path
 sys.path.insert(0, str(Path(__file__).parent / "src"))