
    n,gn                     \    d dl Z d dlmZ d dlmZ  ed      Zed   Zed   Z G d d      Zy)	    N)
KiteTicker)MongoClientz7mongodb://jenya:DJenya$Mongo%40St0ckDB@127.0.0.1:27017/trade_iqzerodha_instrumentsc                   <    e Zd Zd	dZd
dZd
dZd Zd Zd Zd Z	y)	Portfolioc                 Z    || _         || _        dg| _        || _        i | _        i | _        y )Nr   )cash_balance	money_endtotal_investmentsymbol
investmentholdings)selfr   r
   s      &/var/www/html/trade_iq/portfolioObj.py__init__zPortfolio.__init__   s0    (%!"    c           	      V   t        |      |z  }|| j                  k  r| xj                  |||z  z   z  c_        | j                  | j                  vrQ|t        |      d| j                  | j                  <   | j
                  j                  || j
                  d   z          n|| j
                  j                  || j
                  d   z          | j                  | j                     dxx   |z  cc<   | j                  | j                     dxx   t        |      z  cc<   | j                  | j                  vrNt        t        t        |            d      t        |d      t        |d      d| j                  | j                  <   nQ| j                  | j                     dxx   t        |      z  cc<   | j                  | j                     dxx   |z  cc<   t        d| d	| j                  j                          d
| d       y t        d| j                  j                                 y )N)TotalQuantityr   r      )r   	Buy PriceInvestedr   zBought z shares of z at $z each.z4Insufficient Balance!, Order cannot be executed for )intr
   r   r   r   r   appendr   roundprintupper)r   buy_quantity	buy_pricetransaction_costallocated_moneys        r   	buy_stockzPortfolio.buy_stock   s   l+i7d///NN2B_2TUVN{{$//19HVYZfVg/h,%%,,_t?T?TUW?X-XY%%,,_t?T?TUW?X-XY,W5H5,Z8C<MM8{{$--/:?CDU@VXY:Zinoxz{i|  KP  Q`  bc  Kd  .edkk*dkk*:6#l:KK6dkk*:6/I6GL>T[[5F5F5H4IykY_`aHIZIZI\H]^_r   c                    | j                   | j                  v r| j                  | j                      d   |k\  r||z  }| xj                  |||z  z
  z  c_        | j                  | j                      dxx   |z  cc<   | j                  | j                      dxx   || j                  | j                      d   z  z  cc<   | j                  | j                      d   dk(  r@| j                  | j                   = y t        d| j                   j	                          d       y y t        d| j                   j	                          d       y )Nr   r   r   r   zInsufficient quantity of z shares to sell.zYou do not hold any )r   r   r
   r   r   )r   sell_quantity
sell_pricer"   sale_proceedss        r   
sell_stockzPortfolio.sell_stock+   s   ;;$--'}}T[[)*5F -
 :!!m7G-7W&XY!dkk*:6-G6dkk*:6=4==Y]YdYdKefqKr;rs6==-j9Q>dkk21$++2C2C2E1FFVWX ?
 ():):)<(==MNOr   c                     | j                   }| j                  j                         D ]%  \  | _        }| j	                         }|||d   z  z  }' |S )Nr   )r
   r   itemsr   get_current_price)r   total_valueholdingcurrent_prices       r   portfolio_valuezPortfolio.portfolio_value9   sZ    ''$(MM$7$7$9 	? DK 224M=7:+>>>K	? r   c                    | j                   dk7  rg }t        j                  d| j                   iddi      }|r|d   ndt        d| j                    d       t	               }t        j                  t
        j                         d	 }fd
}d }||_        ||_	        ||_
        |j                          |d   }|S y)a  
        socket = wss://ws.zerodha.com/?api_key=kitefront&user_id=GMG829&enctoken=CXBxri9sLiSZJb%2FPSwA823fdkY5VO4vPKgpbwUM5ynGDaGk6g0nNp%2BjJdX1iU5CHX4hNgpFLF0vdpu8Ac%2F8lOZomrmi9HLs00dvI9xerJ1BhfksFbWGmXw%3D%3D&uid=1707971555312&user-agent=kite3-web&version=3.0.0&a=mode
         tradingsymbolinstrument_token   NzInstrument token for :)levelc                     |d   d   }y )Nr   
last_price )wsticks
currentLTPs      r   on_ticksz-Portfolio.get_current_price.<locals>.on_ticksR   s    "2Y|4
r   c                 <    | j                  t              g       y N)	subscriber   )r;   responseinstrumentTKNs     r   
on_connectz/Portfolio.get_current_price.<locals>.on_connectZ   s    c-012r   c                 $    | j                          y r@   )stop)r;   codereasons      r   on_closez-Portfolio.get_current_price.<locals>.on_close]   s    	r   r   )r   
collectionfind_oner   r   loggingbasicConfigDEBUGr>   rD   rI   connect)	r   currentLTP_listresultkwsr>   rD   rI   r/   rC   s	           @r   r,   zPortfolio.get_current_price@   s     ;;" O  ((/4;;)GJ\^_I`aF:@F#56dM)$++a8-H ,Cgmm453 $CL'CN#CLKKM+B/M  C r   c                     | j                   | j                  v r]| j                  | j                      d   | j                  | j                      d   z  }||z
  | j                  | j                      d   z  }|S yNr   r   r   r   r   )r   r/   average_buy_priceprofit_losss       r   calculate_profit_losszPortfolio.calculate_profit_lossi   sq    ;;$--' $dkk :: FW[WbWbIcdnIo o(+<<dkk@Z[e@ffKr   c                     | j                   | j                  v r9| j                  | j                      d   | j                  | j                      d   z  S yrT   rU   )r   s    r   average_buying_pricezPortfolio.average_buying_priceq   sE    ;;$--'==-j9DMM$++<VWa<bbbr   N)i )g333333?)
__name__
__module____qualname__r   r$   r)   r0   r,   rX   rZ   r:   r   r   r   r      s(    `,P'!Rr   r   )	rL   zerodha.zerodha_tickerr   pymongor   clientdatabaserJ   r   r:   r   r   <module>rb      s<     - 
 
N	O*+,
i ir   