Files
crypto_news/tests/test_signal_generator.py

53 lines
1.4 KiB
Python
Raw Normal View History

2026-03-20 07:49:42 +09:00
"""Tests for the signal generator module."""
import pytest
from datetime import datetime
from indicators.multi_timeframe import TradeDirection
from strategy.signal_generator import TradeSignal
class TestTradeSignal:
"""Tests for TradeSignal dataclass."""
def test_risk_reward_ratio(self):
signal = TradeSignal(
symbol="BTC/USDT",
direction=TradeDirection.LONG,
entry_price=50000,
stop_loss=49000,
take_profit=52000,
confidence=4,
timeframe="15m",
)
assert signal.risk_reward_ratio == 2.0
def test_risk_reward_zero_risk(self):
signal = TradeSignal(
symbol="BTC/USDT",
direction=TradeDirection.LONG,
entry_price=50000,
stop_loss=50000,
take_profit=52000,
confidence=3,
timeframe="15m",
)
assert signal.risk_reward_ratio == 0.0
def test_to_dict(self):
signal = TradeSignal(
symbol="ETH/USDT",
direction=TradeDirection.SHORT,
entry_price=3000,
stop_loss=3100,
take_profit=2800,
confidence=5,
timeframe="1h",
reasons=["BOS", "OB", "FVG"],
)
d = signal.to_dict()
assert d["symbol"] == "ETH/USDT"
assert d["direction"] == "SHORT"
assert d["confidence"] == 5
assert len(d["reasons"]) == 3