
    Bjj`                     *   d Z ddlZddlZddlZddlZddl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Zddl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mZ ddlmZ ddlm Z 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,m-Z-m.Z. ddl/m0Z0m1Z1 dZ2d Z3dZ4 ej5        e4          Z6 ej7        dd          Z8 ej9        e6          Z:e:;                                 da< e0j=                    Z>e6j?        s ej@        ejA        jB                   d ZCd ZD	 e6jE        ZFe6jG        ZHe6jI        ZJe6jK        ZLe6jM        ZNe6jO        ZPe6jQ        ZRe6jS        ZTe6jU        ZVe6jW        ZXe6jY        ZZe6j[        Z\ e]e6j^                  Z_e6j`        Zai Zbi Zci Zdi Ze ee6jf                  Zgi Zhi Zid Zjd Zkd Zld Zmd Znd  Zod! Zpd" Zqd# Zrd$ Zsd% Zteud&k    r e3              et             dS dS # ev$ r&Zw eCd' ejx                                Y dZw[wdS dZw[www xY w)(a8  LEGACY DISABLED ENTRYPOINT.

This monolithic AutoTrader is retained only for historical reference and must
not be used as the production/live core. It can exit early unless
CTB_ALLOW_LEGACY_AUTOTRADER=true is set explicitly. The supported target stack
is the modular `src/` architecture documented in README.md.
    N)datetime)load_dotenv)build_risk_alertbuild_trade_alert)	BotConfigRuntimePaths)calculate_daily_metrics)TradingExecutor)append_journal_event)BaselinePriceCacheshould_log_error)select_scan_coins)append_near_missbuild_near_miss_eventleverage_for_coin)PaperExchange)calculate_position_size)recover_position_state)	risk_gate)PositionStateexit_long_positionshould_enter_by_strategy_family)TelegramAlertConfigsend_telegram_alertzHLegacy AutoTrader disabled; use src/tools/preflight.py and v76 executorsc                      t          j        dd                                          dk    r#t          t                     t          d          d S )NCTB_ALLOW_LEGACY_AUTOTRADER true   )osgetenvlowerprint"LEGACY_AUTOTRADER_DISABLED_MESSAGE
SystemExit     AutoTrader.py!require_legacy_autotrader_enabledr)   (   sJ    	y.3399;;vEE0111mm FEr'   zstrategy_config.jsonCTB_STRATEGY_IDv61_tight_survivalc                 v   t          j                                        d          }d| d|  }t          |           	 t	          t
          j        dd          5 }|                    |dz              d d d            d S # 1 swxY w Y   d S # t          $ r }t          d| d|            Y d }~d S d }~ww xY w)	Nz%Y-%m-%d %H:%M:%S[z] azutf-8)encoding
z] LOGGING_FEHLER: )	r   nowstrftimer#   openPATHStrading_logwrite	Exception)msgtslinefexcs        r(   
log_actionr=   :   s   		 	 !4	5	5Br??S??D	$KKK/%#S7;;; 	!qGGD4K   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! / / /-"----........./s;   B B4B BB B	B 
B8B33B8c                     t          d| j                    t          | t                    }|j        rt          d|j                    d S |j        dk    rt          d|j                    d S d S )Nu   📣 ALERT PLAN: u)   📨 Telegram Alert gesendet: message_id=disabledu&   ⚠️ Telegram Alert nicht gesendet: )r=   textr   TELEGRAM_CONFIGsent
message_idreason)alertresults     r(   handle_alertrG   E   s    /5://000 88F{ MRv?PRRSSSSS	*	$	$KFMKKLLLLL 
%	$r'   )ttl_secondsc                     |  dS )Nz
/USDC:USDCr&   )coins    r(   ccxt_symrK   k   s    $2222r'   c                     t           j        r5t          dt          j                    t          t          j                  S t                       t          j        d          } t          j        d          }| r|st          d          t          j        || dddid          }t           j        |j        _        |                                 |S )	Nu    🧪 PAPER TRADING aktiv: State=HL_API_PRIVATE_KEYHL_WALLET_ADDRESSz<HL_API_PRIVATE_KEY oder HL_WALLET_ADDRESS fehlen in der .envTdefaultTypeswap)walletAddress
privateKeyenableRateLimitoptions)CONFIGpaper_tradingr=   r4   paper_stater   r   r    r!   RuntimeErrorccxthyperliquid
tls_verifysessionverifyload_markets)
secret_keywallet_addressexchanges      r(   create_exchangerb   m   s     	4M%:KMMNNN !2333Y344
#677 	_ 	_]^^^#+$#%v.	%
 %
   #)"3r'   c                  <    t           t          d          t           S )Nz)TradingExecutor wurde nicht initialisiert)EXECUTORrX   r&   r'   r(   require_executorre      s    JKKKr'   c                    t           j                            |           rl	 t          | d          5 }t	          j        |          cd d d            S # 1 swxY w Y   n.# t          $ r!}t          d|  d|            i cY d }~S d }~ww xY wi S )Nru)   ⚠️ JSON konnte nicht geladen werden (z): )r    pathexistsr3   jsonloadr7   r=   )	file_pathr;   r<   s      r(   	load_jsonrm      s    7>>)$$ 	)S))CQty||CCCCCCCCCCCCCCCCC   ZyZZUXZZ[[[						 	s@   A AA AA AA 
B	(B>B	B	c                     t          | d          5 }t          j        ||d           d d d            d S # 1 swxY w Y   d S )Nw   )indent)r3   rj   dump)rl   datar;   s      r(   	save_jsonrt      sc    )S!!DQ	$!(D(D(D(DDDDDDDDDDDDDDDDDDDs   6::c                 4   	 t          j        |          }|                    d          dk    r=|d         d                                         D ]\  }}t	          |          t
          |<   d S d S # t          $ r}t          d|            Y d }~d S d }~ww xY w)NchannelallMidsrs   midsu$   ⚠️ WebSocket message ignoriert: )rj   loadsgetitemsfloatLIVE_PRICESr7   r=   )wsmessagers   cpr<   s         r(   
on_messager      s    	E:g&&Dxx	""i// L06688 . .DAq%*1XXKNN 0/. . 	E 	E 	ECcCCDDDDDDDDD	Es   A*A0 0
B:BBc                  2   	 	 t          j        dt          d           } |                     dt          j        rt          j        nt          j        i           n=# t          $ r0}t          d|            t          j        d           Y d }~nd }~ww xY w)	NTzwss://api.hyperliquid.xyz/wsc                 Z    |                      t          j        dddid                    S )N	subscribetyperw   )methodsubscription)sendrj   dumps)r~   s    r(   <lambda>zstart_ws.<locals>.<lambda>   s+    rwwtz[ciktbu:v:v/w/w'x'x r'   )r   on_open	cert_reqs)ssloptu(   ⚠️ WebSocket reconnect nach Fehler: r   )	websocketWebSocketAppr   run_foreverrU   r[   sslCERT_REQUIRED	CERT_NONEr7   r=   timesleep)r~   r<   s     r(   start_wsr      s    
		+2)xx  
 {IZ4mC4E4E`c`m&noooo   KcKKLLL
1
	s   AA 
B%&BBc                 $   	 t          t          j                    dz            }|dz
  }d| d||dd}t          j        ddd	i|t          j        
          }|                                }|rt          |          dk     r|dz  S d |D             }d |D             }d |D             }	g }
t          dt          |                    D ]u}t          ||         |	|         z
  t          ||         ||dz
           z
            t          |	|         ||dz
           z
                      }|
                    |           vt          |
          dk    rt          |
dd                    dz  n|d         |	d         z
  S # t          $ r |dz  cY S w xY w)N  i \&candleSnapshot15mrJ   interval	startTimeendTimer   req https://api.hyperliquid.xyz/infoContent-Typeapplication/json)headersrj   r]      g{Gz?c                 8    g | ]}t          |d                    S )r   r|   .0r   s     r(   
<listcomp>zget_atr.<locals>.<listcomp>   s"    555eAcFmm555r'   c                 8    g | ]}t          |d                    S )hr   r   s     r(   r   zget_atr.<locals>.<listcomp>   s"    444qU1S6]]444r'   c                 8    g | ]}t          |d                    S )lr   r   s     r(   r   zget_atr.<locals>.<listcomp>   s"    333aE!C&MM333r'         i)intr   requestspostrU   r[   rj   lenrangemaxabsappendsumr7   )rJ   
current_pxend_time
start_timepayloadrg   candlescloseshighslows
truerangesitrs                r(   get_atrr      s   	349;;-..H!%89J/SXgq  G  9H  9H  I  IG@>[mJnu|  FL  FW  X  X  XAffhhGIc'llR//
T8I1I55W555F44G444E337333DJ1c&kk** & &qDG+SqF1Q3K1G-H-H#dSTgX^_`ab_bXcNcJdJdee!!"%%%%14ZB1F1F3z#$$'((2--USUYW[\^W_M_`222d!22222s   BE= C6E= =FFc                 <   t          t          j                    dz            }|dz
  }d| d||dd}t          j        ddd	i|t          j        d
          }|                                }|r.t          |          dk    rt          |d         d                   S dS )Nr   i D r   r   r   r   r   r   r   
   r   rj   r]   timeoutr   o        )	r   r   r   r   rU   r[   rj   r   r|   )rJ   r   r   r   rg   r   s         r(   fetch_baseline_pricer      s    ty{{T)**0
+Tucm  {C  5D  5D  E  EM<~WiFjqx  BH  BS  ]_  `  `  `&&(( 	*s7||a''C)))sr'   c                 2   	 t                               | t          j                    t                    S # t          $ rU}t          d|  t          j                    t          t          j                  rt          d|  d|            Y d }~nd }~ww xY wdS )N)now_tsfetcherz	baseline:r   last_loginterval_secondsu*   ⚠️ Baseline-Preis nicht abrufbar für : r   )
BASELINE_CACHErz   r   r   r7   r   ERROR_LAST_LOGrU   error_log_throttle_secondsr=   )rJ   r<   s     r(   get_baseline_pricer      s    	W!%%d49;;H\%]]] 	W 	W 	W 2D 2 249;;Q_rx  sT  U  U  U WUUUPSUUVVV	W ss   25 
BABBc                  8  9 t          dt           dt          j         dt          j         dt          j         d	           t                      } t          | t          j                  at          j
        t          d                                           d	}d	}d	}i }i }t          t          t          j                            }t"          st%          j        d
           t"          	 	 t%          j                    }||z
  dk    r&	 t)          j        dddiddit          j        d          }|j        dk    rv|                                }	t1          |	d	         d                   D ]F\  }
}|d         }t3          |	d         |
         d                   t4          |<   |d         t6          |<   G|                                 }i }|D ]}t3          |                    dd	                    }|d	k    r|d                             d          d	         }t3          |d                   t3          |d                   |d         |d         dk    r|n| d||<   ||vr}t?          |t3          |d                             }tA          ||t          |           \  }}|||<   |r8tC          d!| |tD          t          j#        "          rt          d#| d$           |}|}nK# tH          $ r>}tC          d%|tD          t          j#        "          rt          d&|            Y d }~nd }~ww xY wtK          t4          t                    }tM          |          }t"          '                                D ]?\  }}||vr
|tP          vr
g tP          |<   tP          |         )                    ||f           @||z
  dk    r|tT          d'z  z
  9tW          tP          ,                                          D ]}||vrtP          -                    |d            "t          j.        d(v r:tP          |         t_          d)t          j0        dz              d          tP          |<   jt          j.        d*v rtP          |         d+d          tP          |<   9fd,tP          |         D             tP          |<   |}||z
  d'k    rltc          t          j2                  }t          d-t           d.tg          |           d/tg          |           dth           d0|j5         d1|j6        d2d3           |}g }tW          |'                                          D ]	\  }}t"                              |d	          }|d	k    s||vr,||         }|d4         }|d         }d } d5}!|d6         dk    r|j7        }"|j8        }#ts          |||||t          7          }$|j7        r|"st          d8| d9| d:           |j8        r|#st          d;| d<           tu          | d=d           }%tw          |%          r+ |%||j<        |j=        |j>        |j7        |j8        d>           |$j?        r	d?} |$j@        }!| d?k    r	 t          |          }&t6                              |d	          }'|'d	k    r#t          t          |d@                   |'          n!t          t          |d@                             }(t                      F                    |&dAdB|(|dCdiD           t3          |                    d4|                    })|                    d6          dk    r||)z
  |(z  n|)|z
  |(z  }*t          t          j2        dE||                    d6d          ||(t          j        |!|*dFt          iG
  
         t          dE||                    d6d          ||(t          j        t          j        |!|*H	  	        }+t          dI| dJ|! t          j        rdKnd5            t          |+           |)                    |           |||<   # tH          $ r },t          dL| dJ|,            Y d },~,d },~,ww xY w|D ].}-|-                    |-d            |-                    |-d            /|r't          t          t          j                  |           tc          t          j2                  }.t          |.j6        |.j5        t          jL        t          M          }/|/jM        s\||z
  d'k    rQt          |/j@        t          j        t          j        N          }+t          dO|/j@                    t          |+           ntg          |          th          k     r}tW          tP          '                                          D ]U\  }}0t          j.        dPv rt_          dQt          j0                  }1nt          j.        dRk    rt_          d)t          j0                  }1nTt          j.        dSv rdT}1nCt          j.        dUk    rd}1n0t          j.        dVk    rt_          dQt          jO        dz             }1nd)}1tg          |0          |1k     rt"                              |d	          }t          |          }2t          ||0|t4                              |d	          |2tM          |,                                          ||t          tP          W
  
        }3|3jR        sr|3j@        dXv rg|3jS        d	k     r\t          t          ||0||3j@        t          |Y          }4|4r5tC          dZ| |t          d'"          rt          t          jW        |4           t          |          }&	 t          t          |          }5t                      Y                    |5|&           t?          ||          }|d	k    rt          |z  |z  d[z  nt          }6t_          d\t          t          |6                    }7t          |||5|7t          ]          }8t          t_          |8j^        t          j_        |z            t6                              |d	                    }(t                      F                    |&dAd^|(|d_|||t          |z  z
  d`d`d>iD           t          t          j2        da|d||(t          j        |3j@        |3jS        |3j`        |3ja        |5t          t          jb        |8jc        |8jd        |8je        |8jf        |8jg        dbc	  	         t          da|d||(t          j        t          j        |3j@        d          }+t          det           df| dg|3j@         dh|8jc        didj|8jd        didk|8je        didlt          j        rdKnd5            t          |+           ||5d|(d||<   t          |||t          |z  z
  m          ||<   g tP          |<    n-# tH          $ r },t          dn| dJ|,            Y d },~,Od },~,ww xY wt%          j        d
           n$# tH          $ r t%          j        d           Y nw xY w2)oNu   ⚡ z gestartet (Dry-run=z, Paper=z, TLS verify=z)...)dry_runT)targetdaemonr   g?r   r   r   r   r   metaAndAssetCtxsr      universenamer   	dayNtlVlm
szDecimals	contractssymbol/
entryPriceleveragesidelong)entry_pxr   dirszi)r   cfgatrzrestart_state:r   u)   ⚠️ Position-State rekonstruiert für z,; konservative Time-Stop/ATR Defaults aktiv.meta_positionsu,   ⚠️ API/Positions-Update fehlgeschlagen: <   >   hybrid_survival_squeezeconfirmed_squeeze_breakoutvolatility_squeeze_breakout   >   trend_pullback_sma_vwapmulti_day_trend_investmentrelative_strength_rotationbollinger_rsi_mean_reversioniPc                 ,    g | ]}|d          k    |S )r   r&   )r   xcutoff_times     r(   r   zmain.<locals>.<listcomp>  s+    2i2i2iUVWXUY]hUhUh1UhUhUhr'   u   🕸️ NETZ AKTIV (z
): Scanne z Coins. Trades: z	. Heute: z
 closed / z+.2fz USDC.r   r   r   )r   r   r   stater   r   u   🛡️ BREAK-EVEN SNAP für z! Stop auf z nachgezogen.u%   🔥 V-SHAPE TRAILING AKTIVIERT für !update_position_state)entryTs	highPriceatrSlPxbeActivetrailingActivecloser   marketsell
reduceOnly)paramsexitstrategy_id)	
event_typerJ   r   pricesizer   rD   realized_pnl_usdextra)	r  rJ   r   r  r  r   rV   rD   r  u	   ✅ EXIT r   z
 [DRY-RUN]u   ❌ EXIT FEHLER )daily_pnl_usddaily_trade_countkill_switch_pathr   )rD   r   rV   u!   ⛔ Risk Gate blockiert Entries: >   r   r   r   r   >   r   r      r   r   )
rJ   historycurrent_price
volume_24hbaseline_priceopen_positions	cooldownsr   r   market_histories>   above_baselineno_flash_crash)r  rJ   r  r  rD   r   r   z
near_miss:g      Y@g{Gz?)rJ   r  r   stop_distance_pctr   buypaper_position_stateFentry)drop_pctroe_drop_pctrequired_drop_pctr   r  position_sizing_modenotional_usd
margin_usdrisk_usdr  
sizing_cap)r  rJ   r   r  r  r   rD   r  )r  rJ   r   r  r  r   rV   rD   u   💥 z ENTRY:  z! Notional: z.2fz USDC, Margin: z, Risk: .)entry_tshigh_px	atr_sl_pxu   ❌ ENTRY FEHLER )ir=   STRATEGY_IDrU   r   rV   r[   rb   r
   rd   	threadingThreadr   startrm   strr4   r  r}   r   r   r   r   status_coderj   	enumerater|   VOLUMESSZ_DECIMALSfetch_positionsrz   splitr   r   r   r   r   r7   r   setr{   PRICE_HISTORYr   CRASH_WINDOW_MINUTESlistkeyspopstrategy_familyr   squeeze_lookback_ticksr	   trade_journalr   MAX_TOTAL_TRADESclosed_trade_countr  	be_activetrailing_activer   getattrcallabler,  r-  r.  r  rD   rK   roundr   r   re   create_orderr   r   rG   rt   r   kill_switchallowedr    relative_strength_lookback_ticksr   r   enterr"  r   NEAR_MISS_LAST_LOGr   near_miss_journalr   set_leverageATR_SL_MULTIPLIERMAX_HARD_STOP_PCTminr   r  min_order_notional_usdr#  r$  r%  r&  r'  r(  r  	capped_byr   ):ra   last_api_updatelast_scan_loglast_history_cleanupr  memory_stater  
current_tsrg   rs   r   	coin_info	coin_nameccxt_positionsnew_openr   r   rJ   r   recovered_statereconstructedr<   
scan_coinsscan_coin_setpxmetricsclosed_coinspos_datacurr_pxr   r   r   action_triggerrD   was_be_activewas_trailing_activeexit_decisionr   r   decimalsr  entry_for_pnlr  rE   er   daily_metricsrisk_decisionhistmin_historybaseline_pxentry_decision	near_misscoin_leverageatr_stop_pctr  sizingr   s:                                                            @r(   mainrz     s     N+  N  N6>  N  NSYSg  N  Nv|  wH  N  N  N  	O  	O  	O"$$"8V^DDD666<<>>>Q]q0Dc%/2233	.tz#+.n	,m,!Y[[
/"44]$M*LWegyVz  CI  K]  B^  gm  gx  BD  E  E  E=C//#$6688D09$q'*:M0N0N Q Q9,5f,=	5:471:k;R5S5S	 29B<9PI 6 6)1)A)A)C)C#%!/ S SA(-aeeK.C.C(D(DI(1}}'({'8'8'='=a'@05ao0F0FTYZ[\fZgThTh+,V9!F)W]J]J]YYdmcm2" 2" $(|#;#;*1$ao8N8N*O*OCE[\]fpv|  CF  FG  FG  FG$BO]9HL$6'4 %S9IJa[_JaJajt  @N  ag  aB  :C  :C  :C %S(2  4R_c  4R  4R  4R  )S  )S  )S)1*4$ ] ] ]+,<ZZh  |B  |]  ^  ^  ^ ]&'[VY'['[\\\] /w??
 #J + 1 1 3 3 A AHD"=00 =00-2E!$'..
B/?@@@@ 44r99",0Dr0I"JK $]%7%7%9%9 : : 	j 	j}44)--dD999$!1  6N  N  N2?2Es2vOlopOpGqGqFqFrFr2sM$//#3  8o  o  o2?2Eeff2MM$//2i2i2i2imD>Q2i2i2iM$//+5(-225e6IJJG   nk   n   nSQ^M_M_   n   nqt  vD  rE  rE   n   n  HX   n   n  cj  c}   n   n  IP  Ia   n   n   n   n  o  o  o$.M  "&*>+?+?+A+A&B&B >Z >ZND()oodA66G!||t<'?'?(.E'
3H'
3H%)NB6&00(-.3.C+(:%-'.%-"'#- &) ) ) !? q= q&'ot'o'oX`'o'o'oppp 0 X9L X&'Vt'V'V'VWWW07BY[_0`0`-#$9:: 11$+0>-2]+0?,1O272G9 9    ). T-4N}?Sf%00Z%-d^^F'2tQ'?'?HLTWXLL5Xe_)=)=x#H#H#H^abefnotfubvbv^w^wD,..;;FHfVZ\cmy{  mA;  B  B  B,1(,,z72S2S,T,TMU]UaUabgUhUhlrUrUr=1HD0P0P  {H  KR  {R  VZ  zZ,0 % 3+1%)%-\\%%@%@&-%)(.'-1A'4k&B    %6dYaYeYefkmsYtYt  }D  KO  Y_  Yg  w}  wK  TZ  m}  %~  %~  %~E&'k4'k'k6'kSYSaCi<<gi'k'klll(///(//555.8IdOO(YYYz:XT:X:XUV:X:X/Y/Y/Y/Y/Y/Y/Y/YY3 16 & K KA"&&q$///1A1A!T1J1J1J1JK3u+?+?!K!K!K !88K L L )"/"@&3&F%*%6	! ! ! %, ^[!M1B66 08LV\Vdtz  uI  !J  !J  !J"#]}G[#]#]^^^$U+++((+;;;&*=+>+>+@+@&A&A X[ X[
d!15rrr*-a1N*O*OKK#37PPP*-b&2O*P*PKK#37rrr*+KK#37SSS*,KK#37SSS*-a1X[\1\*]*]KK*,Kt99{22H"-//$":":&8&>&>)H!%$(*1'.{{4';';+6+.~/B/B/D/D+E+E&/#- &-:* * *  .3 %-48\\\aoax{|a|a|,A0;)-,029+9+@(.+5-" -" -"	 $- !Y1ABUtBUBU^h  tF  Y[  2\  2\  2\ !Y$4U5Li$X$X$X$!)$,[,=fd,K,KM,..;;M6RRR")$"8"8CZadeZeZe,=,Cg,MQV+V+Vk|L03D#>OQ]:^:^0_0_-%<%).5)62C$*& & &F $)V[&:WZa:a)b)bdodsdstxz{d|d|#}#}D,..;;FHeUY[b 6/918/6:Kc:Q/R056;9" 9"l;    1 % 3+2%)%+&-%)(.'5'<3A3J\j\w  O]  Oo  }J  [f  @F  @[  ms  m@  PV  Pa  ou  o~  U[  Um  }C  }M  'N  'N
 
 
 
 %6tZ`hovz  EK  ES  ci  cw  @N  @U  %V  %V  %VE&  (t{  (t  (tD  (t  (t>K`  (t  (tnt  oB  (t  (t  (t  W]  Wh  (t  (t  (t  v|  vE  (t  (t  (t  \b  \j  Lr  LX  LX  pr  (t  (t  u  u  u(///@GUbkqz~33N401>)3(/*15F5L*M2 2 2L.
 35M$/ee(ZZZz:Yd:Y:YVW:Y:Y/Z/Z/Z/Z/Z/Z/Z/ZZ
3+++djmmmmm+]n	,s   +w6 	GK# "w6 #
L+-4L&!w6 &L++L,w6 G `w6 
a$`?9w6 ?aLw6 Iv42w6 4
w>ww6 ww6 6xx__main__u   🔥 FATALER FEHLER:
)y__doc__r   rj   r    r   r0  r   	tracebackr   r   dotenvr   rY   urllib3alertingr   r   configr   r   rp  r	   	executionr
   journalr   market_data_cacher   r   market_universer   rv  r   r   r   rV   r   position_sizingr   restart_stater   riskr   strategyr   r   r   telegram_alertsr   r   r$   r)   CONFIG_FILE	from_filerU   r!   r/  from_configr4   ensure_dirsrd   from_envrA   r[   disable_warnings
exceptionsInsecureRequestWarningr=   rG   max_total_tradesrC  default_leverageDEFAULT_LEVERAGEtrade_size_usdTRADE_SIZE_USDcrash_window_minutesr<  flash_crash_trigger_pctFLASH_CRASH_TRIGGER_PCTatr_sl_multiplierrR  break_even_activation_pctBREAK_EVEN_ACTIVATION_PCTv_shape_activation_pctV_SHAPE_ACTIVATION_PCTv_shape_trail_dist_pctV_SHAPE_TRAIL_DIST_PCTdead_fish_time_limit_minsDEAD_FISH_TIME_LIMIT_MINSmax_hard_stop_pctrS  min_volume_24hMIN_VOLUME_24Hr=  	blacklist	BLACKLISTcooldown_minutesCOOLDOWN_MINUTESr}   r;  r6  r7  baseline_cache_ttl_secondsr   r   rO  rK   rb   re   rm   rt   r   r   r   r   r   rz  __name__r7   ro  
format_excr&   r'   r(   <module>r     s      				              



               8 8 8 8 8 8 8 8 * * * * * * * * 1 1 1 1 1 1 % % % % % % ( ( ( ( ( ( B B B B B B B B - - - - - - P P P P P P P P P P ' ' ' ' ' ' 3 3 3 3 3 3 0 0 0 0 0 0       W W W W W W W W W W D D D D D D D D%o "   %		[	)	)bi)+?@@  ((      .%.00 HGW/FGGG/ / /M M M@B..*N!6$< 0 & @#:#: & @0*NV%&&I.KMGK''F4UVVVNN222  &  
  E E EE E E  3 3 3$    |, |, |,| :))+++   B B BJ@(<	(<(>(>@@AAAAAAAAABs    CG' 'H,HH