
    뿼i                     0    d dl Z d dlZd dlZ G d d      Zy)    Nc                   2    e Zd ZddZd Zd Zd Zd Zd Zy)	RiskManagerc                     || _         || _        t        j                  j	                  |d      | _        t        j                  j	                  |d      | _        d| _        g | _        | j                          y )Nzperformance.jsonztrades_log.json        )
config	data_pathospathjoinperformance_file
trades_log	daily_pnlopen_positionsload_performance)selfr   r   s      0/var/www/app/trading-bot/modules/risk_manager.py__init__zRiskManager.__init__   sZ    " "Y8J K'',,y2CD     c                     t         j                  j                  | j                        r:t	        | j                  d      5 }t        j                  |      | _        d d d        y dddd| _        y # 1 sw Y   y xY w)Nrr   r   )	total_pnlr   total_trades)r	   r
   existsr   openjsonloadperformancer   fs     r   r   zRiskManager.load_performance   sf    77>>$//0d++S1 0Q#'99Q< 0 0 .1sTUVD0 0s    A00A9c                     t        | j                  d      5 }t        j                  | j                  |d       d d d        y # 1 sw Y   y xY w)Nw   indent)r   r   r   dumpr   r   s     r   save_performancezRiskManager.save_performance   s?    $''- 	5IId&&!4	5 	5 	5s   #AAc                 6    | j                   d   d   }||dz  z  S )Nrisk_managementmax_pos_size_pctg      Y@)r   )r   balancemax_pcts      r   calculate_position_sizez#RiskManager.calculate_position_size   s&    ++/01CD'E/**r   c                     || j                   d   d   k\  rt        j                  d       y| j                  d   | j                   d   d    k  rt        j                  d       yy	)
Nbot_settingsmax_positionszMax positions reached.Fr   r(   max_daily_loss_pctz'Max daily loss reached. Trading halted.T)r   loggingwarningr   critical)r   current_positions_counts     r   can_open_positionzRiskManager.can_open_position   sc    "dkk.&A/&RROO45K(DKK8I,JK_,`+``FGr   c                 l   g }t         j                  j                  | j                        r4t	        | j                  d      5 }t        j                  |      }d d d        |j                  |       t	        | j                  d      5 }t        j                  ||d       d d d        | j                  dxx   dz  cc<   | j                  dxx   |j                  dd	      z  cc<   | j                  d
xx   |j                  dd	      z  cc<   | j                          y # 1 sw Y   xY w# 1 sw Y   xY w)Nr   r!   r"   r#   r      r   pnlr   r   )r	   r
   r   r   r   r   r   appendr%   r   getr&   )r   
trade_datatradesr   s       r   	log_tradezRiskManager.log_trade)   s    77>>$//*doos+ &q1& 	j!$//3' 	+1IIfa*	+ 	(A-(%s)CC%%s)CC%& &	+ 	+s   DD*D'*D3N)z2c:/Program Files/Ampps/www/winner/trading-bot/data)	__name__
__module____qualname__r   r   r&   r,   r5   r=    r   r   r   r      s!     W5+	 r   r   )r   r1   r	   r   rA   r   r   <module>rB      s      	1  1 r   