123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- #!/usr/bin/env python3
- """
- Test script to demonstrate the stop loss configuration and functionality.
- This script shows how the automatic stop loss system would work.
- """
- import sys
- import os
- sys.path.append(os.path.join(os.path.dirname(__file__), 'src'))
- from config import Config
- def test_stop_loss_config():
- """Test and display stop loss configuration."""
- print("🛡️ Stop Loss Configuration Test")
- print("=" * 50)
-
- # Display current configuration
- print(f"📊 Risk Management Enabled: {Config.RISK_MANAGEMENT_ENABLED}")
- print(f"🛑 Stop Loss Percentage: {Config.STOP_LOSS_PERCENTAGE}%")
- print(f"⏰ Monitoring Interval: {Config.BOT_HEARTBEAT_SECONDS} seconds")
- print()
-
- # Simulate position scenarios
- scenarios = [
- {
- 'name': 'Long BTC Position',
- 'position_type': 'long',
- 'entry_price': 45000,
- 'current_prices': [44000, 42000, 40500, 39000],
- 'position_size': 0.1
- },
- {
- 'name': 'Short ETH Position',
- 'position_type': 'short',
- 'entry_price': 3000,
- 'current_prices': [3100, 3200, 3300, 3400],
- 'position_size': 2.0
- }
- ]
-
- for scenario in scenarios:
- print(f"📋 Scenario: {scenario['name']}")
- print(f" Direction: {scenario['position_type'].upper()}")
- print(f" Entry Price: ${scenario['entry_price']:,.2f}")
- print(f" Position Size: {scenario['position_size']}")
- print()
-
- for current_price in scenario['current_prices']:
- # Calculate P&L percentage
- if scenario['position_type'] == 'long':
- pnl_percent = ((current_price - scenario['entry_price']) / scenario['entry_price']) * 100
- else: # short
- pnl_percent = ((scenario['entry_price'] - current_price) / scenario['entry_price']) * 100
-
- # Check if stop loss would trigger
- would_trigger = pnl_percent <= -Config.STOP_LOSS_PERCENTAGE
-
- # Calculate loss value
- loss_value = scenario['position_size'] * abs(current_price - scenario['entry_price'])
-
- status = "🛑 STOP LOSS TRIGGERED!" if would_trigger else "✅ Safe"
-
- print(f" Current Price: ${current_price:,.2f} | P&L: {pnl_percent:+.2f}% | Loss: ${loss_value:,.2f} | {status}")
-
- print()
- def test_stop_loss_thresholds():
- """Test different stop loss threshold scenarios."""
- print("🔧 Stop Loss Threshold Testing")
- print("=" * 50)
-
- thresholds = [5.0, 10.0, 15.0, 20.0]
- entry_price = 50000 # BTC example
-
- print(f"Entry Price: ${entry_price:,.2f}")
- print()
-
- for threshold in thresholds:
- # Calculate trigger prices
- long_trigger_price = entry_price * (1 - threshold/100)
- short_trigger_price = entry_price * (1 + threshold/100)
-
- print(f"Stop Loss Threshold: {threshold}%")
- print(f" Long Position Trigger: ${long_trigger_price:,.2f} (loss of ${entry_price - long_trigger_price:,.2f})")
- print(f" Short Position Trigger: ${short_trigger_price:,.2f} (loss of ${short_trigger_price - entry_price:,.2f})")
- print()
- def test_monitoring_frequency():
- """Test monitoring frequency scenarios."""
- print("⏰ Monitoring Frequency Analysis")
- print("=" * 50)
-
- frequencies = [10, 30, 60, 120, 300] # seconds
-
- print("Different monitoring intervals and their implications:")
- print()
-
- for freq in frequencies:
- checks_per_minute = 60 / freq
- checks_per_hour = 3600 / freq
-
- print(f"Interval: {freq} seconds")
- print(f" Checks per minute: {checks_per_minute:.1f}")
- print(f" Checks per hour: {checks_per_hour:.0f}")
- print(f" Responsiveness: {'High' if freq <= 30 else 'Medium' if freq <= 120 else 'Low'}")
- print(f" API Usage: {'High' if freq <= 10 else 'Medium' if freq <= 60 else 'Low'}")
- print()
- if __name__ == "__main__":
- print("🚀 Stop Loss System Configuration Test")
- print("=" * 60)
- print()
-
- # Test current configuration
- test_stop_loss_config()
-
- print("\n" + "=" * 60)
- test_stop_loss_thresholds()
-
- print("\n" + "=" * 60)
- test_monitoring_frequency()
-
- print("\n" + "=" * 60)
- print("✅ Stop Loss System Ready!")
- print(f"📊 Current Settings: {Config.STOP_LOSS_PERCENTAGE}% stop loss, {Config.BOT_HEARTBEAT_SECONDS}s monitoring")
- print("🛡️ Automatic position protection is enabled")
- print("📱 You'll receive Telegram notifications for all stop loss events")
|