
    g?                     j    d dl mZmZ d dlZd dlZ ej
                  e      ZddZ G d d      Z	d Z
y)    )StrategyStatus	StrategisNc                     |  d| d| d| S )N: )MasterQueueclientIdexchangetypes       LC:\Janisar\Projects\MarketYanta\Yantra\yantra\trading\Strategies\strategy.pygetStrategyQueueIdr      s    ]!H:Qxj$88    c                       e Zd ZddZed        Zd Zedd       Zed        Z	ed        Z
d Zd	 Zd
 Zd Zd Zd Zd ZddZy)StrategyNc                 J    || _         d | _        d | _        g | _        d | _        y N)UsercodeStrategyMasterActiveAccountsSetups)selfusers     r   __init__zStrategy.__init__   s'    		" r   c                 v   d }	 t         j                  j                  |      j                         }|rOt	        j
                  d|j                  j                         z         }t        ||j                        } || |      }|S # t        $ r }t        j                  |       Y d }~|S d }~ww xY w# |c cY S xY w)N)r   ztrading.Strategies.)r   objectsfilterfirst	importlibimport_module	classNamelowergetattr	Exceptionloggerdebug)r   r   r
   instancestmoduleclass_es           r   getStrategyInstancezStrategy.getStrategyInstance   s    		"")))6<<>B"001FI[I[I]1]^ 6!$1 O  	LLOOO	 Os*   A?B 	B.B)#B1 )B..B1 1B8c                     t                y r   raiseParentFunctionCallr   s    r   getActiveSetupzStrategy.getActiveSetup        !r   c                     | j                   j                  sy|s| j                  }|d k(  rt        d| j                         | j                         }|d k7  S )NFz"No user defined for strategy code )r   isActiver   r$   r   r1   )r   r   setupss      r   r4   zStrategy.isActive#   sV    ""++99D4<@LMM$$&~r   c                      y)NTr   r0   s    r   requireOrderCallbackzStrategy.requireOrderCallback1   s    r   c                      y)NFr   r0   s    r   requireTickCallbackzStrategy.requireTickCallback5   s    r   c                     g S r   r   r0   s    r   getScriptForTickCallbackz!Strategy.getScriptForTickCallback9   s    	r   c                     t         j                  j                  | j                  | j                        j                         }|r|j                  S y )Nr   strategy)r   r   r   r   r   r   
currStatus)r   statuss     r   	getStatuszStrategy.getStatus=   sB    ''..diiDL_L_.`ffh$$$r   c                    t         j                  j                  | j                  | j                        j                         }|r||_        n#t        | j                  | j                  |d      }|j                          y )Nr=    )r   r>   r?   taskId)r   r   r   r   r   r   r?   save)r   r@   stats      r   	setStatuszStrategy.setStatusD   se    %%,,DII$J]J],^ddf$DO!"&))"&"5"5"("$	D 	r   c                     t                y r   r.   r0   s    r   initiatezStrategy.initiateQ   r2   r   c                     t                y r   r.   r0   s    r   startzStrategy.startT   r2   r   c                     t                y r   r.   )r   defOrderCallbackargss      r   processOrderCallbackzStrategy.processOrderCallbackW   r2   r   c                     t                y r   r.   )r   defTickCallbackrN   s      r   processTickCallbackzStrategy.processTickCallbackZ   r2   r   c                     t                y r   r.   )r   useridorderIdbrokerAccountIdverboseOrderr@   s         r   createOrderLogzStrategy.createOrderLog]   r2   r   )returnNr   )rC   )__name__
__module____qualname__r   staticmethodr,   r1   propertyr4   r7   r9   r;   rA   rG   rI   rK   rO   rR   rX   r   r   r   r   r   
   s      "      """""r   r   c                      t        d      )Nz?Parent method called, please redefine the method in child class)r$   r   r   r   r/   r/   `   s    
U
VVr   )O)trading.modelsr   r   r   logging	getLoggerrZ   r%   r   r   r/   r   r   r   <module>rd      s8    4  			8	$9T" T"lWr   