
    ig                     4   d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlZd dlZd dl	Z	d dl
Z
d dl	mZ d dlmZ  ej                  e      Z G d d      Z G d d      Z G d	 d
      Z G d d      Z G d d      Z G d d      Zd Zd Zd Z G d de      Zy)    N)Enum)sleep)datetimec                   x    e Zd ZU eed<   eed<   eed<   eed<   eed<   eed<   eed<   eed<   eed	<   eed
<   d Zy)positionprdexchinstnamesymnameexdopttstrprcbuyqtysellqtynetqtyc                     | j                   S N)__dict__selfs    WC:\Janisar\Projects\MarketYanta\Yantra\yantra\trading\NorenRestApiPy\NorenApiWrapper.pyencodezposition.encode   s    }}    N)__name__
__module____qualname__str__annotations__intfloatr    r   r   r   r      s9    	H
IML	H
IMKLKr   r   c                       e Zd ZdZdZdZdZy)ProductTypeCIMN)r   r   r   DeliveryIntradayNormalCFr!   r   r   r#   r#   !   s    HHF	Br   r#   c                       e Zd ZdZdZy)FeedType      N)r   r   r   	TOUCHLINE	SNAPQUOTEr!   r   r   r,   r,   (   s    IIr   r,   c                       e Zd ZdZdZdZdZy)	PriceTypeMKTLMTSL-LMTSL-MKTN)r   r   r   MarketLimitStopLossLimitStopLossMarketr!   r   r   r2   r2   -   s    FEMNr   r2   c                       e Zd ZdZdZy)	BuyorSellBSN)r   r   r   BuySellr!   r   r   r<   r<   4   s    
CDr   r<   c                       e Zd ZdZdZdZy)	AlertTypeLTP_A_OLTP_B_O	LMT_BOS_ON)r   r   r   	LTP_ABOVE	LTP_BELOWLTP_OCOr!   r   r   rB   rB   8   s    IIGr   rB   c                 .    t         j                  |        y r   )loggerdebugmsgs    r   	reportmsgrN   =       
LLr   c                 .    t         j                  |        y r   )rJ   errorrL   s    r   reporterrorrR   B   rO   r   c                 .    t         j                  |        y r   )rJ   inforL   s    r   
reportinforU   G   s    
KKr   c                   F   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdi ddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCZdD ZdE ZdF ZdG ZdqdIZdrdJZdsdKZ	 	 	 	 	 dtdLZdM ZdN ZdO ZdP ZdQ Zej@                  fdRZ!ej@                  fdSZ"dT Z#dU Z$dV Z%dW Z&dX Z'	 	 dudYZ(	 dvdZZ)d[ Z*d\ Z+d] Z,d^ Z-d_ Z.d` Z/da Z0dwdbZ1dc Z2dd Z3dxdeZ4drdfZ5dqdgZ6dxdhZ7di Z8dje9fdkZ:dl Z;dm Z<dn Z=	 	 	 	 	 	 dydoZ>dp Z?yH)zNorenApir>   r=   r%   r$   r&   r3   r4   r5   r6   rC   rD   	LTP_BOS_Or-   r.   zhttp://wsapihost/	authorizez
/QuickAuthlogoutz/Logoutforgot_passwordz/ForgotPasswordchange_passwordz
/Changepwdwatchlist_namesz/MWList	watchlistz/MarketWatchwatchlist_addz/AddMultiScripsToMWwatchlist_deletez/DeleteMultiMWScrips
placeorderz/PlaceOrdermodifyorderz/ModifyOrdercancelorderz/CancelOrder	exitorderz/ExitSNOOrderproduct_conversionz/ProductConversion	orderbookz
/OrderBook	tradebookz
/TradeBooksingleorderhistoryz/SingleOrdHistsearchscripz/SearchScripz	/TPSeriesz/GetOptionChainz	/Holdingsz/Limitsz/PositionBookz/GetSecurityInfoz
/GetQuotesz	/SpanCalcz/GetOptionGreekz/EODChartDataz/PlaceGTTOrderz/GetPendingGTTOrderz/GetEnabledGTTsz/CancelGTTOrderz/PlaceOCOOrder)TPSeriesoptionchainholdingslimits	positions	scripinfo	getquotesspan_calculatoroption_greekget_daily_price_seriesplacegttgtt
enabledgtt	cancelgttocogttzwss://wsendpoint/)hostrouteswebsocket_endpointc                     || j                   d<   || j                   d<   d | _        d| _        t        j                         | _        d | _        d | _        d | _        d | _	        d | _
        i | _        g | _        g | _        y )Nry   r{   F)_NorenApi__service_config_NorenApi__websocket_NorenApi__websocket_connected	threadingLock_NorenApi__ws_mutex_NorenApi__on_error_NorenApi__on_disconnect_NorenApi__on_open_NorenApi__subscribe_callback _NorenApi__order_update_callback_NorenApi__subscribers!_NorenApi__market_status_messages_NorenApi__exchange_messages)r   ry   	websockets      r   __init__zNorenApi.__init__   s    (,f%6?23  %*"#..*#$(!'+$(*%#% r   c                 *   | j                   j                         dk(  rH	 | j                  j                  dd       t        d       | j                   j                         dk(  rGy y # t        $ r"}t
        j                  d|        Y d }~Qd }~ww xY w)NF   z	{"t":"h"})ping_intervalping_payloadz*websocket run forever ended in exception, g?)_NorenApi__stop_eventis_setr~   run_forever	ExceptionrJ   warningr   )r   es     r   __ws_run_foreverzNorenApi.__ws_run_forever   s    &&(E1F  ,,"#; - @ #J &&(E1  F@DF FFs   A' '	B0BBc                     | j                   dk(  rt        d       | j                   dk(  r| j                  5   | j                  j                  |i |}d d d        |S # 1 sw Y   S xY w)NFg?)r   r   r   r~   send)r   argskwargsrets       r   	__ws_sendzNorenApi.__ws_send   sb    ((E1$K ((E1 __'$""''88C 
 
s   AA(c                 x    t        |       t        |       d| _        | j                  r| j                          y y NF)rN   r   r   )r   wsappclose_status_code	close_msgs       r   __on_close_callbackzNorenApi.__on_close_callback   s5    #$%%*"  "  r   Nc                     d| _         ddi}| j                  |d<   | j                  |d<   | j                  |d<   d|d<   t        j                  |      }t        |       | j                  |       y )	NTtcuidactid
susertokenAPIsource)r   _NorenApi__username_NorenApi__susertokenjsondumpsrN   _NorenApi__ws_send)r   wsvaluespayloads       r   __on_open_callbackzNorenApi.__on_open_callback   sk    %)" su//w#00| x**V$'wr   c                 z    t        |      t        j                  ur|}| j                  r| j                  |       y y r   )typer   WebSocketAppr   )r   r   rQ   s      r   __on_error_callbackzNorenApi.__on_error_callback   s1    HI222E??OOE" r   c                    t        j                  |      }| j                  D|d   dk(  s|d   dk(  r| j                  |       y |d   dk(  s|d   dk(  r| j                  |       y | j                  "|d   dk(  r|d   dk7  r| j                  |       y | j                  |d   d	k(  r| j	                  |       y | j
                  r#|d   dk(  r|d   dk(  r| j                          y y y y )
Nr   tktfdkdfcksOKom)r   loadsr   r   r   r   )r   r   message	data_typecontinue_flagress         r   __on_data_callbackzNorenApi.__on_data_callback   s     jj!%%13x43s8t#3))#.3x43s8t#3))#.OO'3x4CH$4$((43x4,,S1>>3x4CH$4  %5 r   c                 0   || _         || _        || _        || _        || _        t        j                         | _        | j                  d   j                  | j                        }t        dj                  |             t        j                  || j                  | j                  | j                   | j"                        | _        t        j&                  | j(                        | _        d| j*                  _        | j*                  j/                          y)z4 Start a websocket connection for getting live data r{   )access_tokenzconnecting to {})on_dataon_erroron_closeon_open)targetTN)r   r   r   r   r   r   Eventr   r}   formatr   rN   r   r   _NorenApi__on_data_callback_NorenApi__on_error_callback_NorenApi__on_close_callback_NorenApi__on_open_callbackr~   Thread_NorenApi__ws_run_forever_NorenApi__ws_threaddaemonstart)r   subscribe_callbackorder_update_callbacksocket_open_callbacksocket_close_callbacksocket_error_callbackurls          r   start_websocketzNorenApi.start_websocket   s     .4/$6!'<$%OO-##$89@@** A ,$++C01$11#:>:Q:Q;?;S;S;?;S;S:>:Q:Q	S %++43H3HI"& r   c                     | j                   dk(  ry | j                  j                          d| _         | j                  j	                          | j
                  j                          y r   )r   r   setr~   closer   joinr   s    r   close_websocketzNorenApi.close_websocket	  sQ    %%.%*" r   c                    t         j                  }|d    |d   d    }t        |       t        j                  |j                  d            j                         }	dj                  ||      }
t        j                  |
j                  d            j                         }ddd}||d	<   |	|d
<   ||d<   ||d<   ||d<   ||d<   dt        j                  |      z   }t        d|z          t        j                  ||      }t        d|j                  z          t        j                  |j                        }|d   dk7  ry || _        || _        || _        |d   | _        |S )Nry   rz   rY   zutf-8z{0}|{1}r   z1.0.0)r   
apkversionr   pwdfactor2vcappkeyimeijData=Req:dataReply:statOkr   )rW   r}   rN   hashlibsha256r   	hexdigestr   r   r   requestsposttextr   r   _NorenApi__accountid_NorenApi__passwordr   )r   useridpasswordtwoFAvendor_code
api_secretr   configr   r   	u_app_keyapp_keyr   r   r   resDicts                   r   loginzNorenApi.login  sX   **  !1+!> ?@# nnX__W56@@B$$VZ8	..!1!1'!:;EEG!9uu!y"t"xvTZZ//&7"#mmCg.(SXX%&**SXX&6?d" !"#L1 r   c                 p    || _         || _        || _        || _        t	        | d| j                          y)Nz session set to : T)r   r   r   r   rN   )r   r   r   	usertokens       r   set_sessionzNorenApi.set_session7  s>     !"%VH.t/@/@.ABCr   c                 z   t         j                  }|d    |d   d    }t        |       ddi}||d<   ||d<   ||d<   d	t        j                  |      z   }t        d
|z          t        j                  ||      }t        d|j                  z          t        j                  |j                        }	|	d   dk7  ry |	S )Nry   rz   r[   r   r   r   pandobr   r   r   r   r   r   )	rW   r}   rN   r   r   r   r   r   r   )
r   r   r
  r  r  r   r   r   r   r  s
             r   r[   zNorenApi.forgot_passwordB  s    **  !12C!D EF# E"uuuTZZ//&7"#mmCg.(SXX%&**SXX&6?d"r   c                    t         j                  }|d    |d   d    }t        |       ddi}| j                  |d<   dt	        j
                  |      z   d| j                   z   }t        |       t        j                  ||	      }t        |j                         t	        j                  |j                        }|d
   dk7  ry d | _        d | _        d | _        d | _        |S )Nry   rz   rZ   ordersourcer   r   r   &jKey=r   r   r   )rW   r}   rN   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r   r  s          r   rZ   zNorenApi.logout\  s    **  !1(!; <=#'uTZZ//F4;L;L:M2NN'mmCg.#((**SXX&6?d" r   c                 ,   i }|t         j                  k(  rd|d<   n'|t         j                  k(  rd|d<   nt        |      |d<   t	        |      t
        k(  rdj                  |      |d<   n||d<   t        j                  |      }| j                  |       y )Nr   d#k)
r,   r/   r0   r   r   listr   r   r   r   r   
instrument	feed_typer   r   s        r   	subscribezNorenApi.subscribex  s    +++F3K8---F3Ki.F3K
t#((:.F3K$F3Kzz&! 	tr   c                    i }|t         j                  k(  rd|d<   n|t         j                  k(  rd|d<   t        |      t        k(  rdj                  |      |d<   n||d<   t        j                  |      }| j                  |       y )Nur   udr  r  )	r,   r/   r0   r   r  r   r   r   r   r  s        r   unsubscribezNorenApi.unsubscribe  sy    +++F3K8---F3K
t#((:.F3K$F3Kzz&! 	tr   c                     ddi}| j                   |d<   t        j                  |      }t        |       | j	                  |       y )Nr   or   )r   r   r   rN   r   )r   r   r   s      r   subscribe_orderszNorenApi.subscribe_orders  s;    s**wzz&!$tr   c                    t         j                  }|d    |d   d    }t        |       ddi}| j                  |d<   dt	        j
                  |      z   d| j                   z   }t        |       t        j                  ||	      }t        |j                         t	        j                  |j                        }|d
   dk7  ry |S )Nry   rz   r]   r  r   r   r   r  r   r   r   rW   r}   rN   r   r   r   r   r   r   r   r   r  s          r   get_watch_list_nameszNorenApi.get_watch_list_names  s    **  !12C!D EF#'uTZZ//F4;L;L:M2NN'mmCg.#((**SXX&6?d"r   c                    t         j                  }|d    |d   d    }t        |       ddi}| j                  |d<   ||d<   dt	        j
                  |      z   d	| j                   z   }t        |       t        j                  ||
      }t        |j                         t	        j                  |j                        }|d   dk7  ry |S )Nry   rz   r^   r  r   r   wlnamer   r  r   r   r   r!  )r   r$  r  r   r   r   r   r  s           r   get_watch_listzNorenApi.get_watch_list  s    **  !1+!> ?@#'u!xTZZ//F4;L;L:M2NN'mmCg.#((**SXX&6?d"r   c                    t         j                  }|d    |d   d    }t        |       ddi}| j                  |d<   ||d<   t	        |      t
        k(  rdj                  |      |d	<   n||d	<   d
t        j                  |      z   d| j                   z   }t        |       t        j                  ||      }t        |j                         t        j                  |j                        }|d   dk7  ry |S )Nry   rz   r_   r  r   r   r$  r  scripsr   r  r   r   r   rW   r}   rN   r   r   r  r   r   r   r   r   r   r   r   	r   r$  r  r  r   r   r   r   r  s	            r   add_watch_list_scripzNorenApi.add_watch_list_scrip  s    **  !1/!B CD#'u!x
t#"xx
3F8)F8TZZ//F4;L;L:M2NN'mmCg.#((**SXX&6?d"r   c                    t         j                  }|d    |d   d    }t        |       ddi}| j                  |d<   ||d<   t	        |      t
        k(  rdj                  |      |d	<   n||d	<   d
t        j                  |      z   d| j                   z   }t        |       t        j                  ||      }t        |j                         t        j                  |j                        }|d   dk7  ry |S )Nry   rz   r`   r  r   r   r$  r  r'  r   r  r   r   r   r(  r)  s	            r   delete_watch_list_scripz NorenApi.delete_watch_list_scrip  s    **  !12D!E FG#'u!x
t#"xx
3F8)F8TZZ//F4;L;L:M2NN'mmCg.#((**SXX&6?d"r   c                 Z   t         j                  }|d    |d   d    }t        |       ddi}| j                  |d<   | j                  |d<   ||d<   ||d	<   ||d
<   t
        j                  j                  |      |d<   t        |      |d<   t        |      |d<   ||d<   t        |      |d<   t        |	      |d<   |
|d<   ||d<   ||d<   |dk(  r!t        |      |d<   |dk7  rt        |      |d<   |dk(  r/t        |      |d<   t        |      |d<   |dk7  rt        |      |d<   dt        j                  |      z   d| j                   z   }t        |       t        j                  ||      }t        |j                         t        j                  |j                        }|d   dk7  ry |S )Nry   rz   ra   r  r   r   r   trantyper   r	   tsymqtydscqtyprctypprctrgprcr   remarksamoHblprc        trailprcr=   bpprcr   r  r   r   r   rW   r}   rN   r   r   urllibparse
quote_plusr   r   r   r   r   r   r   r   )r   buy_or_sellproduct_typeexchangetradingsymbolquantitydiscloseqty
price_typepricetrigger_price	retentionr6  r5  bookloss_pricebookprofit_pricetrail_pricer  r   r   r   r   r  s                         r   place_orderzNorenApi.place_order  s    **  !1,!? @A#'u**w(z$u!v00?vHu{+x%xE
u}-x!u#yu 3!.1F7Oc!%(%5z" 3!.1F7O!"23F7Oc!%(%5z"TZZ//F4;L;L:M2NN'mmCg.#((**SXX&6?d"r   c                    t         j                  }|d    |d   d    }t        |       ddi}| j                  |d<   | j                  |d<   t        |      |d<   ||d	<   t        j                  j                  |      |d
<   t        |      |d<   ||d<   t        |      |d<   |dk(  s|dk(  r |d k7  rt        |      |d<   nt        d       y |dk7  rt        |      |d<   |
dk7  rt        |
      |d<   |	dk7  rt        |	      |d<   dt        j                  |      z   d| j                   z   }t        |       t        j                  ||      }t        |j                          t        j"                  |j                         }|d   dk7  ry |S )Nry   rz   rb   r  r   r   r   
norenordnor	   r/  r0  r2  r3  r5   r6   r4  ztrigger price is missingr9  r8  r:  r;  r   r  r   r   r   )rW   r}   printr   r   r   r=  r>  r?  rR   r   r   r   rN   r   r   r   r   )r   ordernorB  rC  newquantitynewprice_typenewpricenewtrigger_pricerJ  rK  rL  r  r   r   r   r   r  s                    r   modify_orderzNorenApi.modify_orderD  s   **  !1-!@ ABc
  'u**w"7||!v00?vK(u(xHuX%=H+D D(#&'7#8x 67 S !.1F7O#!$[!1F:s"!"23F7OTZZ//F4;L;L:M2NN'mmCg.#((**SXX&6?d"r   c                    t         j                  }|d    |d   d    }t        |       ddi}| j                  |d<   t	        |      |d<   dt        j                  |      z   d	| j                   z   }t        |       t        j                  ||
      }t        |j                         t        j                  |j                        }|d   dk7  ry |S )Nry   rz   rc   r  r   r   rO  r   r  r   r   r   rW   r}   rP  r   r   r   r   r   rN   r   r   r   r   r   rQ  r  r   r   r   r   r  s           r   cancel_orderzNorenApi.cancel_orderu  s    **  !1-!@ ABc
  'u"7||TZZ//F4;L;L:M2NN'mmCg.chh**SXX&6?d"r   c                    t         j                  }|d    |d   d    }t        |       ddi}| j                  |d<   ||d<   ||d<   d	t	        j
                  |      z   d
| j                   z   }t        |       t        j                  ||      }t        |j                         t	        j                  |j                        }|d   dk7  ry |S )Nry   rz   rd   r  r   r   rO  r   r   r  r   r   r   )rW   r}   rP  r   r   r   r   rN   r   r   r   r   )	r   rQ  rA  r  r   r   r   r   r  s	            r   
exit_orderzNorenApi.exit_order  s    **  !1+!> ?@c
  'u&|$uTZZ//F4;L;L:M2NN'mmCg.#((**SXX&6?d"r   c                 >   t         j                  }|d    |d   d    }	t        |	       ddi}
| j                  |
d<   | j                  |
d<   ||
d<   t
        j                  j                  |      |
d	<   t        |      |
d
<   ||
d<   ||
d<   ||
d<   ||
d<   dt        j                  |
      z   d| j                   z   }t        |       t        j                  |	|      }t        |j                         t        j                   |j                        }|d   dk7  ry|S )zV
        Coverts a day or carryforward position from one product to another. 
        ry   rz   re   r  r   r   r   r	   r/  r0  r   prevprdr.  postyper   r  r   r   r   N)rW   r}   rP  r   r   r=  r>  r?  r   r   r   r   rN   r   r   r   r   )r   rB  rC  rD  new_product_typeprevious_product_typer@  	day_or_cfr  r   r   r   r   r  s                 r   position_product_conversionz$NorenApi.position_product_conversion  s$    **  !12F!G HIc
  'u**w!v00?vHu(u1y(z%yTZZ//F4;L;L:M2NN'mmCg.#((**SXX&6?d"r   c                    t         j                  }|d    |d   d    }t        |       ddi}| j                  |d<   ||d<   dt	        j
                  |      z   d	| j                   z   }t        |       t        j                  ||
      }t        |j                         t	        j                  |j                        }t        |      t        k7  ry |S )Nry   rz   rh   r  r   r   rO  r   r  r   )rW   r}   rP  r   r   r   r   rN   r   r   r   r   r   r  rY  s           r   single_order_historyzNorenApi.single_order_history  s    **  !12F!G HIc
  'u&|TZZ//F4;L;L:M2NN'mmCg.#((**SXX&=D r   c                 x   t         j                  }|d    |d   d    }t        |       ddi}| j                  |d<   dt	        j
                  |      z   d| j                   z   }t        |       t        j                  ||	      }t	        j                  |j                        }t        |      t        k7  ry |S )
Nry   rz   rf   r  r   r   r   r  r   )rW   r}   rN   r   r   r   r   r   r   r   r   r   r  r  s          r   get_order_bookzNorenApi.get_order_book  s    **  !1+!> ?@#  'uTZZ//F4;L;L:M2NN'mmCg. **SXX& =D r   c                    t         j                  }|d    |d   d    }ddi}| j                  |d<   | j                  |d<   dt	        j
                  |      z   d	| j                   z   }t        |       t        j                  ||
      }t        |j                         t	        j                  |j                        }t        |      t        k7  ry |S )Nry   rz   rg   r  r   r   r   r   r  r   )rW   r}   r   r   r   r   r   rN   r   r   r   r   r   r  r  s          r   get_trade_bookzNorenApi.get_trade_book   s    **  !1+!> ?@  'u**wTZZ//F4;L;L:M2NN'mmCg.#((**SXX& =D r   c                    t         j                  }|d    |d   d    }t        |       |d k(  rt        d       y i }| j                  |d<   ||d<   t
        j                  j                  |      |d<   dt        j                  |      z   d	| j                   z   }t        |       t        j                  ||
      }t        |j                         t        j                  |j                        }|d   dk7  ry |S )Nry   rz   ri   zsearch text cannot be nullr   r	   stextr   r  r   r   r   )rW   r}   rN   rR   r   r=  r>  r?  r   r   r   r   r   r   r   )	r   rB  
searchtextr  r   r   r   r   r  s	            r   ri   zNorenApi.searchscrip  s    **  !1-!@ AB#45u!v ,,11*=wTZZ//F4;L;L:M2NN'mmCg.#((**SXX&6?d"r   c                    t         j                  }|d    |d   d    }t        |       i }| j                  |d<   ||d<   t        j
                  j                  |      |d<   t        |      |d<   t        |      |d<   d	t        j                  |      z   d
| j                   z   }t        |       t        j                  ||      }	t        |	j                         t        j                  |	j                        }
|
d   dk7  ry |
S )Nry   rz   rk   r   r	   r/  r   cntr   r  r   r   r   )rW   r}   rN   r   r=  r>  r?  r   r   r   r   r   r   r   r   )r   rB  rC  strikepricecountr  r   r   r   r   r  s              r   get_option_chainzNorenApi.get_option_chain9  s    **  !1-!@ AB#u!v00?v{+xE
uTZZ//F4;L;L:M2NN'mmCg.#((**SXX&6?d"r   c                    t         j                  }|d    |d   d    }t        |       i }| j                  |d<   ||d<   ||d<   dt	        j
                  |      z   d| j                   z   }t        |       t        j                  ||	      }t        |j                         t	        j                  |j                        }|d
   dk7  ry |S )Nry   rz   ro   r   r	   tokenr   r  r   r   r   r!  	r   rB  rs  r  r   r   r   r   r  s	            r   get_security_infozNorenApi.get_security_infoU      **  !1+!> ?@#u!vwTZZ//F4;L;L:M2NN'mmCg.#((**SXX&6?d"r   c                    t         j                  }|d    |d   d    }t        |       i }| j                  |d<   ||d<   ||d<   dt	        j
                  |      z   d| j                   z   }t        |       t        j                  ||	      }t        |j                         t	        j                  |j                        }|d
   dk7  ry |S )Nry   rz   rp   r   r	   rs  r   r  r   r   r   r!  rt  s	            r   
get_quoteszNorenApi.get_quoteso  rv  r   c                    t         j                  }|d    |d   d    }t        |       |dk(  rCt        j                  d      dz   }t        j
                  |d      }	t        j                  |	      }dd	i}
| j                  |
d
<   ||
d<   ||
d<   t        |      |
d<   |dk7  rt        |      |
d<   |dk7  rt        |      |
d<   dt        j                  |
      z   d| j                   z   }t        |       t        j                  ||      }t        |j                         t        j                  |j                        }t!        |      t"        k7  ry|S )zj
        gets the chart data 
        interval possible values 1, 3, 5 , 10, 15, 30, 60, 120, 240
        ry   rz   rj   Nz%d-%m-%Yz	 00:00:00z%d-%m-%Y %H:%M:%Sr  r   r   r	   rs  stetintrvr   r  r   )rW   r}   rN   timestrftimestrptimemktimer   r   r   r   r   r   r   r   r   r   r  )r   rB  rs  	starttimeendtimeintervalr  r   
timestringtimeobjr   r   r   r  s                 r   get_time_price_serieszNorenApi.get_time_price_series  sE   
 **  !1*!= >?# z2[@JmmJ0CDGG,I  'u!vw9~td?w<F4Lt!(mF7OTZZ//F4;L;L:M2NN'mmCg.#((**SXX& =D r   c                    t         j                  }|d    |d   d    }t        |       |d k(  rut        j                  j                         t        j                  d      z
  }t        j                  |t        j                  j                               j                         }|d k(  r"t        j                         j                         }i }| j                  |d<   dj                  ||      |d<   t        |      |d	<   t        |      |d
<   dt!        j"                  |      z   d| j$                   z   }	t        |	       ddi}
t'        j(                  ||	|
      }t        |       |j*                  dk7  ry t-        |j.                        dk(  ry t!        j0                  |j.                        }t3        |      t4        k7  ry |S )Nry   rz   rs      )daysr   z{0}:{1}symfromtor   r  zContent-Typezapplication/json; charset=utf-8)r   headers   r   )rW   r}   rN   r   datetoday	timedeltadtcombineminr}  	timestampnowr   r   r   r   r   r   r   r   status_codelenr   r   r   r  )r   rB  rC  	startdateenddater  r   week_agor   r   r  r   r  s                r   rs   zNorenApi.get_daily_price_series  s   **  !12J!K LM# }}**,x/A/Aq/IIH

8RVV[[];EEGId?ffh((*G u!((=AuYv7|tTZZ//F4;L;L:M2NN'!#DEmmCgw?#??c!sxx=A**SXX& =D r   c                    t         j                  }|d    |d   d    }t        |       |d k(  rt        j                  }i }| j
                  |d<   | j                  |d<   ||d<   dt        j                  |      z   d| j                   z   }t        |       t        j                  ||	      }t        |j                         t        j                  |j                        }t        |      t        k7  ry |S )
Nry   rz   rl   r   r   r   r   r  r   )rW   r}   rN   r#   r'   r   r   r   r   r   r   r   r   r   r   r  )r   rA  r  r   r   r   r   r  s           r   get_holdingszNorenApi.get_holdings  s    **  !1*!= >?#4&//Lu**w$uTZZ//F4;L;L:M2NN'mmCg.#((**SXX&=D r   c                    t         j                  }|d    |d   d    }t        |       i }| j                  |d<   | j                  |d<   |d k7  r||d<   |d k7  r||d<   |d k7  r||d<   d	t        j                  |      z   d
| j                   z   }t        |       t        j                  ||      }t        |j                         t        j                  |j                        }	|	S )Nry   rz   rm   r   r   r   segr	   r   r  r   )rW   r}   rN   r   r   r   r   r   r   r   r   r   )
r   rA  segmentrB  r  r   r   r   r   r  s
             r   
get_limitszNorenApi.get_limits  s    **  !1(!; <=#u**w4(F5M4#F5Mt%F6NTZZ//F4;L;L:M2NN'mmCg.#((**SXX&r   c                    t         j                  }|d    |d   d    }t        |       i }| j                  |d<   | j                  |d<   dt        j                  |      z   d| j                   z   }t        |       t        j                  ||      }t        |j                         t        j                  |j                        }t        |      t        k7  ry |S )	Nry   rz   rn   r   r   r   r  r   )rW   r}   rN   r   r   r   r   r   r   r   r   r   r   r  r  s          r   get_positionszNorenApi.get_positions  s    **  !1+!> ?@#u**wTZZ//F4;L;L:M2NN'mmCg.#((**SXX&=D r   rn   c                    t         j                  }|d    |d   d    }t        |       i }| j                  |d<   ||d<   dt	        j
                  |d       z   d	| j                   z   }t        |       t        j                  ||
      }t        |j                         t	        j                  |j                        }|S )Nry   rz   rq   r   posr   c                 "    | j                         S r   )r   )r  s    r   <lambda>z*NorenApi.span_calculator.<locals>.<lambda>@  s
    188:r   )defaultr  r   rW   r}   rN   r   r   r   r   r   r   r   r   )r   rn   r  r   senddatar   r   r  s           r   rq   zNorenApi.span_calculator6  s    ** !12C!D EF# ,,#JJx)=>?T&&'() 	'mmCg.#((**SXX&r   c                    t         j                  }|d    |d   d    }t        |       ddi}	| j                  |	d<   ||	d<   ||	d<   ||	d	<   ||	d
<   ||	d<   ||	d<   dt	        j
                  |	      z   d| j                   z   }
t        |
       t        j                  ||
      }t        |j                         t	        j                  |j                        }|S )Nry   rz   rr   r   r   r   r   r   sptprcint_rate
volatilityr   r   r  r   r  )r   
expiredateStrikePrice	SpotPriceInterestRate
Volatility
OptionTyper  r   r   r   r   r  s                r   rr   zNorenApi.option_greekK  s    **  !1.!A BC# E"**w"u&x$x)z)|#vTZZ//F4;L;L:M2NN'mmCg.#((**SXX&r   c                    t         j                  }|d    |d   d    }t        |       ddi}| j                  |d<   dt	        j
                  |      z   d| j                   z   }t        |       t        j                  ||	      }t        |j                         t	        j                  |j                        }t        |      t        k7  ry |S )
Nry   rz   ru   r  r   r   r   r  r   rW   r}   rN   r   r   r   r   r   r   r   r   r   r  r  s          r   get_pending_gtt_orderszNorenApi.get_pending_gtt_ordersg  s    **  !1%!8 9:#  'uTZZ//F4;L;L:M2NN'mmCg.#((**SXX& =D r   c                    t         j                  }|d    |d   d    }t        |       ddi}| j                  |d<   dt	        j
                  |      z   d| j                   z   }t        |       t        j                  ||	      }t        |j                         t	        j                  |j                        }t        |      t        k7  ry |S )
Nry   rz   rv   r  r   r   r   r  r   r  r  s          r   get_enabled_gtt_orderszNorenApi.get_enabled_gtt_orders  s    **  !1,!? @A#  'uTZZ//F4;L;L:M2NN'mmCg.#((**SXX& =D r   c                    t         j                  }|d    |d   d    }t        |       ddi}| j                  |d<   | j                  |d<   t
        j                  j                  |      |d<   ||d	<   ||d
<   ||d<   t        |      |d<   |
|d<   ||d<   ||d<   ||d<   ||d<   t        |      |d<   t        |	      |d<   t        |      |d<   dt        j                  |      z   d| j                   z   }t        |       t        j                  ||      }t        |j                         t        j                  |j                        }|d   dk7  ry |d   S )Nry   rz   rt   r  r   r   r   r/  r	   ai_tvalidityr  r5  r.  r2  r   r   r0  r3  r1  r   r  r   r   z
OI createdal_idr<  )r   rC  rB  
alert_typealert_pricer@  rA  rD  rF  rG  r5  rI  r  rE  r  r   r   r   r   r  s                       r   place_gtt_orderzNorenApi.place_gtt_order  sm   " ** !1*!= >?#  'u**w00?v!v#v%z+&s#y(z%x$u!uHuE
u{+xTZZ//F4;L;L:M2NN'mmCg.#((**SXX&6?l*wr   c                    t         j                  }|d    |d   d    }t        |       ddi}| j                  |d<   t	        |      |d<   dt        j                  |      z   d	| j                   z   }t        |       t        j                  ||
      }t        |j                         t        j                  |j                        }|d   dk7  ry |S )Nry   rz   rw   r  r   r   rO  r   r  r   r   r   rX  rY  s           r   cancel_gtt_orderzNorenApi.cancel_gtt_order  s    **  !1+!> ?@c
  'u"7||TZZ//F4;L;L:M2NN'mmCg.chh**SXX&6?d"r   r   )NN)NNNN)NNNNN)r9  NDAYNONr9  r9  r9  )r9  Nr9  r9  r9  )r.   )NNN)r3   r9  Nr  GTTr   )@r   r   r   TRANSACTION_TYPE_SELLTRANSACTION_TYPE_BUYPRODUCT_TYPE_INTRADAYPRODUCT_TYPE_DELIVERYPRODUCT_TYPE_NORMALPRICE_TYPE_MARKETPRICE_TYPE_LIMITPRICE_TYPE_STOPLOSS_LIMITPRICE_TYPE_STOPLOSS_MARKETALERT_TYPE_ABOVEALERT_TYPE_BELOWALERT_TYPE_OCOFEED_TYPE_TOUCHLINEFEED_TYPE_SNAPSHOTr}   r   r   r   r   r   r   r   r   r   r  r  r[   rZ   r,   r/   r  r  r  r"  r%  r*  r,  rM  rV  rZ  r\  rc  re  rg  ri  ri   rq  ru  rx  r  rs   r  r  r  r  rq   rr   r  r  r  r  r!   r   r   rW   rW   L   s    (!)   N $!
!
i!
 0!
 |	!

 y!
 !
 2!
  6!
 -!
 >!
 >!
 !
 !"6!
 !
 !
  !"2!!
" >#!
$ $,#(+%*-&5((+*&A!
D 2I&P&"
# "#> 26.2-1.2.2	!: $L	48 /7.@.@ ( 190B0B $.08< :>sv4n @C/b24"H446<844)V+Z:>2 *84F 1 fr   rW   )r   r   r   r   loggingenumr   r   r   r}  r=  r   r  	getLoggerr   rJ   r   r#   r,   r2   r<   rB   rN   rR   rU   objectrW   r!   r   r   <module>r     s               #			8	$    
   



Yv Yr   