Local changes: Updated model training, removed debug instrumentation, and configuration improvements
This commit is contained in:
52
tests/unit/strategies/test_dca_strategy.py
Normal file
52
tests/unit/strategies/test_dca_strategy.py
Normal file
@@ -0,0 +1,52 @@
|
||||
"""Tests for DCA strategy."""
|
||||
|
||||
import pytest
|
||||
from decimal import Decimal
|
||||
from datetime import datetime, timedelta
|
||||
from src.strategies.dca.dca_strategy import DCAStrategy
|
||||
|
||||
|
||||
def test_dca_strategy_initialization():
|
||||
"""Test DCA strategy initializes correctly."""
|
||||
strategy = DCAStrategy("Test DCA", {"amount": 10, "interval": "daily"})
|
||||
assert strategy.name == "Test DCA"
|
||||
assert strategy.amount == Decimal("10")
|
||||
assert strategy.interval == "daily"
|
||||
|
||||
|
||||
def test_dca_daily_interval():
|
||||
"""Test DCA with daily interval."""
|
||||
strategy = DCAStrategy("Daily DCA", {"amount": 10, "interval": "daily"})
|
||||
assert strategy.interval_delta == timedelta(days=1)
|
||||
|
||||
|
||||
def test_dca_weekly_interval():
|
||||
"""Test DCA with weekly interval."""
|
||||
strategy = DCAStrategy("Weekly DCA", {"amount": 10, "interval": "weekly"})
|
||||
assert strategy.interval_delta == timedelta(weeks=1)
|
||||
|
||||
|
||||
def test_dca_monthly_interval():
|
||||
"""Test DCA with monthly interval."""
|
||||
strategy = DCAStrategy("Monthly DCA", {"amount": 10, "interval": "monthly"})
|
||||
assert strategy.interval_delta == timedelta(days=30)
|
||||
|
||||
|
||||
def test_dca_signal_generation():
|
||||
"""Test DCA generates buy signals."""
|
||||
strategy = DCAStrategy("Test DCA", {"amount": 10, "interval": "daily"})
|
||||
strategy.last_purchase_time = None
|
||||
|
||||
signal = strategy.on_tick("BTC/USD", Decimal("100"), "1h", {})
|
||||
assert signal is not None
|
||||
assert signal.signal_type.value == "buy"
|
||||
assert signal.quantity == Decimal("0.1") # 10 / 100
|
||||
|
||||
|
||||
def test_dca_interval_respect():
|
||||
"""Test DCA respects interval timing."""
|
||||
strategy = DCAStrategy("Test DCA", {"amount": 10, "interval": "daily"})
|
||||
strategy.last_purchase_time = datetime.utcnow() - timedelta(hours=12)
|
||||
|
||||
signal = strategy.on_tick("BTC/USD", Decimal("100"), "1h", {})
|
||||
assert signal is None # Should not generate signal yet
|
||||
Reference in New Issue
Block a user