better fees calc
This commit is contained in:
95
test_enhanced_fee_tracking.py
Normal file
95
test_enhanced_fee_tracking.py
Normal file
@ -0,0 +1,95 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Test script to verify enhanced fee tracking with maker/taker fees
|
||||
"""
|
||||
|
||||
import sys
|
||||
import os
|
||||
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
|
||||
|
||||
import logging
|
||||
from datetime import datetime, timezone
|
||||
from web.dashboard import TradingDashboard
|
||||
from core.data_provider import DataProvider
|
||||
|
||||
# Setup logging
|
||||
logging.basicConfig(
|
||||
level=logging.INFO,
|
||||
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
|
||||
)
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
def test_enhanced_fee_tracking():
|
||||
"""Test enhanced fee tracking with maker/taker fees"""
|
||||
|
||||
logger.info("Testing enhanced fee tracking...")
|
||||
|
||||
# Create dashboard instance
|
||||
data_provider = DataProvider()
|
||||
dashboard = TradingDashboard(data_provider=data_provider)
|
||||
|
||||
# Create test trading decisions with different fee types
|
||||
test_decisions = [
|
||||
{
|
||||
'action': 'BUY',
|
||||
'symbol': 'ETH/USDT',
|
||||
'price': 3500.0,
|
||||
'confidence': 0.8,
|
||||
'timestamp': datetime.now(timezone.utc),
|
||||
'order_type': 'market', # Should use taker fee
|
||||
'filled_as_maker': False
|
||||
},
|
||||
{
|
||||
'action': 'SELL',
|
||||
'symbol': 'ETH/USDT',
|
||||
'price': 3520.0,
|
||||
'confidence': 0.9,
|
||||
'timestamp': datetime.now(timezone.utc),
|
||||
'order_type': 'limit', # Should use maker fee if filled as maker
|
||||
'filled_as_maker': True
|
||||
}
|
||||
]
|
||||
|
||||
# Process the trading decisions
|
||||
for i, decision in enumerate(test_decisions):
|
||||
logger.info(f"Processing decision {i+1}: {decision['action']} @ ${decision['price']}")
|
||||
dashboard._process_trading_decision(decision)
|
||||
|
||||
# Check session trades
|
||||
if dashboard.session_trades:
|
||||
latest_trade = dashboard.session_trades[-1]
|
||||
fee_type = latest_trade.get('fee_type', 'unknown')
|
||||
fee_rate = latest_trade.get('fee_rate', 0)
|
||||
fees = latest_trade.get('fees', 0)
|
||||
|
||||
logger.info(f" Trade recorded: {latest_trade.get('position_action', 'unknown')}")
|
||||
logger.info(f" Fee Type: {fee_type}")
|
||||
logger.info(f" Fee Rate: {fee_rate*100:.3f}%")
|
||||
logger.info(f" Fee Amount: ${fees:.4f}")
|
||||
|
||||
# Check closed trades
|
||||
if dashboard.closed_trades:
|
||||
logger.info(f"\nClosed trades: {len(dashboard.closed_trades)}")
|
||||
for trade in dashboard.closed_trades:
|
||||
logger.info(f" Trade #{trade['trade_id']}: {trade['side']}")
|
||||
logger.info(f" Fee Type: {trade.get('fee_type', 'unknown')}")
|
||||
logger.info(f" Fee Rate: {trade.get('fee_rate', 0)*100:.3f}%")
|
||||
logger.info(f" Total Fees: ${trade.get('fees', 0):.4f}")
|
||||
logger.info(f" Net P&L: ${trade.get('net_pnl', 0):.2f}")
|
||||
|
||||
# Test session performance with fee breakdown
|
||||
logger.info("\nTesting session performance display...")
|
||||
performance = dashboard._create_session_performance()
|
||||
logger.info(f"Session performance components: {len(performance)}")
|
||||
|
||||
# Test closed trades table
|
||||
logger.info("\nTesting enhanced trades table...")
|
||||
table_components = dashboard._create_closed_trades_table()
|
||||
logger.info(f"Table components: {len(table_components)}")
|
||||
|
||||
logger.info("Enhanced fee tracking test completed!")
|
||||
|
||||
return True
|
||||
|
||||
if __name__ == "__main__":
|
||||
test_enhanced_fee_tracking()
|
Reference in New Issue
Block a user