
    4i                     P   d dl Z 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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mZmZmZmZmZ d dl m!Z! d dl"m#Z# d dl$m%Z%  e j&        e j'        d            e j(        e)          Z*g dZ+edefd            Z, eddde,          Z-e-.                    edgddgdg           e-/                    ej0                   e-/                    ej0                   e-/                    ej0                   e-/                    ej0                   e-/                    ej0                   e-/                    ej0                   e-/                    e#j0                   e-1                    d          d             Z2dS )    N)asynccontextmanager)FastAPI)CORSMiddleware)init_dbAsyncSessionLocal)start_schedulerstop_scheduler)trade_monitor)DecisionEngine)TradeService)telegram_service)RSIStrategy)EMACrossoverStrategy)bottrades
strategies	analyticssettingsmarket)set_decision_engine)
websockets)broadcast_trade_eventz6%(asctime)s | %(levelname)-8s | %(name)s | %(message)s)levelformat)zBTC/USDTzETH/USDTzBNB/USDTzSOL/USDTzXRP/USDTappc                j  K   t                               d           t                       d{V  t                      }t	                      }t          ||g          }t          |          t          |           t          j	        t          _        t          j        t          _        t          j        t          _        d }fd}t!          ||           t          j                     t                               d           dW V  t%                       t                               d           dS )	zStartup and shutdown logic.z&Starting Crypto Trading Bot backend...N)r   )decision_enginec                     K   t                      4 d {V } t          j        |            d {V  d d d           d {V  d S # 1 d {V swxY w Y   d S )N)r   r
   check_open_trades)dbs    ,/var/www/html/crypto-bot/backend/app/main.py_trade_monitor_jobz$lifespan.<locals>._trade_monitor_job9   s      $&& 	6 	6 	6 	6 	6 	6 	6"1"555555555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6s   A
AAc            	        K   t                      4 d{V } t          D ]}	                     ||            d{V }|r(t          d|                                           d{V  J# t
          $ r*}t                              d| d|            Y d}~yd}~ww xY w	 ddd          d{V  dS # 1 d{V swxY w Y   dS )z#Scan all watched pairs for signals.Ntrade_openedzBot cycle error for z: )r   WATCHED_PAIRSrun_signal_cycler   to_dict	Exceptionloggererror)r    pairtradee	trade_svcs       r!   _bot_cycle_jobz lifespan.<locals>._bot_cycle_job=   s     $&& 	E 	E 	E 	E 	E 	E 	E"% E EE"+"<"<T2"F"FFFFFFFE U3NEMMOOTTTTTTTTT  E E ELL!C!C!C!C!CDDDDDDDDEE	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	Es;   
B5AA*)B5*
B4 BB5BB55
B?B?z)Backend started successfully on port 8002zBackend shutdown complete)r)   infor   r   r   r   r   r   r   notify_sl_hitr
   	on_sl_hitnotify_tp_hit	on_tp_hitnotify_trade_closedon_trade_closedr   start_command_listenerr	   )r   rsiemar   r"   r/   r.   s         @r!   lifespanr:   #   s6      KK8999 ))OOOOOOO --C

 
 C$c
;;;O_===I ((( /<M.<M$4$HM!6 6 6	E 	E 	E 	E 	E &777 +---
KK;<<<	EEEE 
KK+,,,,,    zCrypto Trading Bot APIz4Binance Spot trading bot with RSI and EMA strategiesz1.0.0)titledescriptionversionr:   *T)allow_originsallow_credentialsallow_methodsallow_headersz/healthc                     K   dddS )Nokzcrypto-bot-backend)statusservice rH   r;   r!   healthrI   o   s      ';<<<r;   )3logging
contextlibr   fastapir   fastapi.middleware.corsr   app.databaser   r   app.core.schedulerr   r	   app.engines.trade_monitorr
   app.engines.decision_enginer   app.services.trade_servicer   app.services.telegram_servicer   app.strategies.rsi_strategyr   app.strategies.ema_crossoverr   app.api.routesr   r   r   r   r   r   app.api.routes.marketr   app.apir   app.api.websocketsr   basicConfigINFO	getLogger__name__r)   r%   r:   r   add_middlewareinclude_routerroutergetrI   rH   r;   r!   <module>rb      s    * * * * * *       2 2 2 2 2 2 3 3 3 3 3 3 3 3 > > > > > > > > 3 3 3 3 3 3 6 6 6 6 6 6 3 3 3 3 3 3 : : : : : : 3 3 3 3 3 3 = = = = = = O O O O O O O O O O O O O O O O 5 5 5 5 5 5       4 4 4 4 4 4  
,C    
	8	$	$   .- .- .- .- .-b g
"F	     %%%       3:      6= ! ! !   :$ % % %   9# $ $ $   8? # # #   6= ! ! !   :$ % % % = = = = =r;   