
    <`g                         d dl m Z mZ d dlmZ d dlZd dlZd dlmZmZ d dl	m
Z
 d dlmZ d dlmZ d Z ed	      Zed
   Zed   Zed   Zed   Z ej*                         Zdee   fdZy)    )datetimedate)ObjectIdN)ListDict)reactor)
KiteTicker)MongoClientc                     t        | d         | d<   | j                         D ]H  \  }}t        |t              rt        |      | |<   %t        |t              s6|j                         | |<   J | S )z5Convert MongoDB document to a JSON-compatible format._id)stritems
isinstancer   r   	isoformat)orderkeyvalues      1/var/www/html/trade_iq/helper_functions/orders.pyserialize_order_or      si     uU|$E%L kkm +
UeX&UE#Jx(*E#J	+ L    z<mongodb://jenya:DJenya$Mongo%40St0ckDB@172.105.59.175:27017/trade_iqzerodha_credentialsordersholdingsc                   	
K   | D ci c]  }|d   |
 c}
t        d       t        j                  dt        t              idddd      }|rd|vsd|vrt        d	      |d   }t        |
      t        d       t        j                  t        j                         t        j                  t              		
fd}	
fd	fd}	fd}|_        |_        |_        	 t        j                   sj#                          t        j                   rj)                          y y c c}w # t$        $ r'}	j'                  dt        |              Y d }~Rd }~ww xY w# t        j                   rj)                          w w xY ww)Ninstrument_tokenz ********************************r   r      )r   enctoken	websocketr   r   z3Incomplete or missing credentials for today's date.)
socket_url)levelc                     j                  d       | j                  t        j                                      | j	                  j
                  t        j                                      y )NzWebSocket connected)info	subscribelistkeysset_modeMODE_LTP)wsresponsekwslogger	order_maps     r   
on_connectzplace_order.<locals>.on_connect6   sF    )*
T)..*+,
CLL$y~~'7"89r   c                 4  K   |D ]  }|d   }|j                  d      }|s|s |   }|d   }|d   }t        |      t        |      z  }|d   }	|d   }
t        j                         j	                  d      }|	||||d}t
        j                  d|i      }t        |d	       |r|d
   d   |gz   }t        d |D              }t        d |D              }t        d |D              }d||||t        |d      ddi}t
        j                  d|i|       j                  d| d| d| d       -|||
d|||g|t        |d      t        |d      ddd}t
        j                  |       j                  d| d| d| d        t        d       y w)Nr   
last_pricesymbolquantityactionexchangez%Y-%m-%dT%H:%M:%S)r3   r2   	avg_priceinvested_amountexecuted_atzFOUND!!!r   summaryc              3   8   K   | ]  }t        |d            yw)r2   N)int.0items     r   	<genexpr>z4place_order.<locals>.process_tick.<locals>.<genexpr>X   s     ([4T*-=)>([   c              3   8   K   | ]  }t        |d            yw)r5   Nfloatr;   s     r   r>   z4place_order.<locals>.process_tick.<locals>.<genexpr>Y   s     )_t%[0A*B)_r?   c              3   8   K   | ]  }t        |d            yw)r6   NrA   r;   s     r   r>   z4place_order.<locals>.process_tick.<locals>.<genexpr>Z   s     (dDt4E/F)G(dr?   z$set   )total_quantitytotal_avg_pricetotal_invested)last_updatedzholdings.summaryzholdings.totalzUpdated holding for z
 at price z with quantity .i  )r8   total)r   r1   r4   allocated_balance
created_atrH   r   zCreated new entry for zProcess Finished)getrB   r   utcnowstrftimeholdings_collectionfind_oneprintsumround
update_oner#   
insert_one)r)   tickstickr   ltpr   r1   r2   r6   r3   r4   	timestampnew_summary_entryexisting_entryupdated_summaryrE   rF   rG   updated_holding_entrynew_holding_entryr,   r-   s                       r   process_tickz!place_order.<locals>.process_tick;   s     D	lD#$67((<(CC!"23x ,"'/E#J">x ,$OO-667JK	 % (!$'6#,%! "5!=!=?QSc>d!e&
3!&4Z&@&KO`Na&aO%(([?([%[N&))_)_&_O%((dTc(d%dN ,50?2@3B272J/!
-) (22+-=>- KK"6vhj_]e\ffg hi -="($,-1&/(1(9':2:38a=272K&%)%" (223DEKK"8
3%_g^hhi jkID	lJ 	 !s   FFE2Fc                     j                  d|       t        j                   | |             | j                          y )NzTicks received: %s)r#   asynciocreate_taskclose)r)   rW   r,   r`   s     r   on_tickszplace_order.<locals>.on_ticks   s0    (%0LU34

r   c                     j                  d| d|        t        j                  rj                          t        j                  dj
                         y )NzWebSocket closed: Code=z	, Reason=rD   )r#   r   runningstop	callLaterconnect)r)   codereasonr+   r,   s      r   on_closezplace_order.<locals>.on_close   sA    -dV9VHEF??HHJ!S[[)r   z"Error during WebSocket operation: )rR   creds_collectionrQ   r   today
ValueErrorr	   loggingbasicConfigINFO	getLogger__name__r.   re   rm   r   rg   rj   	Exceptionerrorrh   )r   r   credsr   r.   re   rm   er+   r,   r-   r`   s           @@@@r   place_orderrz   &   sT    ?EFe)*E1FI	
,- %%vs5z&:ASTcd<efEJe+{%/GNOOk"I
	
*C	
,-gll+x(F:
F"P
*  CNCLCLKKM ??HHJ c G\  D9#a&BCCD ??HHJ sF   FD.CF, D3 'F3	E#<EE& E##E& &#F		F)r   r   bsonr   rq   rb   typingr   r   twisted.internetr   zerodha.zerodha_tickerr	   pymongor
   r   clientdatabasern   orders_collectionrP   ro   rz    r   r   <module>r      sz    #     $ -  
S	T*12 X& z* 

sd4j sr   