
    =j[                        d 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mZmZmZmZmZmZmZ  G d d	e
      Z G d
 de
      Z G d de
      Z G d de
      Z G d de
      Z G d de
      Z G d de
      Z G d de
      Z G d de
      Z G d de
      Z G d de
      Z  G d de
      Z! G d  d!e
      Z" G d" d#e
      Z# G d$ d%e
      Z$ G d& d'e
      Z%y())z$Pydantic schemas for API validation.    )datetime)Decimal)AnyOptional)UUID)	BaseModelFieldfield_validator)CandleInterval	OrderSideOrderStatusPositionStatus	RiskLevelSignalActionTradingModeUserRolec                   0    e Zd ZU eed<   eed<   dZeed<   y)Tokenaccess_tokenrefresh_tokenbearer
token_typeN)__name__
__module____qualname__str__annotations__r        >C:\xampp\htdocs\tradingbinance\backend\app\schemas\__init__.pyr   r      s    Jr   r   c                   ,    e Zd ZU eed<   eed<   eed<   y)TokenPayloadsubroletypeN)r   r   r   r   r   r   r   r   r    r"   r"      s    	H
N
Ir   r"   c                   j    e Zd ZU  edd      Zeed<    ed      Zeed<   ej                  Z
eed<   y	)

UserCreate      
min_length
max_lengthemail   )r+   passwordr$   N)r   r   r   r	   r-   r   r   r/   r   VIEWERr$   r   r   r    r'   r'   #   s0    !4E34Q'Hc'__D($r   r'   c                   6    e Zd ZU  edd      Zeed<   eed<   y)	UserLoginr(   r)   r*   r-   r/   N)r   r   r   r	   r-   r   r   r   r   r    r2   r2   )   s    !4E34Mr   r2   c                   R    e Zd ZU eed<   eed<   eed<   eed<   eed<   eed<   ddiZ	y	)
UserResponseidr-   r$   	is_activetotp_enabled
created_atfrom_attributesTN)
r   r   r   r   r   r   r   boolr   model_configr   r   r    r4   r4   .   s,    HJ
NO%t,Lr   r4   c                       e Zd ZU eed<   eed<   eed<   eed<   eed<   eed<   e	ed<   e
e	   ed<   e
e	   ed	<   eed
<   eed<   eed<   e
e   ed<   eed<   y)SignalResponser5   symbolstrategy_nameaction
confidence
risk_levelsuggested_size	stop_losstake_profitsupporting_indicatorscontradicting_indicatorsmathematical_reasonensemble_scorer8   N)r   r   r   r   r   r   r   intr   r   r   dictr   r   r   r    r=   r=   :   sa    HKO  '""""SM!r   r=   c                       e Zd ZU eed<   eed<   eed<   eed<   eed<   e	ed<   e
e	   ed<   e
e	   ed<   e
e	   ed	<   e
e	   ed
<   eed<   e
e   ed<   ddiZy)OrderResponser5   r>   sidestatustrading_modequantitypricefilled_pricerD   rE   r8   	filled_atr9   TN)r   r   r   r   r   r   r   r   r   r   r   r   r;   r   r   r    rM   rM   K   sj    HK
OG7##  '""!!%t,Lr   rM   c                       e Zd ZU eed<   eed<   eed<   eed<   eed<   eed<   eed<   eed<   eed	<   eed
<   e	e   ed<   y)PositionResponser5   r>   rO   entry_pricerQ   rD   rE   unrealized_pnlrealized_pnl	opened_at	closed_atN)
r   r   r   r   r   r   r   r   r   r   r   r   r    rV   rV   \   sG    HK!!r   rV   c                       e Zd ZU eed<   eed<   eed<   eed<   eed<   eed<   eed<   eed<   ee   ed	<   ee   ed
<   eed<   eed<   ee	   ed<   y)DashboardStatsrP   emergency_stopcapital	daily_pnldaily_pnl_pct	total_pnlopen_positionstrades_todaywin_ratemax_drawdownbinance_connected	is_lockedlock_reasonN)
r   r   r   r   r   r:   r   rJ   r   r   r   r   r    r]   r]   j   s]    w7##O#r   r]   c                   ,   e Zd ZU  eddd      Zee   ed<    eddd      Zee   ed<    edd	d
      Z	ee
   ed<    eddd      Zee
   ed<    eddd      Zee
   ed<    eddd
      Zee
   ed<    eddd      Zee   ed<   dZee   ed<   y)RiskConfigUpdateNg      ?g      ?)gelemax_risk_per_trade_pctg       @g      @max_daily_loss_pct   2   max_trades_per_day      max_consecutive_losses<   Z   min_confidence_buy   ensemble_sell_thresholdg?	kelly_captrailing_stop_enabled)r   r   r   r	   rn   r   r   r   ro   rr   rJ   ru   rx   rz   r{   r|   r:   r   r   r    rk   rk   z   s    05dss0KHW-K,1$33,G)G(-dqR(@@,1$1,CHSMC(-drb(AA-24B2-FXc]F#(###>Ix >,08D>0r   rk   c                   :    e Zd ZU eed<   eed<   i Zeeef   ed<   y)StrategyConfigUpdatestrategy_type
is_enabled
parametersN)	r   r   r   r   r   r:   r   rK   r   r   r   r    r~   r~      s     !#JS#X#r   r~   c                       e Zd ZU eed<   eed<   eed<   eed<   eed<    ed      Zeed<    e	d      e
ded	efd
              Zy)BacktestRequestr   r>   interval
start_dateend_date10000initial_capitalvreturnc                 \    d|j                   v r||j                   d   k  rt        d      |S )Nr   z!end_date must be after start_date)data
ValueError)clsr   infos      r    end_after_startzBacktestRequest.end_after_start   s1     499$dii.E)E@AAr   N)r   r   r   r   r   r   r   r   r   r
   classmethodr   r   r   r    r   r      s[    K&w/OW/Z  8   !r   r   c                       e Zd ZU eed<   eed<   eed<   ee   ed<   ee   ed<   ee   ed<   ee   ed<   ee   ed<   ee   ed	<   ee   ed
<   ee   ed<   eed<   e	ed<   y)BacktestResultr5   r?   r>   total_return_pctrf   sharpe_ratiosortino_ratiore   profit_factorbuy_hold_returnbeats_buy_holdrO   r8   N)
r   r   r   r   r   r   r   r   r:   r   r   r   r    r   r      st    HKw''7##7##G$$wG$$g&&TN"Kr   r   c                   &    e Zd ZU eed<   dZeed<   y)EmergencyStopRequestactivezManual emergency stopreasonN)r   r   r   r:   r   r   r   r   r   r    r   r      s    L)FC)r   r   c                   J    e Zd ZU eed<   eed<   eed<   eed<   eeef   ed<   y)IndicatorSnapshotr>   r   	timestamprR   
indicatorsN)	r   r   r   r   r   r   r   rK   r   r   r   r    r   r      s%    KMNS#Xr   r   c                   J    e Zd ZU eed<   eed<   eed<   eed<   eed<   eed<   y)HealthResponserO   databaseredisbinancerP   r^   N)r   r   r   r   r   r:   r   r   r   r    r   r      s"    KNKMr   r   N)&__doc__r   decimalr   typingr   r   uuidr   pydanticr   r	   r
   
app.modelsr   r   r   r   r   r   r   r   r   r"   r'   r2   r4   r=   rM   rV   r]   rk   r~   r   r   r   r   r   r   r   r    <module>r      s    *      6 6	 	 	I 9 % %	 
-9 -Y "-I -""y "Y  1y 1$9 $i  Y  *9 *
	 Y r   