46 lines
1.3 KiB
Python
46 lines
1.3 KiB
Python
"""Tests for MACD strategy."""
|
|
|
|
import pytest
|
|
import pandas as pd
|
|
from src.strategies.technical.macd_strategy import MACDStrategy
|
|
|
|
|
|
class TestMACDStrategy:
|
|
"""Tests for MACDStrategy."""
|
|
|
|
@pytest.fixture
|
|
def strategy(self):
|
|
"""Create MACD strategy instance."""
|
|
return MACDStrategy(
|
|
strategy_id=1,
|
|
name="test_macd",
|
|
symbol="BTC/USD",
|
|
timeframe="1h",
|
|
parameters={
|
|
"fast_period": 12,
|
|
"slow_period": 26,
|
|
"signal_period": 9
|
|
}
|
|
)
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_macd_strategy_initialization(self, strategy):
|
|
"""Test MACD strategy initialization."""
|
|
assert strategy.fast_period == 12
|
|
assert strategy.slow_period == 26
|
|
assert strategy.signal_period == 9
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_generate_signal(self, strategy):
|
|
"""Test signal generation."""
|
|
# Create minimal data
|
|
data = pd.DataFrame({
|
|
'close': [100 + i * 0.1 for i in range(50)]
|
|
})
|
|
strategy.current_data = data
|
|
|
|
signal = await strategy.generate_signal()
|
|
assert "signal" in signal
|
|
assert signal["signal"] in ["buy", "sell", "hold"]
|
|
|