"""Strategies package."""

from .base import BaseStrategy, StrategyRegistry, get_strategy_registry, SignalType, StrategySignal
from .technical.rsi_strategy import RSIStrategy
from .technical.macd_strategy import MACDStrategy
from .technical.moving_avg_strategy import MovingAverageStrategy
from .technical.confirmed_strategy import ConfirmedStrategy
from .technical.divergence_strategy import DivergenceStrategy
from .technical.bollinger_mean_reversion import BollingerMeanReversionStrategy
from .dca.dca_strategy import DCAStrategy
from .grid.grid_strategy import GridStrategy
from .momentum.momentum_strategy import MomentumStrategy
from .ensemble.consensus_strategy import ConsensusStrategy
from .technical.pairs_trading import PairsTradingStrategy
from .technical.volatility_breakout import VolatilityBreakoutStrategy
from .sentiment.sentiment_strategy import SentimentStrategy
from .market_making.market_making_strategy import MarketMakingStrategy

# Register strategies
registry = get_strategy_registry()
registry.register("rsi", RSIStrategy)
registry.register("macd", MACDStrategy)
registry.register("moving_average", MovingAverageStrategy)
registry.register("confirmed", ConfirmedStrategy)
registry.register("divergence", DivergenceStrategy)
registry.register("bollinger_mean_reversion", BollingerMeanReversionStrategy)
registry.register("dca", DCAStrategy)
registry.register("grid", GridStrategy)
registry.register("momentum", MomentumStrategy)
registry.register("consensus", ConsensusStrategy)
registry.register("pairs_trading", PairsTradingStrategy)
registry.register("volatility_breakout", VolatilityBreakoutStrategy)
registry.register("sentiment", SentimentStrategy)
registry.register("market_making", MarketMakingStrategy)

__all__ = [
    'BaseStrategy', 'StrategyRegistry', 'get_strategy_registry',
    'SignalType', 'StrategySignal',
    'RSIStrategy', 'MACDStrategy', 'MovingAverageStrategy',
    'ConfirmedStrategy', 'DivergenceStrategy', 'BollingerMeanReversionStrategy',
    'DCAStrategy', 'GridStrategy', 'MomentumStrategy',
    'ConsensusStrategy', 'PairsTradingStrategy', 'VolatilityBreakoutStrategy',
    'SentimentStrategy', 'MarketMakingStrategy'
]

