
     j<                    Z   d dl mZ d dlZd dlZd dlmZmZ d dlmZ d dl	m
Z
  ee                                          j        Z ej                    dz  dz  dz  ZddZddZddZd dZ ed           G d d                      Z ed           G d d                      ZdS )!    )annotationsN)	dataclassfield)Path)Anyz.localstateCryptoTradingBotnamestrdefaultboolreturnc                    t          j        |           }||S |                                                                dv S )N>   1yonyestrue)osgetenvstriplowerr
   r   values      </home/agent/projects/CryptoTradingBot/Crypto_Agent/config.py	_env_boolr      s9    IdOOE};;==  $CCC    r   str | Path | Noner   c                    | %t          |                                           dk    r|S t          |                                                                           S N )r   r   r   
expanduserresolve)r   r   s     r   _coerce_pathr$      sL    }E

((**b00;;!!##++---r   int | floatc                    t          j        |           }||                                dk    r|S t          |t                    r$t          |t
                    st	          |          S t          |          S r    )r   r   r   
isinstanceintr   floatr   s      r   _env_numberr*      sf    IdOOE}++'3 
7D(A(A 5zz<<r   tuple[str, ...]c                    t          j        |           }||S t          d |                    d          D                       S )Nc              3     K   | ]>}|                                 |                                                                 V  ?d S N)r   upper).0parts     r   	<genexpr>z_env_tuple.<locals>.<genexpr>(   sC      SS$djjllS##%%SSSSSSr   ,)r   r   tuplesplitr   s      r   
_env_tupler6   $   sB    IdOOE}SS%++c2B2BSSSSSSr   T)frozenc                     e Zd ZU dZded<   dZded<    ee          Zded<   d	Z	d
ed<   dZ
d
ed<   dZd
ed<   dZd
ed<   dZded<   dZd
ed<   dZd
ed<   dZd
ed<   dZded<   dZd
ed<   dZd
ed <   d!Zd
ed"<   dZd
ed#<   dZd
ed$<   dZded%<   d&Zd
ed'<   d(Zd
ed)<   d*Zded+<   d,Zded-<   d.Zd
ed/<   d0Zd1ed2<   d3Zd1ed4<   d*Zded5<   d6Z ded7<   d6Z!ded8<   d9Z"d:ed;<   d<Z#d:ed=<    ed>           Z$d?ed@<   d9Z%d:edA<   dBZ&dedC<   dDZ'dedE<   dFZ(d
edG<   dHZ)d
edI<   dJZ*d
edK<   dLZ+d
edM<   dZ,d
edN<   dJZ-d
edO<   dPZ.d
edQ<   dRZ/d
edS<   d&Z0d
edT<   dDZ1dedU<   dVZ2dedW<   d&Z3d
edX<   dZ4dedY<   e5e6dZz  fdad_            Z7d`S )b	BotConfig   r(   max_total_trades   default_leverage)default_factoryzdict[str, float]leverage_by_coing      .@r)   crash_roe_trigger_pctg      I@trade_size_usdg     @@wallet_equity_usdcg      ?risk_per_trade_pctfixedr   position_sizing_modeg      4@max_position_margin_pctg      N@max_position_notional_pctg      (@min_order_notional_usd   crash_window_minutesg      @flash_crash_trigger_pctg      ?atr_sl_multiplierg?break_even_activation_pctv_shape_activation_pctv_shape_trail_dist_pctdead_fish_time_limit_minsg      @max_hard_stop_pctg    cAmin_volume_24h<   cooldown_minutes
   max_daily_tradesg      9@max_daily_loss_usd)FTTLUNAUSTCSTABLEr+   	blacklist allowed_coinsmax_scan_coinsi,  baseline_cache_ttl_secondserror_log_throttle_secondsTr   dry_runFpaper_tradingc                     t           S r.   )DEFAULT_RUNTIME_DIRr]   r   r   <lambda>zBotConfig.<lambda>K   s    6I r   r   runtime_dir
tls_verifyflash_crashstrategy_family   squeeze_lookback_ticksg      @squeeze_max_band_width_pctg333333?squeeze_breakout_pctg     A@trend_pullback_min_rsig     Q@trend_pullback_max_rsitrend_pullback_max_distance_pctmean_reversion_max_rsig333333?!mean_reversion_band_tolerance_pctg       @multi_day_min_trend_pct#multi_day_max_pullback_distance_pct relative_strength_lookback_ticks   relative_strength_top_n"relative_strength_min_momentum_pct)relative_strength_min_positive_candidateszstrategy_config.jsonpath
str | Pathr   'BotConfig'c                   i }t          |          }|                                r(t          j        |                    d                    }t          |                    di           t                    r|                    di           ni }t          |                    di           t                    r|                    di           ni }|                    d| j                  }|                    dd          } | di dt          |                    d| j
                            d	t          |                    d	| j                            d
d |                    d
i                                           D             dt          |                    d| j                            dt          |                    d| j                            dt          |                    d| j                            dt          |                    d| j                            dt%          |                    d| j                            dt          |                    d| j                            dt          |                    d| j                            dt          |                    d| j                            dt          |                    d| j                            dt          |                    d| j                            dt          |                    d| j                            dt          |                    d| j                            dt          |                    d| j                            dt          |                    d| j                            dt          |                    d| j                            dt          |                    d| j                            dt          |                    d|                    d| j                                      dt          |                    d| j                             dt          |                    d| j!                            dt          |                    d| j"                            dtG          d  |D                       d!tG          d" |                    d!|                    d!|                    D                       d#t          |                    d#|                    d#| j$                                      d$t          |                    d$| j%                            d%t          |                    d%| j&                            d&tO          |                    d&| j(                            d'tO          |                    d'| j)                            d(tU          |                    d(          tV                    d)tO          |                    d)| j,                            d*t%          |                    d*| j-                            d+t          |                    d+| j.                            d,t          |                    d,| j/                            d-t          |                    d-| j0                            d.t          |                    d.| j1                            d/t          |                    d/| j2                            d0t          |                    d0| j3                            d1t          |                    d1| j4                            d2t          |                    d2| j5                            d3t          |                    d3| j6                            d4t          |                    d4| j7                            d5t          |                    d5| j8                            d6t          |                    d6| j9                            d7t          |                    d7| j:                            d8t          |                    d8| j;                            } | di i |j<        i dt{          d9|j
                  d	t{          d:|j                  d
|j>        dt{          d;|j                  dt{          d<|j                  dt{          d=|j                  dt{          d>|j                  dt          j@        d?|j                  dt{          d@|j                  dt{          dA|j                  dt{          dB|j                  dt{          dC|j                  dt{          dD|j                  dt{          dE|j                  dt{          dF|j                  dt{          dG|j                  dt{          dH|j                  i dt{          dI|j                  dt{          dJ|j                  dt{          dK|j                  dt{          dL|j                   dt{          dM|j!                  dt{          dN|j"                  d!t          dO|jB                  d#t{          dP|j$                  d$t{          dQ|j%                  d%t{          dR|j&                  d&t          dS|j(                  d't          dT|j)                  d)t          dU|j,                  d(tU          t          j@        dV          |jD                  d*t          j@        dW|j-                  d+t{          dX|j.                  d,t{          dY|j/                  t{          dZ|j0                  t{          d[|j1                  t{          d\|j2                  t{          d]|j3                  t{          d^|j4                  t{          d_|j5                  t{          d`|j6                  t{          da|j7                  t{          db|j8                  t{          dc|j9                  t{          dd|j:                  t{          de|j;                  dfS )gNzutf-8)encoding
parametersfiltersr\   	whitelistr]   r;   r=   r?   c                r    i | ]4\  }}t          |                                          t          |          5S r]   )r   r/   r)   )r0   kvs      r   
<dictcomp>z'BotConfig.from_file.<locals>.<dictcomp>l   s2    nnn41ac!ffllnneAhhnnnr   r@   rA   rB   rC   rE   rF   rG   rH   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rT   rV   rW   c              3  X   K   | ]%}t          |                                          V  &d S r.   r   r/   r0   xs     r   r2   z&BotConfig.from_file.<locals>.<genexpr>   s0      >>qCFFLLNN>>>>>>r   r^   c              3  X   K   | ]%}t          |                                          V  &d S r.   r   r   s     r   r2   z&BotConfig.from_file.<locals>.<genexpr>   s0      }}1A}}}}}}r   r_   r`   ra   rb   rc   rg   rh   rj   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rx   ry   rz   CTB_MAX_TOTAL_TRADESCTB_DEFAULT_LEVERAGECTB_CRASH_ROE_TRIGGER_PCTCTB_TRADE_SIZE_USDCTB_WALLET_EQUITY_USDCCTB_RISK_PER_TRADE_PCTCTB_POSITION_SIZING_MODECTB_MAX_POSITION_MARGIN_PCTCTB_MAX_POSITION_NOTIONAL_PCTCTB_MIN_ORDER_NOTIONAL_USDCTB_CRASH_WINDOW_MINUTESCTB_FLASH_CRASH_TRIGGER_PCTCTB_ATR_SL_MULTIPLIERCTB_BREAK_EVEN_ACTIVATION_PCTCTB_V_SHAPE_ACTIVATION_PCTCTB_V_SHAPE_TRAIL_DIST_PCTCTB_DEAD_FISH_TIME_LIMIT_MINSCTB_MAX_HARD_STOP_PCTCTB_MIN_VOLUME_24HCTB_COOLDOWN_MINUTESCTB_MAX_DAILY_TRADESCTB_MAX_DAILY_LOSS_USDCTB_ALLOWED_COINSCTB_MAX_SCAN_COINSCTB_BASELINE_CACHE_TTL_SECONDSCTB_ERROR_LOG_THROTTLE_SECONDSCTB_DRY_RUNCTB_PAPER_TRADINGCTB_TLS_VERIFYCTB_RUNTIME_DIRCTB_STRATEGY_FAMILYCTB_SQUEEZE_LOOKBACK_TICKSCTB_SQUEEZE_MAX_BAND_WIDTH_PCTCTB_SQUEEZE_BREAKOUT_PCTCTB_TREND_PULLBACK_MIN_RSICTB_TREND_PULLBACK_MAX_RSI#CTB_TREND_PULLBACK_MAX_DISTANCE_PCTCTB_MEAN_REVERSION_MAX_RSI%CTB_MEAN_REVERSION_BAND_TOLERANCE_PCTCTB_MULTI_DAY_MIN_TREND_PCT'CTB_MULTI_DAY_MAX_PULLBACK_DISTANCE_PCT$CTB_RELATIVE_STRENGTH_LOOKBACK_TICKSCTB_RELATIVE_STRENGTH_TOP_N&CTB_RELATIVE_STRENGTH_MIN_MOMENTUM_PCT-CTB_RELATIVE_STRENGTH_MIN_POSITIVE_CANDIDATES)rn   ro   rp   rq   rr   rs   rt   ru   rv   rx   ry   rz   )Er   existsjsonloads	read_textr'   getdictr\   r(   r;   r=   itemsr)   r@   rA   rB   rC   r   rE   rF   rG   rH   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rT   rV   rW   r4   r_   r`   ra   r   rb   rc   r$   re   rh   rj   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rx   ry   rz   __dict__r*   r?   r   r   r6   r^   r   rg   )	clsr{   rawconfig_pathparamsr   r\   r   cfgs	            r   	from_filezBotConfig.from_file]   s    4jj 	F*[22G2DDEEC.8r9R9RTX.Y.Yar***_a,6swwy"7M7Mt,T,T\#'')R(((Z\GGK77	GGK,,	c 0
 0
 0
 ,>@T!U!UVVV0
 ,>@T!U!UVVV0
 on6::N`bdCeCeCkCkCmCmnnnn0
 #(

3JCLe(f(f"g"g"g	0

 !,<c>P!Q!QRRR0
  %VZZ0DcF\%]%]^^^0
  %VZZ0DcF\%]%]^^^0
 "%VZZ0FH`%a%a!b!b!b0
 %*&**5NPSPk*l*l$m$m$m0
 ',FJJ7RTWTq,r,r&s&s&s0
 $)4LcNh)i)i#j#j#j0
 "%VZZ0FH`%a%a!b!b!b0
 %*&**5NPSPk*l*l$m$m$m0
 $FJJ/BCDY$Z$Z[[[0
 ',FJJ7RTWTq,r,r&s&s&s0
  $)4LcNh)i)i#j#j#j!0
" $)4LcNh)i)i#j#j#j#0
$ '*&**5PRURo*p*p&q&q&q%0
& $FJJ/BCDY$Z$Z[[['0
( !-=vzzJZ\_\n?o?o!p!pqqq)0
* !,>@T!U!UVVV+0
, !,>@T!U!UVVV-0
.  %VZZ0DcF\%]%]^^^/0
0 >>I>>>>>>10
2  }}

?T[T_T_`oqzT{T{8|8|}}}}}}30
4 vzz*:GKKHXZ]Zl<m<mnnooo50
6 (+6::6RTWTr+s+s't't't70
8 (+6::6RTWTr+s+s't't't90
: Is{;;<<<;0
< vzz/3;LMMNNN=0
> %VZZ%>%>@STTT?0
@ FJJ|S^DDEEEA0
B  

+<c>Q R RSSSC0
D $'vzz2JCLf'g'g#h#h#hE0
F (-VZZ8TVYVt-u-u'v'v'vG0
H "'vzz2H#Jb'c'c!d!d!dI0
J $)4LcNh)i)i#j#j#jK0
L $)4LcNh)i)i#j#j#jM0
N -2&**=^`c  aD  3E  3E  -F  -F  -FO0
P $)4LcNh)i)i#j#j#jQ0
R /4FJJ?bdg  eJ  5K  5K  /L  /L  /LS0
T %*&**5NPSPk*l*l$m$m$mU0
V 16fjjAfhk  iP  7Q  7Q  1R  1R  1RW0
X .1<^`c  aE  2F  2F  .G  .G  .GY0
Z %(

3LcNi(j(j$k$k$k[0
\ 05VZZ@dfi  gM  6N  6N  0O  0O  0O]0
^ 7:&**Epru  s`  ;a  ;a  7b  7b  7b_0
d s 2
 2
0,0 0"K0FH\$]$]0 #K0FH\$]$]0 #C$8	0
 (5PRURk)l)l0 !+.BCDV"W"W0 %k2JCLb&c&c0 %k2JCLb&c&c0 '	2LcNf(g(g0 *;7TVYVq+r+r0 ,[9XZ]Zw-x-x0 )+6RTWTn*o*o0 '4NPSPh(i(i0 *;7TVYVq+r+r0 $[1H#J_%`%`0  ,[9XZ]Zw-x-x!0" )+6RTWTn*o*o#0$ )+6RTWTn*o*o%0 0 0& ,[9XZ]Zw-x-x'0( $[1H#J_%`%`)0* !+.BCDV"W"W+0, #K0FH\$]$]-0. #K0FH\$]$]/00 %k2JCLb&c&c102  ,?AR!S!S304 !+.BCDV"W"W506 -k:Z\_\z.{.{708 -k:Z\_\z.{.{90: 9]CK@@;0<  +>@Q!R!R=0> i(8#.II?0@ |BI6G,H,H#/ZZA0B "29-BCDW#X#XC0D )+6RTWTn*o*oE0F -k:Z\_\z.{.{G0 0H )44NPSPh(i(i*56RTWTn*o*o*56RTWTn*o*o3>?dfi  gJ  4K  4K*56RTWTn*o*o5@Ahjm  kP  6Q  6Q+67TVYVq+r+r7BClnq  oV  8W  8W4?@fhk  iM  5N  5N+67TVYVq+r+r6ABjlo  mS  7T  7T=HIxz}  {h  >i  >i_0 0 02
 2
 2	
r   N)r{   r|   r   r}   )8__name__
__module____qualname__r;   __annotations__r=   r   r   r?   r@   rA   rB   rC   rE   rF   rG   rH   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rT   rV   rW   r\   r^   r_   r`   ra   rb   rc   rg   rh   rj   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rx   ry   rz   classmethodPROJECT_ROOTr   r]   r   r   r9   r9   +   s        ).t)D)D)DDDDD#''''' N     %%%%% $$$$$ '''''%)))))'+++++$((((( """""%((((("""""'*****$'''''$(((((%'''''"""""(N(((( $$$$$!BIBBBB%'M''''N&)))))&)))))GM.I.IJJJKJJJJJ(O(((("$$$$$(+++++"%%%%%$((((($(((((-0#0000$(((((/2%2222%(((((14'4444,.$....#$$$$$03&333356-6666*69O*O o
 o
 o
 o
 [o
 o
 o
r   r9   c                      e Zd ZU ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded	<   ded
<   ded<   ded<   ded<   ded<   ded<   edd            ZddZdS )RuntimePathsr   rg   tradeanalyse_dirreports_dirtrading_logtrade_journal	cooldownsportfolio_stateaccount_healthprofit_historycrash_reportkill_switchpaper_statemarket_contextnear_miss_journalr   r9   r   'RuntimePaths'c                    |j         }|dz  } | |||dz  |dz  |dz  |dz  |dz  |dz  |dz  |d	z  |d
z  |dz  |dz  |dz            S )NTradeanalysereportsztrading_log.txtztrade_journal.jsonlzcooldowns_v61.jsonzportfolio_state.jsonzaccount_health.txtzprofit_history.logzcrash_report.logKILL_SWITCHzpaper_state.jsonzmarket_context.jsonlznear_miss.jsonl)rg   r   r   r   r   r   r   r   r   r   r   r   r   r   )rg   )r   r   rg   r   s       r   from_configzRuntimePaths.from_config   s    o&7s#-#i/(+<<*-BB&)=='*@@&)==&)==$'99#m3#&88&)??.1BB
 
 
 	
r   Nonec                    | j                             dd           | j                            dd           | j                            dd           d S )NT)parentsexist_ok)rg   mkdirr   r   )selfs    r   ensure_dirszRuntimePaths.ensure_dirs   s\    td;;;##D4#@@@td;;;;;r   N)r   r9   r   r   )r   r   )r   r   r   r   r   r   r   r]   r   r   r   r      s         OOO
 
 
 [
(< < < < < <r   r   )r
   r   r   r   r   r   )r   r   r   r   r   r   )r
   r   r   r%   r   r%   )r
   r   r   r+   r   r+   )
__future__r   r   r   dataclassesr   r   pathlibr   typingr   __file__r#   parentr   homere   r   r$   r*   r6   r9   r   r]   r   r   <module>r      s   " " " " " "  				 ( ( ( ( ( ( ( (             tH~~%%''.dikkH,w69KK D D D D. . . .   T T T T $a
 a
 a
 a
 a
 a
 a
 a
H $(< (< (< (< (< (< (< (< (< (<r   