
    bAj                         d 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  G d dee      Z G d	 d
ee      Z G d de      Zedefd       Zy)z5Application configuration from environment variables.    )Enum)	lru_cache)List)Fieldfield_validator)BaseSettingsSettingsConfigDictc                       e Zd ZdZdZdZy)TradingModetestnetpaper
productionN)__name__
__module____qualname__TESTNETPAPER
PRODUCTION     9c:\xampp\htdocs\tradingbinance\backend\app\core\config.pyr   r      s    GEJr   r   c                       e Zd ZdZdZdZy)Environmentdevelopmentstagingr   N)r   r   r   DEVELOPMENTSTAGINGr   r   r   r   r   r      s    KGJr   r   c                   T   e Zd ZU  edddd      ZdZeed<   ej                  Z
eed<   dZeed	<   d
Zeed<    edd      Zeed<   dZeed<   dZeed<   dZeed<   dZeed<   dZeed<   dZeed<   dZeed<   dZeed<   dZeed <   d!Zeed"<   d#Zeed$<   d%Zeed&<   ej<                  Zeed'<   dZ eed(<   g d)Z!e"e   ed*<   d+Z#e$ed,<   d-Z%eed.<   d/Z&e$ed0<   d1Z'e$ed2<   d3Z(eed4<   d5Z)eed6<   d7Z*eed8<   d9Z+eed:<   d;Z,e$ed<<   d=Z-e$ed><   d?Z.e$ed@<   dAZ/e$edB<   d=Z0e$edC<   dDZ1e$edE<   dZ2eedF<   dZ3eedG<   dHZ4eedI<   dZ5eedJ<   dZ6eedK<   dZ7eedL<   dZ8eedM<   dZ9eedN<   dOZ:eedP<   dQZ;eedR<   dSZ<eedT<   dUZ=e$edV<   d5Z>eedW<   dXZ?e$edY<   d!Z@eedZ<   g d[ZAe"e   ed\<   g d]ZBe"e   ed^<   d5ZCeed_<   d`ZDe$eda<   dbZEe$edc<   ddZFeede<   dfZGeedg<   dhZHe$edi<   djZIe$edk<   dlZJe$edm<   dnZKe$edo<   dpZLe$edq<   drZMeeds<   dtZNeedu<   dvZOeedw<   dxZPeedy<    eQd'dz{      eRd|ed}efd~              ZSeTd}efd       ZUy)Settings)z../.envz.envzutf-8Fignore)env_fileenv_file_encodingcase_sensitiveextrazTradingBinance Platformapp_nameenvironmentdebugz/api/v1
api_prefixz2change-this-to-a-random-32-char-minimum-secret-key    )
min_length
secret_key   access_token_expire_minutes   refresh_token_expire_dayszBpostgresql+asyncpg://trading:trading@localhost:5432/tradingbinancedatabase_urlz:postgresql://trading:trading@localhost:5432/tradingbinancedatabase_url_synczredis://localhost:6379/0	redis_urlzredis://localhost:6379/1celery_broker_urlzredis://localhost:6379/2celery_result_backend binance_api_keybinance_api_secretTbinance_testnetzhttps://testnet.binance.visionbinance_base_urlzwss://testnet.binance.vision/wsbinance_ws_urltrading_modeallow_production_trading)BTCUSDTETHUSDTBNBUSDTdefault_symbolsg     @paper_initial_capital15mevaluation_intervalg      ?max_risk_per_trade_pctg      @max_daily_loss_pct
   max_trades_per_day   max_consecutive_lossesK   min_confidence_buy(   ensemble_sell_thresholdg      ?	kelly_capg?max_spread_pctg      ?high_volatility_thresholdg333333?min_relative_volumebacktest_commission_pctg?backtest_slippage_pctmin_paper_trading_days	smtp_hostiK  	smtp_port	smtp_usersmtp_password	smtp_fromtelegram_bot_tokentelegram_chat_idd   api_rate_limit_per_minuteZ   retention_1m_daysi  retention_1h_daysg      @max_aggregate_risk_pctmax_open_positionsg?max_correlationsymbol_scanner_enabled)r=   r>   SOLUSDTr?   XRPUSDTENSUSDTTRXUSDTsymbol_scanner_core_symbols)DOGEUSDTNEARUSDTADAUSDTSUIUSDTAAVEUSDTAVAXUSDTLINKUSDTWLDUSDTENAUSDTARBUSDTPEPEUSDTTONUSDTsymbol_scanner_rotation_poolsymbol_scanner_rotation_slotsi $symbol_scanner_min_quote_volume_usdtg      .@!symbol_scanner_max_abs_change_pct   symbol_scanner_interval_hours2   go_no_go_min_tradesg      ?go_no_go_min_sharpeg      $@go_no_go_max_drawdowng?go_no_go_min_profit_factorg      Y@canary_capital_usdtg      @flash_crash_threshold_pct<   ws_max_disconnect_secondsi  binance_recv_windowUTCcanonical_timezoner   daily_reset_hour_utcbefore)modevreturnc                 \    t        |t              r|S t        |j                               }|S N)
isinstancer   lower)clsr   r   s      r   validate_trading_modezSettings.validate_trading_mode   s(     a%H1779%r   c                 Z    | j                   t        j                  k(  xr | j                   S r   )r;   r   r   r8   )selfs    r   is_live_tradingzSettings.is_live_trading   s'      K$:$::W4CWCW?WWr   N)Vr   r   r   r	   model_configr%   str__annotations__r   r   r&   r'   boolr(   r   r+   r-   intr/   r0   r1   r2   r3   r4   r6   r7   r8   r9   r:   r   r   r;   r<   r@   r   rA   floatrC   rD   rE   rG   rI   rK   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r]   r_   r`   ra   rb   rc   rd   ri   rv   rw   rx   ry   r{   r}   r~   r   r   r   r   r   r   r   r   r   classmethodr   propertyr   r   r   r   r   r      sj   %$!	L .Hc-*66K6E4JP]_`J`'))%&s& ]L#\YsY 0Is/7s7!;3; OS   OT <c<;NC; !, 3 3L+3%*d*!BOT#YB#*5*$$ %)E( ##  "#C#  #%S%IuNE'*u*!$$ &)U(#'5'"$C$ IsIsIsM3Is  c &)s(  s s  %(E' OU  $(D'.c / $s)  *+!3*2<(%</3%u3)*!3*  "!!$$#'5'(++ "'& (+u*%'s'  $# $# !#!^(3c k   4 X X Xr   r   r   c                      t               S r   )r   r   r   r   get_settingsr      s
    :r   N)__doc__enumr   	functoolsr   typingr   pydanticr   r   pydantic_settingsr   r	   r   r   r   r   r   r   r   r   <module>r      s_    ;    + >#t #t zX| zXz h  r   