
    9&j                        d dl mZ d dlmZ d dlmZ d dlmZ  ed           G d d                      Z ed           G d	 d
                      Z	 ed           G d d                      Z
dS )    )annotations)	dataclass)Decimal)OrderIntentT)frozenc                  .    e Zd ZU ded<   ded<   ded<   dS )RiskContextintopen_positionsboolkill_switch_activedaily_loss_exceededN)__name__
__module____qualname____annotations__     Q/home/agent/projects/CryptoTradingBot/Crypto_Agent/src/risk/pretrade_risk_gate.pyr	   r	   	   s6         r   r	   c                  (    e Zd ZU ded<   dZded<   dS )RiskDecisionr   allowedr   ztuple[str, ...]reasonsN)r   r   r   r   r   r   r   r   r   r      s,         MMM!G!!!!!!r   r   c                  H    e Zd ZU ded<   ded<   dZded<   dZded<   ddZdS )PretradeRiskGater   min_order_notional_usdr
   max_parallel_positionsNzDecimal | Nonemax_order_notional_usdmax_risk_usdintentr   contextr	   returnr   c                v   g }|j         r|                    d           |j        r|                    d           |j        s|j        |                    d           |j        s%|j        | j        k     r|                    d           | j        ,|j        s%|j        | j        k    r|                    d           | j        ,|j        s%|j	        | j        k    r|                    d           |j        s%|j
        | j        k    r|                    d           t          | t          |                    S )	Nkill_switchr   stop_loss_requiredmin_notionalmax_notionalmax_riskr   )r   r   )r   appendr   reduce_only	stop_lossestimated_notional_usdr   r   r   risk_usdr   r   r   tuple)selfr    r!   r   s       r   evaluatezPretradeRiskGate.evaluate   sR   % 	*NN=)))& 	2NN0111! 	1f&6&>NN/000! 	+f&CdFa&a&aNN>***&26;M2RXRorv  sN  SN  SNNN>***(1C(Z^ZkHkHkNN:&&&! 	5g&<@[&[&[NN3444KwHHHHr   )r    r   r!   r	   r"   r   )r   r   r   r   r   r   r0   r   r   r   r   r      sk         ####-11111#'L''''I I I I I Ir   r   N)
__future__r   dataclassesr   decimalr   src.execution.order_intentr   r	   r   r   r   r   r   <module>r5      s'   " " " " " " ! ! ! ! ! !       2 2 2 2 2 2 $        $" " " " " " " "
 $I I I I I I I I I Ir   