
    7h                         d dl mZmZ d dlmZmZ d dlZd dl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 d dl d	 Zd
 Zy)    )defaultdictOrderedDict)datetimetimezoneN)DataAPI)JupAPI)CoingeckoAPI)StaticMethod)*c                   K   t        j                  |       }|sy|d   j                  d      }|r|dk(  ry|d   j                  d      dk\  rd}t        j	                  d       y|t
        k\  rd}t        j	                  d	       yd}d}|D ]X  }|j                  d      }|j                  d      }|r|dk(  r-||z
  |z  d
z  }	|	t        k\  rd}|t
        k\  s
|t
        k\  sVd} n |r4|rd}t        j	                  d       |S d}t        j	                  d       |S |sd}t        j	                  d       |S d}t        j	                  d       |S w)u   
    Фильтрует токен на основе свечей: должен достичь mcap без пампа выше pump_percent.
    Fr   openclosei0u  CO30KuE   🪙❌ НЕ ПРОШЁЛ — первый close уже выше 30кFCOTuN   🪙❌ НЕ ПРОШЁЛ — первая свеча уже выше целиd   TTRPBuY   🪙❌ НЕ ПРОШЁЛ — достиг цели, но был памп до этогоgoodu@   🪙✅ ПРОШЁЛ — достиг цели без пампаNOMIGuP   НЕ ПРОШЁЛ — не достиг 10000 , но пампов не было TNRPBuN   🪙❌ НЕ ПРОШЁЛ — не достиг цели, но был памп)r   get_all_candlesget
app_loggerinfoMC_STOPPUMP_PERCENT)
tokencandlesstart_pricequalityreached_mcaphad_pumpcandle
open_priceclose_priceprice_change_percents
             4/home/ubuntu/SOL_API/sol_API/src/v3/utils/filters.pyfilter_token_by_candlesr'      se     $$U+G!*..(K+*qz~~g%'_`ghiLH ZZ'
jj)Z1_!,z!9Z G3N</H K7$:L  GOOwxNGOO^_NGOOnoNGOOlmNs   C E#A/Ec                 `   g }d}d}| D ]  }t        |      D ].  }	 t               j                  |      }|rd|v r n)t        d       t
        j                  d
| d| d       \t               }|j                  dg       D ]%  }		 |	d   d   d   d   d   }
|j                  |
       ' t        |      t        k  s|j!                  |        |S # t        $ rD}t
        j                  d| d|dz    d| d|        t        j                  |       Y d	}~d	}~ww xY w# t        $ r Y w xY w)u   
        Фильтрует кошельки, у которых количество токенов не превышает MAX_TOKENS_FOR_WALLET.
        Также выставляет флаг freshik.
          valueuC   [filter_wallets_by_token_count] Некорректный ответu>    Ошибка при получении токенов для u   , попытка /z: Nu5   [filter_wallets_by_token_count] Пропускаем u    после u    попытокaccountdataparsedr   mint)ranger   get_token_accounts_by_owner
ValueError	Exception
fil_loggererrorstd_timesleepwarningsetr   addKeyErrorlenMAX_TOKENS_FOR_WALLETappend)walletsvalid_walletsmax_retriesretry_delaywalletattemptresponseemint_addressesaccr0   s              r&   filter_wallets_by_token_countrJ   M   s   
 MKK )[) 	G,"9@@H8 3$%jkk	 !VW]V^^jkvjw  xG   H  I<<, 	C9~f-h7?G""4(	 ~"77  (1)4 %  ,  #abhaiiz  |C  FG  |G  {H  HI  JU  IV  VX  YZ  X[  "\  ]{++,  s.   CC"D!	D9DD!	D-,D-)collectionsr   r   r   r   timer7   pymysqljsonAPI.dataAPIr   
API.jupAPIr   API.coingeckoAPIr	   	utils.StMr
   utils.loggerutils.configr'   rJ        r&   <module>rW      s1    0 '      ) "  :|"rV   