
    g|                        d dl mZmZmZmZ d dlmZ d dlm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 d d
lmZ d dlmZ d dlZd dlmZ d dlmZ d dl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l&Z&d dlm'Z' d dl(m)Z) d dl*m+Z+ d dl,Z, e,jZ                         Z.dZ/ G d de      Z0 ed      d d       Z1 ed      d!d       Z2d Z3 ed      	 	 	 d"d       Z4d Z5y)#    )Strategy1SettingsStrategyStatus	StrategisStrategy1Log)Telegram)StrategyN)isBlankOrNone)shared_task)pdSeries)datetime)Thread)Broker)BrokerAccount)Decimal)PubSub)
CustomUserUserSocialProfile)BrokerAccounts)sleep)Q)BytesIO)convertUTCtoIST)EMail)transactionJOBBINGc                   6   e Zd ZdddZddZddZd Zed        Zed        Z	d Z
d	 Zdd
Z	 ddZd ZddZddZ ej$                   ej(                  d             ej$                   ej(                  d            ddddddfdZddZ	 	 	 ddZddZy)	Strategy1Nc                    t         | _        || _        t        j                  j                  | j                        j                         }|| _        t        | j                  j                        | _
        |s@| j                  j                  d| j                          t        d| j                         || _        |j                  | _        | j                  |       d| _        t#               | _        y )N)codez#Err: No strategy defined with code zNo strategy defined with code DUMMY)STRATEGY_CODEr   exchanger   objectsfilterfirstUserr   idtelegramsendMessage	ExceptionStrategyMasterisActivegetActiveSetupMasterQueuer   )selfuserr"   r+   s       FC:\Janisar\Projects\Temp\myGenie\trading\views\Strategies\strategy1.py__init__zStrategy1.__init__)   s    !	 "**111CIIK	 .MM%%(KDII;&WX<TYYKHII,&//H%"h    c           
      H   g }g }t         j                  j                         j                  | j                  dd      j                  dd      | _        |s| j                  }|r!| j                  j                  |      | _        t        d      }| j                  D ]j  }|j                  j                  |vr%|j                  |j                  j                         | j                  rF|j                  | j                  j                  |j                  j                  |j                   d      nd | j"                  rF|j                  | j                  j                  |j                  j                  |j                   d      nd |j                  j                  |j                  j                  |j                  j$                  j&                  |j                   |j(                  |j*                  d	}||vsZ|j                  |       m || _        || _        | j                  S )
NT)r0   r,   target__isActive	target_idexchSegr7   r   OT)OrderQIdTickQId	accountIdclientIdbrokerIdr"   tokensymbol)r   r#   select_relatedr$   r&   order_bySetupsr"   r   targetr'   appendrequireOrderCallback
getQueueIdusernamer>   r7   requireTickCallbackbrokerr?   r@   rA   ActiveAccountsActiveScripts)r/   r"   lstActiveAccountslstActiveScriptsrK   setupactiveScripts          r1   r-   zStrategy1.getActiveSetup9   s   '//>>@GGtyyei  CG  D  M  M  NY  Zc  d}}H++,,X,>DK [[E||&77!((9 tx  tM  tM&"3"3DII4F4Fu||G\G\]b]j]jkn"o  SWsw  tL  tL&"3"3DII4F4Fu||G\G\]b]j]jkn"o  RV"',,//"',,"7"7"',,"5"5">">"'--"'++"',,L #33 ''5% !( 0-{{r3   c                     | j                   j                  sy|s| j                  }|d k(  r@| j                  j	                  d| j
                          t        d| j
                         | j                         }|d k7  S )NFz"No user defined for strategy code )r+   r,   r&   r(   r)   r   r*   r-   )r/   r0   setupss      r1   r,   zStrategy1.isActive]   st    ""++99D4<MM%%(J499+&VW@LMM$$&~r3   c                     g S N r/   s    r1   getScriptForTickCallbackz"Strategy1.getScriptForTickCallbackk   s    	r3   c                      yNTrV   rW   s    r1   rG   zStrategy1.requireOrderCallbacko   s    r3   c                      y)NFrV   rW   s    r1   rJ   zStrategy1.requireTickCallbacks   s    r3   c                     t         j                  j                  | j                  | j                        j                         }|r|j                  S y )Nr0   strategy)r   r#   r$   r&   r+   r%   
currStatus)r/   statuss     r1   	getStatuszStrategy1.getStatusw   sB    ''..diiDL_L_.`ffh$$$r3   c                    t         j                  j                  | j                  | j                        j                         }|r||_        n#t        | j                  | j                  |d      }|j                          y )Nr]    )r0   r^   r_   taskId)r   r#   r$   r&   r+   r%   r_   save)r/   r`   stats      r1   	setStatuszStrategy1.setStatus~   se    %%,,DII$J]J],^ddf$DO!"&))"&"5"5"("$	D 			r3   c                     	 | j                  d       | j                  j                  d| j                   d       | j                  S # t
        $ r}t        |       Y d }~yd }~ww xY w)N	Initiatedz	Strategy z
 InitiatedF)rg   r(   r)   r   r,   r*   print)r/   r"   excs      r1   initiatezStrategy1.initiate   sV    	NN;'MM%%	$))J&GH==  	#J	s   AA 	A&A!!A&c                 Z   | j                   j                  | j                   d       | j                  |       | j                   j                  | j                   d       | j	                  |       | j                  |       | j                   j                  | j                   d       y )Nz : execution startedz : Order tracking startedz : Initial Order Placed)r(   r)   r   processOrderCallbackprocessTickCallbackcreateInitialOrder)r/   brokerAccountr"   s      r1   startzStrategy1.start   s    !!TYYK/C"DE 	!!(+!!TYYK/H"IJ  * 	.!!TYYK/F"GHr3   c                    d}| j                   D ]  }||j                  j                  k7  r6|j                  |j                  j                        }|j	                  g        |j
                  }d}|j                  }|j                  }|j                  }	|j                  }
t        j                  j                  | j                  |j                  |j                        j!                  d      j#                          t        j                  j                  | j                  |j                  |j                  ddg      j%                  d      j'                         }|r|j(                  dkD  r7|j(                  }| j*                  j-                  | j.                   d	|        n7|j0                  }| j*                  j-                  | j.                   d
| d       |j2                  dk(  rUd}nR|j(                  dkD  r|j(                  }n|j4                  }| j*                  j-                  | j.                   d|        | j7                         dk(  r y d}d}|j8                  |j:                  k\  rd}|j8                  |j<                  k  rd}	 | j?                  | j                  j                  |j                  |j                  |j                  |j@                  |||	||||
||d|jB                  |jD                  |jF                  |jH                  |jJ                          y # tL        $ r}tO        |       Y d }~2d }~ww xY w)Nr   F)r0   r7   r@   COMPLETEr`   PARTIAL)r0   r7   r@   
status__in
-updatedOnz : Override Price z : Base Price z as per last TransactionSELLTz$ : no prev record, setup base price 	TERMINATE)(rD   rE   r'   getBrokerObjectcancelOrderssimulatebuyLotsellLotbuyTicksellTickr   r#   r$   r&   r7   r@   excludedeleterC   r%   priceCurrentr(   r)   r   price	orderType	priceBasera   stockCurrentstockMaxstockMinexecuteOrderPair	dayOrdersorderCatagorygttBuyBuffergttSellBufferwaitcountr*   rj   )r/   rq   tmpAccountIDrP   	brokerObj
simulationflagReverseTicklotSizelotSizeSelltickSizetickSizeSelllog	basePricebuyOnlysellOnlyrk   s                   r1   rp   zStrategy1.createInitialOrder   s   [[Eu||.)99%,,//J	&&r*J#O llG--K}}H >>L  ''tyyEMM[`[f[f'goo  zDo  E  L  L  N&&--TYY%--afalal  }G  HQ  |R-  S  \  \  ]i  j  p  p  rC%%) % 2 2I MM--;Mi[.YZ #		IMM-->)Tl.mn==F*&*O
 %%) % 2 2I %I))TYYK7[\e[f*gh ~~;. GH!!U^^3!!U^^3%%IILL%,,u{{EOOw'8ZQ]_j#T5+>+>@R@RTYTgTgJJ	i !v  c
s   BL''	M0MMc           
      *   |s| j                   }g }| j                  r| j                  D ]b  }|r|j                  d      |k7  r|j                  d      |j                  d      |j                  d      d}||vsR|j	                  |       d g }|D ]h  }t        t        | j                  t        |j                  d            |j                  d      |j                  d      f      }|j	                  |       j |D ]  }|j                           y)Nr"   r=   r;   )r=   r"   r;   )rE   argsT)
r"   rG   rM   getrF   r   workerS1OrderCallbackr   strrr   )r/   r"   	lstUniquescriptdict
lstThreadsitemt1s           r1   rn   zStrategy1.processOrderCallback  s   }}H	$$,,

: 6( B #)**["9"(**Z"8"(**Z"8 y($$T* - J!#8		3txxXcOdKegkgogopzg{  ~B  ~F  ~F  GQ  ~R  @S !!"% " !
 ! r3   c                     | j                   r	 yrZ   )rJ   )r/   r"   s     r1   ro   zStrategy1.processTickCallback6  s    ##r3   Asia/Kolkatart   c	                 @   t        | j                  ||f|      }	|r|	t        |      z  }	|r|	t        |      z  }	|r|	t        |      z  }	|r|	t        |      z  }	|r|	t        |      z  }	t        j                  j	                  |	      j                  d      }
|
S )N)r0   tradeDate__ranger`   r8   )orderIdr6   )r@   )rA   	updatedOn)r   r&   r   r#   r$   rC   )r/   	startDateendDater"   r@   rA   r   brokerAccountIdr`   qFilterlogss              r1   getOrderLogzStrategy1.getOrderLog<  s    
 499)W9MX^_a(++Ga'**GaO44Ga&&Ga((G##**73<<[Ir3   c                 ,   t         j                  j                  |||      j                         }|r_t	        j
                  t        j                  d            |_        |d   |_	        |d   |_
        |dk7  r||_        |j                          |S |dk(  rd}t        |||d   |d   |j                  d	d      |t	        j
                  t        j                  d            |d   |d   |d
   |d   dk(  rdndd||d         }|j                          |S )N)user_idr6   r   r   quantityr   rc   OPENr7   r@   rA   tranTypevarietyNORMALTFr   orderCategory)r   r6   r7   r@   rA   r   	tradeDater   r   r   intraday	currStockr`   r   )r   r#   r$   r%   r   nowpytztimezoner   r   r   r`   re   r   )r/   useridr   r   verboseOrderr`   r   s          r1   createOrderLogzStrategy1.createOrderLogU  s   ""))Fcj)kqqs&ll4==+HICM*:6CL*73CI|"(
HHJ. 
) |"("1".y"9".w"7"."2"28B"?")"*,,t}}^/L"M".z":".w"7".z":*6y*AX*M$SX"#"("."?C  HHJ
r3   c                 j    t        | j                  ||j                  |||||||	|
||||||||||       y rU   )workerOrderPairr   r'   )r/   r   rE   r7   r@   numberOfOrdersr   
lotSizeBuytickSizeBuyr   r   r   r   r   r   	createLogr   r   r   r   r   s                        r1   r   zStrategy1.executeOrderPairy  sC     			FIIw~
{WhkY<e	
r3   c           	         | j                  |       | j                  D ]F  }|j                  |      }|j                         }|j	                         }|j                         }| j                  j                  |      }|D ]  }	|	j                  d      }
|
D ]  }|j                  |j                  d      |j                  d            j                         }|sEt        |j                  d            |_        |D ]z  }|j                  d      |j                  d      k(  s'|j                  d      |j                  d      k(  sKt        |j                  d            |_        |j                              |D ]  }|j                  |j                  d      |j                  d            j                         }|sEt        |j                  d	            |_        |D ]z  }|j                  d      |j                  d      k(  s'|j                  d      |j                  d      k(  sKt        |j                  d            |_        |j                             I y )
Nr   	exch_tsymexchr@   )r7   r@   ppr"   	fillpricenetqty)r-   rL   r{   getHoldingsgetPositionsreadTradeBookrD   r$   r   r%   intr   r   r   re   )r/   rq   r"   r=   r   holdings	positions	tradeBookrS   holdingtsymstsymrP   tradepositions                  r1   resyncStrategyValueszStrategy1.resyncStrategyValues  s   H%,,I%55i@I ,,.H!..0I!//1I[[''I'>F#K0!D"MMDHHV4DdhhW^N_M`ffhE-0$-@*%.E$yy48HHUYYW^M_cgckcklsctMt5<UYY{=S5T 2 %

 %	 &/	 " $ &V0Dhll[bNcdjjl),X\\(-C)DE&!* 99Z0HLL4HHUYYW^M_ckcocopwcxMx18;9O1PE.!JJL!	 "+	 &% -r3   rU   )returnNrc   FFFr   r   FTNormalr   r   r      )__name__
__module____qualname__r2   r-   r,   rX   propertyrG   rJ   ra   rg   rl   rr   rp   rn   ro   r   r   r   r   r   r   r   r   rV   r3   r1   r   r   (   s     "H    	BI@d@ +hll=4==+HIUaU]UaUabobfbobop~b  VATDD\`ku2!N \]-1WX
."r3   r   T)bindc                    t        |      }t        j                  j                  |      j	                         }|sy t        |j                  j                        }t        j                  |j                  ||      }	t        |j                  |      }
|
j                  |d       |
j                  |      }||j                  d       |	j                  j                  |      j	                         }t        |
j                  d   j                   j"                        }t%               }|j'                  |       |j)                  |      r|j+                  |       |j-                         }|d k(  rt/        d       D	 |j1                  dd      d	k(  rQ|j1                  d
d      |k(  r<|j1                  dd      |k(  r'|j                  d| d       |j3                          n$t5        |d   |d          d}d}d}d}|d   dv r|d   dk(  r~d}n{t6        j                  j                  ||d         j	                         }|d   |_        t;        j<                  t?        j@                  d            |_!        |jE                          R|	j                  j                  |d   |d   |      j	                         }t6        j                  j                  |	jF                  |d   |d   d      jI                  d      j	                         }|r|jJ                  }n|r|jL                  }nd}t6        j                  j                  ||d         j	                         }|rt5        d|j8                   d|jN                          |j8                  dv r^|jQ                  |      r|	jR                  dk(  r|jT                  }|jV                  }tY        |d         }|d   dk(  r/||jZ                  z  }|xjL                  |jZ                  z  c_&        n0d}||jZ                  z  }|xjL                  |jZ                  z  c_&        |j1                  d      |_        ||_%        t;        j<                  t?        j@                  d            |_!        |jE                          t5        d|j8                   d|jN                   d |        ||_.        |jE                          d!|j                   d"|d    d#|j^                   d$|d%    d&|jZ                   d'| d(}|j                  |       |r|r|jL                  |j`                  k\  rd}|jL                  |jb                  k  rd}te        |	jf                  |	jF                  j                  |jh                  j                  |j^                  |jj                  d)|||jl                  |||jn                  |jp                  |jV                  |       t/        d)       |j)                  |      r|j                  d| d*       tt        jw                  |	jF                  j                  |       |j                  d+| d,       y # tr        $ r}t5        |       Y d }~d }~ww xY w)-Nr'   Tz%Error while connecting broker accountr   r      typerc   rz   r"   r^   zProcess for Exchange z is terminatedr`   r   Frt   rt   r6   r   r   r7   r@   r7   r@   r6   r0   r7   r@   r`   rx   zFirst reading from db  
limitPricer   BUYzafter saving in db z Qty:zUser:z, -:rA   	 - Qty (  @  )r   z is completedz#Email with trade list for Exchange z is sent)<r   r   r#   r$   r%   r   r0   r'   r   getStrategyInstancer   Connectr{   r)   rD   r   rK   r?   r   	subscribeisMarketOpensetLastAccessget_messager   r   clear_messagerj   r   r`   r   r   r   r   r   re   r&   rC   r   r   r   canPlaceOrderr,   r~   r   r   r   r   r7   r   r   r   r   rE   r@   r   r}   r   r*   sendTradesbyEmaildelay)r/   strategyCodeaccIdr"   r;   	cancelOldr=   bar(   r^   rq   connObjrP   rK   pubsubordr   r   logTrader   currLoglogStockr   r   r   r   messagerk   s                               r1   r   r     s   E
I				&	&I	&	6	<	<	>B

#H++BGGL(KH!"'')4M)D)++I6GDFOO""y"9??AEM003::CCDFXF
X 

h
'X&  "$;!H^	 wwvb![0SWWZ5Kx5W\_\c\cdnoq\r  wC  ]C$$'<XJn%UV$$&#h-#i.2GHH#O8},x=J.#H&..559X[\eXf5gmmo!$X&.ll4==3P&Q!OO**S^SQX\gp*rxxzE#++22(--SVW`Saknovkw  CM2  N  W  W  Xd  e  k  k  mH$..	 % 2 2I !I"**11yTWXaTb1ciikG.w~~.>a?PQR>>\1''1x7H7HE7Q #\\
#mm#C$56	z?e+!1!11I&&'*:*::& '+O!1!11I&&'*:*::& '*ggh&7&/!&.ll4==3P&Q!+GNN+;1W__<MUS\R]^_%."

!"''"S_,=Qu}}oQsS[}o]fgngwgwfxx{  }F  |G  GI  J$$W- ))U^^;#'))U^^;"&#HMM8==3C3CU\\__V[VcVcejepeprs$-z%--$+Xu~~u~~W\WdWdfuw !H{ 

h
'P 0
-HIHMM,,X6>xjQR  	#JJ	s4   ?A$Y %B%Y D
Y  Y :H<Y 	Y<'Y77Y<c           
         t        ||      }|dk(  rt        j                         }nt        j                  |d      }|t        |j	                               z  }t
        j                  j                  |      j                  ddd      }t        j                  j                  |      j                         }t        j                  j                  |j                  	      j                         }|rt               }	t        j                  d
      }
|
j!                  d      }|j#                  ddd       |j#                  ddd       |j#                  ddd       |j#                  ddd       |j#                  ddd       |j#                  ddd       |j#                  ddd       |j#                  ddd       |j#                  ddd       |j#                  ddd        d}|D ]k  }|j#                  |dt%        |j&                        j)                  d!             |j#                  |d|j*                         |j#                  |d|j,                         |j#                  |d|j.                         |j#                  |d|j0                         |j#                  |d|j2                         |j#                  |d|j4                         |j#                  |d|j6                         |j#                  |d|j8                         |j#                  |d|j:                  d k(  rdn#t%        |j:                        j)                  d!             |dz  }n |
j=                  |	       t?               }d"|j)                  d#      z   }d$|j@                   d%}|jB                  g}|jE                  ||||	d&|j)                  d'       d(d)       y y )*N)r   r7   rc   z%Y%m%d)tradeDate__dater7   r@   r   )r   r   zutf-8)encodingTradeLogr   z
Trade Dater   zExch/Segr   Token   Name   zOrder Id   z
Trade Type   Qty   Price   Status	   zExecuted onz%d-%m-%Y %H:%M:%SzDhananjay: Trade Log z%d/%m/%Yz
                Dear  a#  ,
                Enclosed the trade log for the subject date. 
                Trade log is for reference and do not claim to be absolutely true.
                In case you find any issue please reply to this mail.

                Thanks, 
                Team Dhananjay'
                tradeLogz%d%m%Yz.xlszapplication/ms-excel)#r   r   r   strptimedater   r#   r$   rC   r   r%   r   r'   r   xlwtWorkbook	add_sheetwriter   r   strftimer7   r@   rA   r   r   r   r   r`   r   re   r   
first_nameemailsend)r/   r   r"   logDater   
objLogDater   socialr0   	excelfilewbwscurrRowr   r(  subjectbodyemailtos                     r1   r  r  F  s   &H5G"}\\^
&&w:
q:??#455G&&w/887;WD&&---?EEGF$$		$288:DI	]]G,\\*%
A|$
Az"
Aw
Av
Az"
A|$
Au
Aw
Ax 
A}%C HHWa!?!H!HI\!]^HHWa-HHWa+HHWa,HHWa-HHWa/HHWa.HHWa+HHWa,HHWas}}'</RUR_R_B`BiBij}B~qLG " 		)J,?,?
,KK' ( <<.

74hz?R?RS[?\>]]a4bdz{a r3   c                       y rU   rV   rV   r3   r1   thread1TickCallbackr5    s    r3   c                    t        |      }t        j                  j                  |      j	                         }t        j                  |||      }t        ||      }|j                  |d       t        |j                  d   j                  j                        }|j                  |||      dk(  rg S |j                  |      }g }|dk(  r|	}|dk(  r|}d}t        j                  j                  ||||d      }|j                  d	      }|j                  d
	      } t!        t#        |            D ]  }!t%        d       |rat'        t)        |      t)        |      t)        |!dz         z  z
  d      }"t'        t)        |      t)        |	      t)        |!dz         z  z   d      }#n`t'        t)        |      t)        |	      t)        |!dz         z  z
  d      }"t'        t)        |      t)        |      t)        |!dz         z  z   d      }#|dk(  rt+        |      }$|!|$k  r?||!   }%|j-                  |%j.                  |      }&|&d   d   dv rd}'|%j.                  }n	d}'d}nd}'d}t%        d       |j1                  |'|d||dddd|"|ddddd||||      }(t3        |(d         sn|(j5                  dd      }|j-                  |||      })t+        |)      dkD  r*|j7                  |j8                  j:                  |||(d      }%|j=                  |(       |
dk(  st+        |       }*|!|*k  rA| |!   }%|j-                  ||%j.                  d      }&|&d   d   dv rd}'|%j.                  }n	d}'d}nd}'d}|j1                  |'|d||dd
dd|#|ddddd||||      }(t3        |(d         rg|(j5                  dd      }|j-                  |||      })t+        |)      dkD  r*|j7                  |j8                  j:                  |||(d      }%|j=                  |(        y )Nr   Tr   Frc   r   )r   r6   r@   r   r`   r   )r   ry   zconsecutive order loopr   r   r`   )r   UpdateCreatez	buy orderr   LIMITDELIVERYDAY)r   r   r   ru   All)	OrderType)r   r   r#   r$   r%   r   r   r   r   r   r   rK   r?   r  r{   r   ranger   rj   roundfloatlenreadOrderBookr   submitOrderr	   r   r   r&   r'   rF   )+r/   r  r   targetIdr7   r@   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r(   r0   r^   rq   rK   r   lstOrdr   checkLogbuyLogsellLogibuyPrice	sellPriceiBuyLogr   lstOrderactionOrderlstOrderBookiSellLogs+                                              r1   r   r     sf    H$$&$1779D++DgFH!$1M(D)M003::CCDFGT51U:	 --h7IFq"a  G##**"("*"'$1&, + H __5_1FooFo3G3~&'&'U9-%2EaPQc
2RTVWXHeI.53EaPQc
3RTVWXIU9-%2DuQqSz2QSUVWHeI.53FqQRs3SUWXYIu&kG7{Qi$223;;NA;x(H4%F!kkG%FG! + "--fh'SXZ\(-w
HjZ[]bdeghjklsu  GK  TY . ZE !y!12))Ib1,::8G][|$q(!001A1A7HV[fl0mC e$ e7|H8|aj(66xZ_6`A;x(H4%F!kkG%FG! "--fh'SXZ\(.YP[]^`eghjkmnov  yC  KO  Y^ . _E !y!12))Ib1,::8G][|$q("11(--2B2BGXW\gm1nC e$a (r3   c                 	   t         j                  j                  | j                        j	                         }t        j                  |j                  t              }t        |j                  |j                        }|j                  |j                  d       |j                  |j                        }|t        d       |j                  j                  |j                        j	                         }t        |j                   d   j                   j"                        }	 t        dt$         d| j&                          | j)                  dd	      d
k(  ryd}d}d}	d}
t$        d   dv rt$        d   dk(  rd}	ny|j                  j                  t$        d   t$        d   |j                        j	                         }t*        j                  j                  |j,                  t$        d   t$        d   d      j/                  d      j	                         }|r|j0                  }n|r|j2                  }nd}t*        j                  j                  |j                  t$        d         j	                         }|rV|j4                  dv ry|j7                  | j8                        r|j:                  dk(  ry|j<                  }|j>                  }tA        t$        d         }t$        d   dk(  r/||jB                  z  }|xjD                  |jB                  z  c_"        n0d}
||jB                  z  }|xjD                  |jB                  z  c_"        t$        j)                  d      |_        ||_        tG        jH                  tK        jL                  d            |_'        |jQ                          ||_)        |jQ                          t$        d    d|j8                   dt$        d    d|jB                   d| d 
} |jT                  jW                  |        |	r|r|jD                  |jX                  k\  rd}|jD                  |jZ                  k  rd}t]        |j^                  |j,                  j                  |j`                  j                  |j8                  |jb                  d!|||jd                  |||jf                  |jh                  |j>                  |
       y y y y # tj        $ r}t        |       Y d }~y d }~ww xY w)"Nr   Tzerror connectionr   r   z
Read data z	 for QID r   rc   rz   Fr`   )rt   rv   rt   r7   r@   r   r   rx   r   r   r   r   r   r   r   r   r   rA   r   r   r   r   )6r   r#   r$   r=   r%   r   r   r0   r!   r   r'   r   r{   rj   rD   r   rK   r?   r
  QueueIdr   r   r&   rC   r   initialStockr`   r  r7   r,   r~   r   r   r   r   r   r   r   r   r   re   r   r(   r)   maximumStockminimumStockr   r   rE   r@   r   r}   r   r*   )r  r  r^   rq   r  rP   rK   r   r   r  r   r  r   r  r   r   r   rk   s                     r1   OrderCallbackrW    s8   				&	&g.?.?	&	@	F	F	HB++BGGMBH!"''"%%0M"%%%++BEE2G !OO""ruu"5;;=EM003::CCDFN
3%y(9:;;;vb![0x=228}
*&&YWcechch&jppr''..hmmsS\~gjkrgs  I.  J  S  S  T`  a  g  g  i **I!..		&&--255CPYN-[aac~~-##GOO4(:K:Ku:TJ--KL 12I:%'W---	""g&6&66" #'W---	""g&6&66" #&''("3GN"+G"*,,t}}^/L"MGLLN!*EJJLZ)5==/3x=/SZScScRddghqgrrtuG))'2 E%%););;#H%%););;"G  x}}/?/?RWR_R_afalalno ):enn '5>>5>>SXS`S`bqs "xM b  c

s2   "4S "S :DS *S 3HS 	S.S))S.)Tr   r   )6trading.modelsr   r   r   r   mainapp.views.socialconnectr   !trading.views.Strategies.strategyr   pandaspdmainapp.views.utilsr	   celeryr
   r   r   	threadingr   %trading.views.Entities.Brokers.brokerr   $trading.views.Entities.brokerAccountr   r   decimalr   trading.views.Redis.redisPubSubr   mainapp.modelsr   r   r   timer   django.db.modelsr   ior   r"  r   -mainapp.views.interaction.Notifications.emailr   	django.dbr   logging	getLoggerloggerr!   r   r   r  r5  r   rW  rV   r3   r1   <module>rm     s    U U 0 6  - 0  (   8 >   3 8 )  0    / ? ! 				E" E"r $BS BSH $<| <|~	 $ XY)-STx% x%zZr3   