
    !g$%                     v   d dl Zd dlmZ d dlmZ d dlZd dlZd dlZd dl	m
Z
 d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZmZmZ d d
lmZ d dlmZ d dlmZ d dlmZ d dlmZ ddddddZ ed      d        Z  ed      dd       Z! ed      dd       Z"d Z# ed      d        Z$ G d d      Z%ddZ&y)     N)Broker)Q)HttpResponse)isnan)shared_task)StrategyManager)User)BrokerAccounts	StrategisScripts)Strategy)Exchange)Telegram)PubSubz+https://api.shoonya.com/NSE_symbols.txt.zipz+https://api.shoonya.com/BSE_symbols.txt.zipz+https://api.shoonya.com/NFO_symbols.txt.zipz+https://api.shoonya.com/CDS_symbols.txt.zipz+https://api.shoonya.com/MCX_symbols.txt.zip)NSEBSENFOCDSMCXT)bindc                    	 t         j                  j                         }|D ]6  }t        |j                         t
        j                  |j                         8 y # t        $ r}t        t        |             Y d }~y d }~ww xY wN)
r	   objectsallprintusernamestartStrategyManagerdelayid	Exceptionstr)selfusersuseres       IC:\Janisar\Projects\MarketYanta\Yantra\yantra\trading\views\masterdata.pystartStrategyManagerForAllr'      s`      "D$--  &&tww/   c!fs   AA 	B%A>>Bc                 v   	 t         j                  j                  |      j                         }t	        |      }|j                  d|j                          t        |      }|j                  |       |j                  |       |j                  d|j                          y # t        $ r
}Y d }~y d }~ww xY w)Nr   z$Strategy Manager initiated for User z"Strategy Manager Started for User )r	   r   filterfirstr   sendMessager   r   initiatestartr    )r"   useridexchanger$   telegrammanagerr%   s          r&   r   r   &   s    ||"""/557F#CDMM?ST!$'"hA$--QR s   B"B% %	B83B8c           	      X   	 t         j                  j                  |      j                         }t	        d      }t
        j                  j                  |      }t        |      }t        j                  j                         }t        |      }|D ]  }t        j                  ||j                  |      }	|	s'|	j                  s4|D ]  }
|j                         D ]  }|	j                  s|j!                  |j"                  |
j$                  |j                  d      }t'        |      }d|j                  |	j                  d}|j)                  ||       |j+                  d|j"                             y # t,        $ r(}j+                  dj"                          Y d }~y d }~ww xY w)	Nr)   r   )r$   O	TERMINATE)typer0   strategyz(Strategy Termination initiated for User z+Error : Strategy Termination init for User )r	   r   r*   r+   r   r
   r   r   r   r   r   getStrategyInstancecodeisActivegetExchangesrequireOrderCallback
getQueueIdr   clientIdr   publishr,   r    )r"   r/   r0   r$   broker
brokerAccs
strategiesr1   stratr7   accsexchQueueIDpubsubmessager%   s                   r&   stopStrategyManagerrI   6   si   \||"""/557#++22$2?
H%&&**,
F#E33D%**hOH$$ *$,$9$9$;D'<<*0*;*;DMM$--X\XaXabe*f)/3>DIIckcpcp*q &ww ? ( 4 47_`d`m`m_n5o p %< !+	    \J4==/Z[[\s+   B5E8 8E8 $E8 *BE8 8	F)F$$F)c                 .    t                t        d       y )Nzsymbol sync completed)syncSymbolsr   )requests    r&   syncSymbolsReqrM   P   s    M()    c                 :    t        d      }|j                          y )N   )MasterDataManagerrK   )r"   r2   s     r&   rK   rK   T   s    "GrN   c                   6    e Zd Zd ZddZd Zd	dZd
dZd Zy)rQ   c                     || _         y r   )BrokerId)r"   brokerIds     r&   __init__zMasterDataManager.__init__Z   s	     rN   c                 V    d}|dk(  r| j                   }|t        j                  k(  rd}|S )NsymbolFinvasiar   )rT   r   FINVASIA)r"   rU   	fieldNames      r&   getSymbolFieldz MasterDataManager.getSymbolField]   s.    $	q=}}Hv&(IrN   c                     | j                  d       | j                  d       | j                  d       | j                  d       | j                          y )Nr   r   r   r   )syncNSEBSESymbolssyncNFOMCXSymbolssyncCDSSymbols)r"   s    r&   rK   zMasterDataManager.syncSymbolsg   sF    u%u%u%u%rN   c                    	 g }| j                         }t        j                  j                  |      }| j                  t
        j                  k(  r(t        j                  t        j                  |            }j                         D ]w  \  }}|j                  |d         j                         r*t        |d   |d   |d   d d|d   |d   |d	   |d	   |d
   
      }t        |||d          |j                  |       y t        |      dkD  r t        j                  j!                  |       y y # t"        $ r}	t%        t'        |	             Y d }	~	y d }	~	ww xY w)NexchSegTokentokenTradingSymbolSymbolr   LotSize
Instrumentr   TickSize)
re   symbolnameexpirystrikelotSizeinstrumentTyperb   segmenttickSize)r[   r   r   r*   rT   r   rY   pdread_csvFINVASIA_SYMBOLS_NSE_PATHgetiterrowsexistssetattrappendlenbulk_creater    r   r!   
r"   r0   lstNewrZ   scriptsdfindexrownewexs
             r&   r]   z#MasterDataManager.syncNSEBSESymbolso   s6   	F++-Ioo,,x,@G}}/[[!:!>!>x!HI !kkm
s~~c'l~;BBD!&)'l&)/&:&)(m&*&'&))n&),&7&)*o&)*o&)*oC CC,@AMM#& ,  6{Q++F3  	#b'NN	s   B0D2 3A=D2 2	E;EEc                    	 g }| j                         }t        j                  j                  |      }| j                  t
        j                  k(  r(t        j                  t        j                  |            }j                         D ]  \  }}|j                  |d         j                         r*t        |d   |d   |d   |d   |d   |d   |d	   |d
   |d
   |d   |d         }|dk(  r
|d   |_        t        |||d          |j                  |        t!        |      dkD  r t        j                  j#                  |       y y # t$        $ r}	t'        t)        |	             Y d }	~	y d }	~	ww xY w)Nra   rc   rd   rf   rg   ExpiryStrikePricerh   ri   r   rj   
OptionType)re   rk   rl   rm   rn   ro   rp   rb   rq   rr   
optionTyper   GNGDr   )r[   r   r   r*   rT   r   rY   rs   rt   ru   rv   rw   rx   r   ry   rz   r{   r|   r    r   r!   r}   s
             r&   r^   z#MasterDataManager.syncNFOMCXSymbols   sZ    	F++-Ioo,,x,@G}}/[[!:!>!>x!HI !kkm
s~~c'l~;BBD!&)'l&)/&:&)(m&)(m&)-&8&))n&),&7&)*o&)*o&)*o&),&7C  5(#&v;CC,@AMM#&) ,* 6{Q++F3  	#b'NN	s   B0E 3BE 	E2E--E2c                    	 d}g }| j                         }t        j                  j                  |      }| j                  t
        j                  k(  r(t        j                  t        j                  |            }j                         D ]  \  }}|j                  |d         j                         r*t        |d   |d   |d   t        |d   t        d      t        |d	   t        j                   d
      |d   |d   |d   |d   t        |d   t        j                   d
      t        |d   t        d      |d   |d         }t#        |||d          |j%                  |        t'        |      d
kD  r t        j                  j)                  |       y y # t*        $ r}	t-        t        |	             Y d }	~	y d }	~	ww xY w)Nr   ra   rc   rd   rf   rg   r   z01-JAN-1900r   r   rh   ri   r   rj   r    	Precision
Multiplier)re   rk   rl   rm   rn   ro   rp   rb   rq   rr   r   	precision
multiplier)r[   r   r   r*   rT   r   rY   rs   rt   ru   rv   rw   rx   nvlr!   numbersNumberry   rz   r{   r|   r    r   r}   s
             r&   r_   z MasterDataManager.syncCDSSymbols   s   #	HF++-Ioo,,x,@G}}/[[!:!>!>x!HI !kkm
s
 ~~c'l~;BBD!&)'l&)/&:&)(m&)#h-m&L&)#m*<W^^Q&O&))n&),&7&)*o&)*o&)#j/7>>1&M&)#l*;C&C&)+&6&),&7C CC,@AMM#&- ,. 6{Q++F3  	#b'NN	s   B2F 5CF 	F=F88F=Nr   )r   )r   )	__name__
__module____qualname__rV   r[   rK   r]   r^   r_    rN   r&   rQ   rQ   Y   s!    !<!F$rN   rQ   c                     	 |t         j                  t        j                  t        fv rt        |       r|S | S t        | |      r| S |S # t        $ r}t        t        |             Y d }~y d }~ww xY wr   )
r   r   decimalDecimalfloatr   
isinstancer    r   r!   )valuedatatypedefaultr   s       r&   r   r      s`    ??U|%) c"gs'   3A A A A 	A/A**A/r   r   )'pandasrs   trading.Entities.Brokers.brokerr   django.db.modelsr   r   datetimer   django.httpr   numpyr   celeryr   "trading.Strategies.strategyManagerr   django.contrib.auth.modelsr	   trading.modelsr
   r   r   trading.Strategies.strategyr    trading.Entities.Exchanges.indiar   social.views.telegramr   trading.Redis.pubsubr   ru   r'   r   rI   rM   rK   rQ   r   r   rN   r&   <module>r      s     2  ! ! $   > + = = 0 5 * ' + 98888  $  $  $\ \2* D { {zrN   