
    hWi"                         d dl mZmZ d dlmZmZ d dlmZmZ d dl	Z
e G d d                      Z G d de          ZdS )	    )ABCabstractmethod)	dataclassfield)DictOptionalNc                   R    e Zd ZU eed<   eed<    ee          Zeed<   defdZ	dS )StrategyResultsignal
confidence)default_factorymetadatareturnc                 ,    | j         | j        | j        dS )Nr   r   r   r   selfs    @/var/www/html/crypto-bot/backend/app/strategies/base_strategy.pyto_dictzStrategyResult.to_dict   s     k/
 
 	
    N)
__name__
__module____qualname__str__annotations__floatr   dictr   r    r   r   r
   r
      sc         KKKU4000Hd000
 
 
 
 
 
 
r   r
   c                       e Zd ZdZddedee         fdZede	ee
j        f         defd            Zdefd	Zdefd
ZdS )BaseStrategyz/Abstract base class for all trading strategies.Nnameparamsc                 &    || _         |pi | _        d S N)r!   r"   )r   r!   r"   s      r   __init__zBaseStrategy.__init__   s    	lr   datar   c                     dS )a1  
        Analyze market data across timeframes and return a trading signal.

        Args:
            data: dict mapping timeframe strings to OHLCV DataFrames.
                  E.g. {"15m": df_15m, "1h": df_1h}

        Returns:
            StrategyResult with signal, confidence, and metadata.
        Nr   )r   r&   s     r   analyzezBaseStrategy.analyze   s	     	r   c                     | j         S r$   )r!   r   s    r   get_namezBaseStrategy.get_name*   s
    yr   c                 :    | j                             |           dS )z2Hot-reload strategy parameters without restarting.N)r"   update)r   r"   s     r   update_paramszBaseStrategy.update_params-   s    6"""""r   r$   )r   r   r   __doc__r   r   r   r%   r   r   pd	DataFramer
   r(   r*   r-   r   r   r   r    r       s        99# #S #(4. # # # # Dbl!23     ^#    #D # # # # # #r   r    )abcr   r   dataclassesr   r   typingr   r   pandasr/   r
   r    r   r   r   <module>r5      s    # # # # # # # # ( ( ( ( ( ( ( ( ! ! ! ! ! ! ! !     

 

 

 

 

 

 

 

# # # # #3 # # # # #r   