Carles Sentis b15cb9e236 Refactor trading bot components to enhance async functionality and improve logging. Update requirements to include additional libraries for better performance and error handling. Adjust banner display to include network and database status, and refine error messages for database issues. Ensure consistent formatting in notifications and position tracking for improved clarity. 3 days ago
..
README.md 5b76ad1144 Enhance documentation and update .gitignore - Add comprehensive command reference and project structure documentation, improve README for clarity, and update .gitignore to include test artifacts and temporary files. 2 weeks ago
__init__.py b15cb9e236 Refactor trading bot components to enhance async functionality and improve logging. Update requirements to include additional libraries for better performance and error handling. Adjust banner display to include network and database status, and refine error messages for database issues. Ensure consistent formatting in notifications and position tracking for improved clarity. 3 days ago
debug_stats.py de20259caf Refactor TradingStats module and update project structure for enhanced modularity. 1 week ago
demo_stats.json 0cfca41a25 Refactor data management and update file structure for trading bot - Modified the .gitignore to include new data directories for persistent trading data and logs. Updated reset_data.sh to reflect changes in file paths and improved user prompts. Enhanced trading_stats.py and alarm_manager.py to ensure data is stored in the new structure, improving organization and maintainability. Added demo_stats.json for testing purposes. 2 weeks ago
demo_stats.py de20259caf Refactor TradingStats module and update project structure for enhanced modularity. 1 week ago

README.md

🧪 Tests Directory

Test suite for the Hyperliquid Manual Trading Bot

📋 Available Tests

🔧 Core Tests

  • test_config.py - Validates configuration and environment setup
  • test_balance.py - Tests balance fetching with CCXT integration

💰 Trading Tests

  • test_perps_commands.py - Tests perps trading logic (/long, /short)
  • test_exit_command.py - Tests position closing functionality (/exit)
  • test_order_management.py - Tests enhanced order management (/orders, /coo)
  • test_risk_management.py - Tests stop loss and take profit commands (/sl, /tp)
  • test_order_monitoring.py - Tests automatic order monitoring and notifications

🚀 Running Tests

Run All Tests

cd tests
python run_all_tests.py

Run Individual Tests

cd tests
python test_config.py           # Test configuration
python test_balance.py          # Test balance fetching
python test_perps_commands.py   # Test trading commands
python test_exit_command.py     # Test exit functionality
python test_order_management.py # Test order management
python test_risk_management.py  # Test risk management

Run from Project Root

python tests/run_all_tests.py   # All tests
python tests/test_config.py     # Individual test

📊 Test Structure

Each test file follows the same pattern:

#!/usr/bin/env python3
"""
Test description
"""

import sys
from pathlib import Path

# Add project paths
project_root = Path(__file__).parent.parent
sys.path.insert(0, str(project_root))
sys.path.insert(0, str(project_root / 'src'))

# Import modules to test
from hyperliquid_client import HyperliquidClient
from config import Config

def test_function_name():
    """Main test function."""
    # Test implementation
    return True  # or False

if __name__ == "__main__":
    success = test_function_name()
    sys.exit(0 if success else 1)

✅ Test Coverage

Configuration & Setup

  • ✅ Environment variable validation
  • ✅ CCXT configuration format
  • ✅ Network settings (testnet/mainnet)
  • ✅ API key validation

Hyperliquid Client

  • ✅ Client initialization
  • ✅ Balance fetching (CCXT format)
  • ✅ Position fetching
  • ✅ Order fetching
  • ✅ Market data retrieval

Trading Commands

  • ✅ Long/short command logic
  • ✅ Market vs limit order detection
  • ✅ Token amount calculations
  • ✅ Symbol format conversion
  • ✅ Price validation

Order Management

  • ✅ Order filtering by token
  • ✅ Bulk order cancellation logic
  • ✅ Token extraction and validation

Position Management

  • ✅ Position detection
  • ✅ Exit order logic
  • ✅ Direction determination (long/short)

Risk Management

  • ✅ Stop loss validation (price direction)
  • ✅ Take profit validation (price direction)
  • ✅ Position requirement checking
  • ✅ P&L calculation at SL/TP levels

Order Monitoring

  • ✅ Order fill detection logic
  • ✅ Position change tracking
  • ✅ P&L calculation accuracy
  • ✅ Notification triggering
  • ✅ 30-second monitoring cycle

🔍 What Tests Check

Integration Tests

  • Real API connectivity (testnet)
  • Data format validation
  • Error handling
  • Network timeouts

Logic Tests

  • Command parsing
  • Calculation accuracy
  • Symbol conversions
  • Filter operations

Safety Tests

  • Configuration validation
  • API key security
  • Network isolation (testnet)

📝 Test Output

Each test provides:

  • ✅ PASS/❌ FAIL status
  • Detailed progress with emojis
  • Error messages with stack traces
  • Configuration summary
  • Ready-to-use commands for testing

Example output:

🧪 Testing Configuration Setup
==================================================
✅ Configuration valid
🌐 Network: Testnet
🔑 Private Key: 0x1234567890...

🎉 Config test PASSED!

🚀 Adding New Tests

  1. Create test file: test_new_feature.py
  2. Follow naming convention: test_<feature_name>.py
  3. Use standard structure (see above)
  4. Add to this README
  5. Test runner will auto-discover it

🛡️ Test Safety

  • All tests use testnet by default
  • No real money at risk
  • Read-only operations (except explicitly noted)
  • API key masking in outputs
  • Network isolation validation

📱 Mobile Testing

After tests pass, verify on Telegram:

# Start bot
python src/telegram_bot.py

# Test commands
/start
/balance
/long BTC 10
/sl BTC 9000
/tp BTC 11000
/orders
/coo BTC

Happy testing! 🧪🚀