o
    _!i                     @   s   d dl mZmZmZ d dlmZ d dlZd dlZede	Z
edZh dZg dZedZd	d
 Ze
jddgddd ZdS )    )	Blueprintjsonifycurrent_app)PathNtop_horarios_multiz,/var/www/html/backtestingmarket/top_horarios>   RUTSPXXSP)consinteagreultrz^resultados_backtesting_(?P<risk>cons|inte|agre|ultr)_(?P<sym>SPX|RUT|XSP)_(?P<from>\d{4}-\d{2}-\d{2})_(?P<to>\d{4}-\d{2}-\d{2})_Vertical\.csv$c                 C   s*   t | d }t | d }|dd|dS )Nd   02d:)int)hhmmhhmm r   5/var/www/html/backtestingmarket/top_horarios_multi.pyhhmm_to_str   s   r   z/api/top-verticalGET)methodsc                  C   s  zi } i }t  D ]:}| sq	t|j}|sq	|d}|tvr#q	|d}|d|d}}|| |i |< ||||f q	| sPt	ddddfW S i }| 
 D ]v\}}	i ||< tD ]k}
g }|	|
}|sr||| |
< q`z;t|}d	d
h|jst	d|j dddfW     W S |jd
ddd}dd | D }||| |
< W q` ty } ztj| g || |
< W Y d}~q`d}~ww qVdd |
 D }t	dt| dd d||dW S  ty } ztj| t	dt|ddfW  Y d}~S d}~ww )a:  
    Respuesta:
    {
      ok: true,
      symbols: ["SPX","RUT","XSP"],
      from_to: { "SPX": {"from":"YYYY-MM-DD","to":"YYYY-MM-DD"}, ... },
      data: {
        "SPX": { "cons":[{hora,profit}, x3], "inte":[...], "agre":[...], "ultr":[...] },
        "RUT": { ... },
        "XSP": { ... }
      }
    }
    symriskfromtoFu    No se encontraron CSVs válidos.)okerrori  horaprofitz$ requiere columnas 'hora' y 'profit'i  )	ascending   c                 S   s*   g | ]\}}t |d  t|d dqS )r    r!   )r    r!   )r   float).0_rr   r   r   
<listcomp>R   s   * z$api_top_vertical.<locals>.<listcomp>Nc                 S   s    i | ]\}\}}|||d qS ))r   r   r   )r%   r   ftr   r   r   
<dictcomp>Y   s     z$api_top_vertical.<locals>.<dictcomp>Tc                 S   s   | dv rg d | S dS )N)r   r   r	   i  )index)sr   r   r   <lambda>]   s    z"api_top_vertical.<locals>.<lambda>)key)r   symbolsfrom_todatai  )DATA_DIRiterdiris_fileFILENAME_REmatchnamegroupALLOWED_SYMBOLS
setdefaultr   items
RISK_ORDERgetpdread_csvissubsetcolumnssort_valuesheaditerrows	Exceptionr   logger	exceptionsortedkeysstr)sym_to_risk_pathssym_from_topmr   r   f_datet_dateout_data
risk_pathsrkrowspathdftop3er1   r   r   r   api_top_vertical   sh   



&
"rZ   )flaskr   r   r   pathlibr   pandasr?   re__name__bpr3   r:   r=   compiler6   r   routerZ   r   r   r   r   <module>   s   
	