o
    g]                     @   s   d dl mZmZmZm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eeZdZejddgddd Zd	d
 Zdd Zdd Zdd Zdd Zeddd Zeddd Zejddgddd Zedkruejddd dS dS )     )Flaskrender_templaterequestjsonifyNz#/var/www/html/flask_project/chains/z/dataPOST)methodsc            /   
   C   s  t  } | dd}t|  | dd }t|}t|d}| dd }t|}t|d}| dd }t|}t|d}| d}| d	d }t|}t|d}| d
d }t|}t|d}| dd }t|}t|d}| dd }	t|	}	t|	d}	| dd }
t|
}
t|
d}
| dd }t|}t|d}| dd }t|}t|d}| dd }t|}t|d}| dd }t|}t|d}| dd }t|}t|d}| d}| d}|dkr)d}| dd }t|}t|dd }| dd }t|}t|dd }| dd }t|}t|d}n6d}| dd }t|}t|dd }| dd }t|}t|dd }| dd }t|}t|d}| d}| d}t| dd}t| dd}t| dd}t| dd}t| dd}tj|d }|d!}t	d" | d# t
| d$ }|d%krt	d& | d# t
| d$ }|d'ks|d(krt	d& | d# t
| d$ }tj|std)d*id+fS tj|d,gd-}|} t| } ||d, | k }||||d.gg}!||||	d/gg}"|
|||d0gg}#|||d1gg}$||||d2gg}%g }&g }'g }(g })g }*z|!D ]}+|&t|+|+d3 ||| q0W n ty\ }, ztd4|,  W Y d },~,nd },~,ww z|"D ]}+|'t|+|+d3 ||| q`W n ty }, ztd5|,  W Y d },~,nd },~,ww z|#D ]}+|(t|+|+d3 ||| qW n ty }, ztd6|,  W Y d },~,nd },~,ww z|$D ]}+|)t|+|+d7 ||| qW n ty }, ztd8|,  W Y d },~,nd },~,ww z|%D ]}+|*t|+|+d3 ||| qW n ty }, ztd9|,  W Y d },~,nd },~,ww t| |&r-t|&jd:d;ng }&|'r;t|'jd:d;ng }'|(rIt|(jd:d;ng }(|)rWt|)jd:d;ng })|*ret|*jd:d;ng }*|d,d<g  }-|-d, jd=|-d,< |-jd:d;}-|&D ]}.|.d, d=|.d,< q|'D ]}.|.d, d=|.d,< q|(D ]}.|.d, d=|.d,< q|)D ]}.|.d, d=|.d,< q|*D ]}.|.d, d=|.d,< qt|&|'|(|)|*|-d>S )?N
primeraVezFbutterfly_strike1z.0   butterfly_strike2butterfly_strike3butterfly_option_typeironCondor_strike1ironCondor_strike2ironCondor_strike3ironCondor_strike4sonar_strike1sonar_strike2sonar_strike3sonar_strike4vertical_strike1vertical_strike2vertical_option_typeCALLPUT
      	date_timesymbolbutterfly_initialValuer   iron_condor_initialValuesonar_initialValuevertical_initialValuemakeka_initialValuez%m-%d-%Y %H:%M:%Sz%Y-%m-%doptionChain__z.csvSPXzoptionChain_$RUTXSPerrorzArchivo no encontradoi  	timestamp)parse_dates	BUTTERFLYzIRON CONDORSONARVERTICALzLONG BUTTERFLY   z"Error en la estrategia Butterfly: z$Error en la estrategia Iron Condor: zError en la estrategia Sonar:    z!Error en la estrategia Vertical: zError en la estrategia Makeka: records)orientunderlying_pricez%H:%M:%S)	butterflyiron_condorsonarverticalmakekar3   )r   get_jsongetprintfloatrounddatetimestrptimestrftimePATH_UBUNTUstrospathexistsr   pdread_csvto_datetimeappendcalcular_butterfly	Exceptioncalcular_iron_condorcalcular_sonarcalcular_verticalcalcular_makekaconcatto_dictdrop_duplicatesdt)/datar   r	   r   r   r   r   r   r   r   r   r   r   r   r   r   r   makeka_option_typemakeka_strike1makeka_strike2makeka_strike3r   r   r   r    r!   r"   r#   date_objformatted_datefilenamedf
start_timebutterfly_strikesiron_condor_strikessonar_strikesvertical_strikesmakeka_strikesbutterfly_dataironCondor_data
sonar_datavertical_datamakeka_datastrikeseunderlying_price_dataitem rl   1/var/www/html/magic8ball.backtestingmarket/app.pyrT      sP  























rT   c              
   C   z  | d }||d  | d d  }|dkrs||d | d k  }||d | d k  }||d | d k  }	d|d |d	   d |jd d d
f< d|d |d	   d |jd d df< d|	d |	d	   d |	jd d df< na|dkr||d | d k  }||d | d k  }||d | d k  }	d|d |d   d |jd d d
f< d|d |d   d |jd d df< d|	d |	d   d |	jd d df< t }
|d |
d< |d j|
d< |d
 j|
d
< |	d j|
d< |
d d |
d
  |
d  |
d< |dkr|
d jd }n	|}||
d jd< ||
d  |
d< | d| d  d| d  d| d  d| d  	|
d< |
S )Nr0   striker   r   r
      d   bid_callask_call	mean_buy1	mean_sell	mean_buy2r   bid_putask_putr*   butterfly_valueT
diferencia [, ] labelisincopylocrF   	DataFramevaluesiloc)rh   r~   r\   r   r   option_typefiltered_dfbuy_df1sell_dfbuy_df2butterfly_valuescredito_inicialrl   rl   rm   rJ      D   &&(&&&

4rJ   c              
   C     ||d  | d d  }||d | d k  }||d | d k  }||d | d k  }||d | d k  }	d|d |d	   d |jd d d
f< d|d |d   d |jd d df< d|d |d	   d |jd d df< d|	d |	d   d |	jd d df< t }
|d |
d< |d
 j|
d
< |d j|
d< |d j|
d< |	d j|
d< |
d
 |
d  |
d  |
d  |
d< |dkr|
d jd }n	|}||
d jd< ||
d  |
d< | d| d  d| d  d| d  d| d  d
|
d< |
S )Nro   r/   r   r
   rp   r0   rq   rr   rs   mean_sell_callrw   rx   mean_sell_putmean_buy_callmean_buy_putr*   iron_condor_valueTrz   r{   r|   ] []r~   r   )rh   r~   r\   r    r   r   sell_call_dfbuy_call_dfsell_put_df
buy_put_dfiron_condor_valuesr   rl   rl   rm   rL     s<   &&&&6rL   c              
   C   r   )Nro   r/   r   r
   rp   r0   rq   rr   rs   r   rw   rx   r   r   r   r*   sonar_valueTrz   r{   r|   r   r   r~   r   )rh   r~   r\   r!   r   r   r   r   r   r   sonar_valuesr   rl   rl   rm   rM   @  s<   &&&&6rM   c                 C   s  | d }||d  | d d  }|dkrT||d | d k  }||d | d k  }d|d |d   d |jd d d	f< d|d |d   d |jd d d
f< nB|dkr||d | d k  }||d | d k  }d|d |d   d |jd d d	f< d|d |d   d |jd d d
f< t }	|d |	d< |d	 j|	d	< |d
 j|	d
< |	d	 |	d
  |	d< |dkr|	d jd }
n	|}
|
|	d jd< |
|	d  |	d< | d| d  d| d  d| d  |	d< | d |	d< | d |	d< |	S )Nrp   ro   r   r   r
   rq   rr   rs   ru   mean_buyr   rw   rx   r*   vertical_valueTrz   r{   r|   r}   r~   sell_strike
buy_striker   )rh   r~   r\   r"   r   r   r   r   buy_dfvertical_valuesr   rl   rl   rm   rN   i  s4   &(&&*rN   c              
   C   rn   )Nr0   ro   r   r   r
   rp   rq   rr   rs   rt   ru   rv   r   rw   rx   r*   makeka_valueTrz   r{   r|   r}   r~   r   )rh   r~   r\   r#   r   r   r   r   r   r   makeka_valuesr   rl   rl   rm   rO     r   rO   /c                   C      t dS )NzindexVer2.htmlr   rl   rl   rl   rm   index     r   z	/tutorialc                   C   r   )Nztutorial.htmlr   rl   rl   rl   rm   tutorial  r   r   z/extract_strikesc            #      C   sn  t j} | dd}td|}|d}d}|dks|dkr d}d	|}t||tjtjB }|rA|	 \}}}	}
t
|||	 nt
d
 d|}t||tjtjB }|r`|	 \}}}}nt
d d|}t||tjtjB }|r|	 \}}}}nt
d d|}t||tjtjB }|r|	 \}}}nt
d |dkrd}t|d }t|d }|}nd}t|d }t|d }|}d|} t| |tj}!|!r|!d}"t
|||	 t
|||| t
|||| t
|| t
||| ti d|d|d|	d|
d|d|d|d|d|d|d |d!|d"|d#|d$|d%|d&||||"|d'S )(Ntext zPrediction for (\w+)r
   r0   r'   r&   r/   z=Butterfly: .*? (\d{{{0}}})/(\d{{{0}}})/(\d{{{0}}}) (PUT|CALL)z-No se encontraron coincidencias de Butterfly.z?Iron Condor: .*?(\d{{{0}}})/(\d{{{0}}})/(\d{{{0}}})/(\d{{{0}}})z/No se encontraron coincidencias de Iron Condor.zASonar: Neutral .*?(\d{{{0}}})/(\d{{{0}}})/(\d{{{0}}})/(\d{{{0}}})z)No se encontraron coincidencias de Sonar.z0Vertical: .*? (\d{{{0}}})/(\d{{{0}}}) (PUT|CALL)z,No se encontraron coincidencias de Vertical.r   r   r   r   zFPrediction for {0} - (\d{{2}}-\d{{2}}-\d{{4}} \d{{2}}:\d{{2}}:\d{{2}})r	   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rV   rW   )rX   rU   r   r   )r   jsonr:   researchgroupformat
IGNORECASEDOTALLgroupsr;   intr   )#rT   r   symbol_matchr   
num_digitsbutterfly_patternbutterfly_matchr	   r   r   r   iron_condor_patterniron_condor_matchr   r   r   r   sonar_patternsonar_matchr   r   r   r   vertical_strike_patternvertical_matchr   r   r   rU   rV   rW   rX   time_pattern
time_matchr   rl   rl   rm   extract_strikes  s   








r   __main__Ti  )debugport)flaskr   r   r   r   pandasrF   r>   rC   timepprintr   __name__apprA   routerT   rJ   rL   rM   rN   rO   r   r   r   runrl   rl   rl   rm   <module>   s4    
 S3)),1


Q