o
    H~f"                     @   s^   d dl m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 G dd dZd	S )
    )	Strategy1)Strategy)BrokerAccount)getUniqueStructgetItemByKey)	Strategis)Distributorc                   @   s>   e Zd ZddddZdddZdd Zdd	d
ZdddZdS )StrategyManagerNreturnc                 C   s   || _ || _d S N)Usercode)selfuserr    r   TD:\Janisar\Projects\Python\Genie\myGenie\trading\views\Strategies\strategyManager.py__init__   s   
zStrategyManager.__init__c           	      C   s   g }g }t j }| jr|j| jd}|D ]}t| j|j|}|r*|jr*|	| q|D ]}|j
D ]}||vr=|	| q2q-|rX|| _|}g }|D ]}|d |krW|	| qJ|| _|| _
|S )N)r   exchange)r   objectsallr   filterr   ZgetStrategyInstancer   isActiveappendZActiveScriptsr   ActiveStrategies)	r   r   ZlstActiveStrategiesZlstActiveScriptsZ
strategiesZstratstrategyscriptZlstTempr   r   r   getActiveStrategies   s8   




z#StrategyManager.getActiveStrategiesc              	   C   sL   | j }t|}| jD ]}|jD ]}| j|}||jt|d| qq
d S )N	accountId)	TicksForCallbackr   r   ZActiveAccountsbrokerAccountZgetBrokerObjectsubscribeWebSocketsZrequireOrderCallbackr   )r   lstTicks	lstUniquer   r   Z	brokerObjr   r   r   r    6   s   

z#StrategyManager.subscribeWebSocketsc                 C   sl   g }g }|  | t| j}|  || _| jD ]}|  | }|D ]}|| q$q|| _	| 
  d S r   )r   r   r   ZConnectr   r   initiateZgetScriptForTickCallbackr   r   r    )r   r   r!   ZlstTickForCallback	brokerAccr   Ztickstickr   r   r   r#   ?   s   


zStrategyManager.initiatec                 C   s   | j D ]	}|| j| qd S r   )r   startr   )r   r   r   r   r   r   r&   N   s   
zStrategyManager.startr   )r
   N)__name__
__module____qualname__r   r   r    r#   r&   r   r   r   r   r	      s    
!
	r	   N)Z"trading.views.Strategies.strategy1r   Z!trading.views.Strategies.strategyr   Z$trading.views.Entities.brokerAccountr   mainapp.views.utilsr   r   trading.modelsr   Ztrading.views.Redis.distributorr   r	   r   r   r   r   <module>   s    
