
    xe                     F    d dl mZmZ d dlZddZ G d d          Zd ZdS )	    )StrategyStatus	StrategisNOc                     |  d| d| d| S )N: )MasterQueueclientIdexchangetypes       SC:\Janisar\Development\Python\Genie\StockGenie\trading\views\Strategies\strategy.pygetStrategyQueueIdr      s&    88H88x88$8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dS )StrategyreturnNc                 L    || _         d | _        d | _        g | _        d | _        d S N)UsercodeStrategyMasterActiveAccountsSetups)selfusers     r   __init__zStrategy.__init__	   s+    		" r   c                 r   d }	 t           j                            |                                          }|rNt	          j        d|j                                        z             }t          ||j                  } ||           }n&# t          $ r}t          |           Y d }~nd }~ww xY w|S # |c cY S xY w)N)r   ztrading.views.Strategies.)r   objectsfilterfirst	importlibimport_module	classNamelowergetattr	Exceptionprint)r   r   instancestmoduleclass_es          r   getStrategyInstancezStrategy.getStrategyInstance   s    
	")))66<<>>B ("01Lr|OaOaOcOc1cdd 66!6$<< 	 	 	!HHHHHHHH	 O8OOOOOOOOs0   BB B/ 
B*B% B/ %B**B/ /B6c                 "    t                       d S r   raiseParentFunctionCallr   s    r   getActiveSetupzStrategy.getActiveSetup       !!!!!r   c                     | j         j        sdS |s| j        }|d k    rt          d| j                   |                                 }|d k    S )NFz"No user defined for strategy code )r   isActiver   r&   r   r2   )r   r   setupss      r   r5   zStrategy.isActive"   sa    "+ 	5 	9D4<<LLLMMM$$&&~r   c                     dS )NTr   r1   s    r   requireOrderCallbackzStrategy.requireOrderCallback0   s    tr   c                     dS )NFr   r1   s    r   requireTickCallbackzStrategy.requireTickCallback4   s    ur   c                     g S r   r   r1   s    r   getScriptForTickCallbackz!Strategy.getScriptForTickCallback8   s    	r   c                     t           j                            | j        | j                                                  }|r|j        S d S )Nr   strategy)r   r   r   r   r   r    
currStatus)r   statuss     r   	getStatuszStrategy.getStatus<   sD    '..diDL_.``ffhh 	$$4r   c                     t           j                            | j        | j                                                  }|r||_        nt          | j        | j        |d          }|                                 d S )Nr>    )r   r?   r@   taskId)r   r   r   r   r   r    r@   save)r   rA   stats      r   	setStatuszStrategy.setStatusC   sw    %,,DI$J],^^ddff 	$DOO!"&)"&"5"("$	  D 	r   c                 "    t                       d S r   r/   r1   s    r   initiatezStrategy.initiateP   r3   r   c                 "    t                       d S r   r/   r1   s    r   startzStrategy.startS   r3   r   c                 "    t                       d S r   r/   )r   defOrderCallbackargss      r   processOrderCallbackzStrategy.processOrderCallbackV   r3   r   c                 "    t                       d S r   r/   )r   defTickCallbackrO   s      r   processTickCallbackzStrategy.processTickCallbackY   r3   r   rD   c                 "    t                       d S r   r/   )r   useridorderIdbrokerAccountIdverboseOrderrA   s         r   createOrderLogzStrategy.createOrderLog\   r3   r   )r   Nr   )rD   )__name__
__module____qualname__r   staticmethodr-   r2   propertyr5   r8   r:   r<   rB   rH   rJ   rL   rP   rS   rY   r   r   r   r   r      s%             \" " "    X   X   X      " " "" " "" " "" " "" " " " " "r   r   c                       t          d          )Nz?Parent method called, please redefine the method in child class)r&   r   r   r   r0   r0   _   s    
U
V
VVr   )r   )trading.modelsr   r   r!   r   r   r0   r   r   r   <module>ra      s    4 4 4 4 4 4 4 4    9 9 9 9U" U" U" U" U" U" U" U"nW W W W Wr   