o
    U~h{                     @   s  d dl Zd dlZd dlZd dlZd dlm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mZ d dlmZ dd Zd	d
 Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Z d"d# Z!d$d% Z"d&d' Z#dS )(    N)datetime)PATH_UBUNTU)jsonify)MIMEText)MIMEMultipartc                 C   sH   dddddd}t ||   }tj|dtd}|j }|dd d	 }|S )
NIBData0940NoResults.csvIBData1030NoResults.csvIBData1100NoResults.csvIBData1130NoResults.csvIBData0932NoResults.csv12345r   )headerdtype   )r   pdread_csvstrcolumnstolist)estrategiaNumberestrategia_archivo_maparchivo_csvdfdfListasolo_Fechas r    +/var/www/html/spxbutterflies/funcionesV2.pyobtener_Dias   s   
r"   c                 C   s  dddddd}t ||  }d}| dd	} tj|d
d}|j }|dd d }| |v r2|| }|jd d |f  }	|jd |	||d f }
|
jd | }|
jd d df 	dd |
jd d df< ||
jd d df  |
d< |
jd d df | |
d< |
jd d df d |
d< |
S )Nr   r   r	   r
   r   r   r   -/F
low_memoryr   r      c                 S      t | dkr
d|  S | S N   0lenxr    r    r!   <lambda>;       z"listaParaGrafico.<locals>.<lambda>r(   P/LP/L%   d   zVIX%)
r   replacer   r   r   r   indexiloccountapply)	fecha_strr   offsetr   r   indice_fecha_especificar   r   r   cantidad_filasonlyDF	elprimeror    r    r!   listaParaGrafico#   s4   



rB   c                 C   s  g }ddddddddddd	dd
dddddd}| |}t|d  }	|d }
tj|	dd}|j }|dd d }d}|D ]}|jd d |f  }|jd|||d f }tj	t
|d   }t|}|jd | }||jd d df  |d< |jd d df | |d< t| |||
||\}}}}}}}}dt|| d}||||||||||dd|g}|| |d7 }qC|S )Nr   09:40:00r   HoraComienzor   10:30:00r	   11:00:00r
   11:30:00r   09:31:00IBData0933NoResults.csv)r   r   r   r   r   6r   rE   Fr%   r   r   r5   %m/%d/%Yr'   r(   r3   r4   $ .2f )getr   r   r   r   r   r9   r:   calendarday_namer   strptimedateweekdayverificarFeriadosgoodOrBadDayfloatappend)tpsl	contractsr   r=   dollarOrPercdataestrategia_info
estrategiar   rE   r   r   r   columna_indicefechar?   r@   	diaSemanaholidayrA   TPTimeSLTime	BadOrGoodcredito	TPMinutes	SLMinutesProfitOrLossNoContractsocurrenciasProfitOrLossnuevos_datosr    r    r!   obtener_DatosC   sJ   
	



ro   c                 C   s4  |dkrdnd}| |9 } ||9 }|dkr"|j d d df | k }n|j d d df | k }|j |df }|dkrH|j d d df |k  }	n|j d d df |k  }	|j |	df }
tt|j d d	| }d
t|d}|	dkrvd}	|dkr|d}|dkr|j d d df | k }|j ||	df | k }n|j d d df | k }|j ||	df | k }t|d t| }t||}t|
|}||	k rd}|dkr||  }n| }nd}|dkr|| }n|}|	dkrd}d}
|dkr||  }n| }|dkrd}d}|dkr|| }n|}||
||||||fS )NDr6   r(   Pr   r5   r   r'      rM   rN   ?B r$   GOODBADr#   )r9   idxmaxroundrX   sumr   calcular_diferencia_horas)
takeProfitstopLossonlydf1rE   r]   r=   
multiplierfila_indiceTPHoraTPfila_indiceSLHoraSLrh   credito_formattedcountMayorATakeProfitcountParcialATakeProfiftoccurrenciasri   rj   rg   rm   r    r    r!   rW   p   sj   







rW   c                 C   sT   t | d}t |d}|| }|jd }|jd d }d||}|dkr(d}|S )Nz%H:%M:%Si  <   z{:02d}:{:02d}z00:00r#   )r   rS   secondsformat)	hora1_str	hora2_strhora1hora2
diferenciadiferencia_horasdiferencia_minutosdiferencia_strr    r    r!   ry      s   
ry   c                 C   sX   t d }tj|d d}t|d |d< |d | k}| r*|j|df jd }|S dS )Nholidays.csvr   r   r(   zNo News)r   r   r   to_datetimeanylocvalues)fecha_verificarr   df1maskvalor_columna_2r    r    r!   rV      s   rV   c           	      C   s  d}t  }|d}d}| dkrt| d | d }| dkr)t| d | d }| d	kr7t| d
 | d }| dkrEt| d | d }| dkrSt| d | d }| dkrat| d | d }| dkrot| d | d }| dkr}t| d | d }tj|dd d}tj|dd d}|d jdd  |d< |jd t| }|jd d df 	dd |jd d df< ||jd d df  |d< |jd d df | |d< ||fS )N	Intraday_z%Y-%m-%drO   r   IB0940_z.csvr   IB1030_r   IB1100_r   IB1130_r   IB0932_rK   7IC0932_8IC1030_r(   )skiprowsr   )nrowsr   r   r'   c                 S   r)   r*   r-   r/   r    r    r!   r1     r2   z(listaParaGraficoDiario.<locals>.<lambda>r3   r   r4   )
r   nowstrftimer   r   r   r   r9   rX   r;   )	r   r=   preNombreArchivofecha_actualpostNombreArchivor   dfDatos
dfCabecerarA   r    r    r!   listaParaGraficoDiario   s<   
r   c           $      C   s   t |d | |||	|
|\}}}}t |d ||||	|
|\}}}}t |d ||||	|
|\}}}}t |d ||||	|
|\}}}}td }|
dkrTtj|ddtdd	}ntj|ddd
}|j }|dd d } g }!td }| D ]}"t|"}#|!|# qp| |!||||||||||||||||fS )Nr   r(   rr   r5   r
   trueFr6   )r   r&   usecols)r   r&   r   r   )	listaComparativaPorEstrategiar   r   r   ranger   r   rV   rY   )$takeProfit1takeProfit2takeProfit3takeProfit4	stopLoss1	stopLoss2	stopLoss3	stopLoss4r=   r\   miniComparativeIBListdollarOrPercenlistaParcial1listaCreditos1TPMinutesParcial1profitOrLoss1listaParcial2listaCreditos2TPMinutesParcial2profitOrLoss2listaParcial3listaCreditos3TPMinutesParcial3profitOrLoss3listaParcial4listaCreditos4TPMinutesParcial4profitOrLoss4r   r   r   listaFechas	listaNewsrb   rd   r    r    r!   listaComparativa  s0   
(r   c                 C   s  ddddddddddd	dd
ddd}| | }t|d  }	|d }
|dkr5tj|	dtdd}ntj|	dd}g }g }g }|j }|dd d }|jddd df | t	 }d}|D ]}|jd d |f 
 }|jd|||d f }|jd | }||jd d df  |d< |jd d df | |d< |d7 }|dkr|j|d |k  }n|j|d |k  }t|rd}|dkr|j|d |k   }n|j|d |k   }t|rd}||k r|d |j|df }t||
}|| |dkr|t| | }n|| }|d| qc|d |d  |dkr4|t| | }n|| }|d| qc||||fS )!Nr   rC   rD   r   rF   r	   rG   r
   rH   r   rI   r   r   rE   r   Fr6   )r&   r   r%   r   r   r(   r5   r'   r3   r4   rq   i Gz{:.2f}BrO   )rP   r   r   r   r   r   r   r9   astypeintr:   r8   minnpisnanrY   ry   rX   r   )r   rz   r{   r=   r\   r   r   r_   r`   r   rE   r   listaparcialTPMinutesParcialprofitOrLossParcialr   r   creditoParcialra   rb   r?   r@   rA   indice_fila_TPindice_fila_SLr   ri   profitOrLossr    r    r!   r   +  sh   
	
"









r   c                 C   \  |dkrdnd}| |9 } ||9 }|dkr"|j d d df | k }n|j d d df | k }|dkrA|j d d df |k  }n|j d d df |k  }tt|j d d| }|d	kr`d
}|d	krfd
}||k rxd}	|dkru||  }
n| }
nd}	|dkr|| }
n|}
|d
krd}	|dkr||  }
n| }
|d
krd}	|dkr|| }
|
|	fS |}
|
|	fS Nrp   r(   g{Gz?rq   r   r5   r'   rr   r   rs   rt   ru   r9   rv   rw   rX   rz   r{   r@   r=   r]   r}   r~   r   rh   	goodOrBadrm   r    r    r!   	getTotals  F   


r   c           /      C   s  ddddddddd	d
d
}t ||   }	g }
|dkr"g d}g d}ng d}g d}t d }tj|d d}|jd d df  }tj|	dd}|j }|dd d }|}|}t|d}t|d}d}d}|D ]}|D ]}d}d}d}d}d}g } |D ]}!t|!d}"|"|kr|"|kr|s|s|!|vr|jd d |f  }#|jd|#||d f }$|$jd | }%|%|kr|%|k r|%|$jd d df  |$d< |$jd d df |% |$d< t	|||$||\}&}'|'dkr|d }||& }n|d }||& }| 
|&|  |d7 }q}|dkr;d}(|| })||) }*||) }+|dkr|| },|dkr(t|| }-|,|- }.|.|* |+ }(|

|||(f qm|

||t| f qmqi|
S ) Nr   r   r	   r
   r   rJ   zICData0932NoResults.csvzICData1030NoResults.csvzICData0933NoResults.csvzICData1031NoResults.csv)
r   r   r   r   r   rK   r   r   910rq   )      r+      	   
                              )iir   iiiiiiiiiii)(   r   P   r6   x                     i  i  i,  i@  )iiiii~ijiViBi.iiiiiir   r   r   Fr%   r   rL   rs   r5   r'   r(   r3   r4   rt   EV)r   r   r   r9   r   r   r   rS   r:   r   rY   absrx   )/r`   r]   newsDays	resultsInr\   r=   	sinceDate	untilDater   r   resultsListlistaTPlistaSLarchivo_holidaysr   lista_de_fechasr   r   r   fecha_begin	fecha_endfecha_begin_objfecha_end_objrangoCreditoDesderangoCreditoHastatp1sl1
totalGOODs	totalBADssumGOODssumBADsra   dataIBrb   	fecha_objr?   r@   rA   r   r   expectationValue	totalDaysaciertosPercenterroresPercent
mediaGOODs	mediaBADsratior    r    r!   obtenerBestPair  s   









4r!  c                 C   r   r   r   r   r    r    r!   r   x  r   c                  C   sl   d} zt | }W n ty   tddi Y S w tj| }t|	d}|j
dd}||d}t|S )Nz+/var/www/html/spxbutterflies/resultados.csverrorzArchivo CSV no encontradorL   records)orient)fecha_creaciondatos)r   r   FileNotFoundErrorr   ospathgetctimer   fromtimestampr   to_dict)r   r   r%  fecha_formateadar&  r    r    r!   obtener_datos_best_pair  s   
r.  c                 C   sb   t  d}| |g}d}t|ddd}t|}|| W d    d S 1 s*w   Y  d S )Nz%Y-%m-%d %H:%M:%Sz5/var/www/html/spxbutterflies/static/data/ingresos.csvarO   newline)r   r   r   opencsvwriterwriterow)user_id	timestamplog_datar   csvfile
csv_writerr    r    r!   registrar_log  s   
"r;  c                 C   s   d}d}d}d}t d d}	d}
|}t }|	 d|
 d|d	< ||d
< | |d< |dkr0d| }|dkr<d| d| }| d| }|t|d t||}|  ||| ||
||	  W d    d S 1 spw   Y  d S )Nsmtp.titan.emailK  info@spxbutterflies.comDaleriver11$szSENDING EMAIL...zSPX Butterflies <>FromToSubjectResetPasswordz0https://spxbutterflies.com/reset_password?token=	FreeTrialz0https://spxbutterflies.com/validate_email?token=z
&username=
plain)
printr   attachr   smtplibSMTPstarttlsloginsendmail	as_string)subjectbodyusernametoken	tipoEmailemail_server
email_portemail_usernameemail_passwordsender_namesender_emailreceiver_emailmessagereset_password_linkbody_with_linkserverr    r    r!   send_email_  s.   
"ra  c                 C   s   d}d}d}d}|d | }	|}
|}t  }|	 d|
 d|d< ||d	< | |d
< |t|d t||}|  ||| ||
||  W d    d S 1 sTw   Y  d S )Nr<  r=  r>  r?   r@  rA  rB  rC  rD  rH  )	r   rJ  r   rK  rL  rM  rN  rO  rP  )rQ  	firstNamelastNamereceiptEmailrR  rV  rW  rX  rY  rZ  r[  r\  r]  r`  r    r    r!   send_email_general  s"   "rf  c                  C   sV   t d } t| ddd}t|}t|}W d    t|S 1 s"w   Y  t|S )Nz/alerts/alerts.csvrrO   r0  )r   r2  r3  
DictReaderlistr   )r   file
csv_readercsv_datar    r    r!   get_alert_data  s   


rm  )$numpyr   r(  r3  secretsr   rQ   pprinttimepandasr   ubuntuFilesr   flaskr   rK  email.mime.textr   email.mime.multipartr   r"   rB   ro   rW   ry   rV   r   r   r   r   r!  r.  r;  ra  rf  rm  r    r    r    r!   <module>   s@     -Q% .9g9
#