o
    $»jŒ	  ã                   @   sd  d 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m	Z	 ee
ƒ ¡ jZedƒZe	dƒZdd	„ Zed
kr°e ¡ ZdZee d¡ƒD ]_Ze e ed¡¡Zed Zed e Zejddd� ed D ]*Zee› d� Ze ¡ rvqhee e› d� Z e  ¡ s„qhe !e "ee ƒ¡¡ ed7 Zqhe#e› de› de ¡ e d›d�dd� qHe#ddd� dS dS )a¤  
build_flows.py -- [2026-09-28] Per-minute buy / sell volume for every stock-day in the
22-day set, from the tick cache (each trade labeled against the latest quote, <= 2 s old:
at/above ask = buy, at/below bid = sell, else vs the midpoint; no fresh quote -> tick rule).
Saves flow/<date>/<SYM>.json = {"buy": [390], "sell": [390], "other": [390]} (9:30 = index 0).
Skips files already built, so it can be rerun safely.
é    N)Údatetime)ÚPath)ÚZoneInfoz./var/www/screener/trade/data/simulations/cachezAmerica/New_Yorkc                 C   sÈ  dgd dgd dgd }}}d }d\}}t | ƒ�»}|D ]°}t |¡\}	}
}}t |	¡}|
dkr8|||f}q||}}d}|r‚||d   ¡ dkr‚|d dkr‚|d |d kr‚|d |d }}|| d }||krndn||krtdn||krzdn||k r€dnd}|dkr˜|d ur˜||kr�dn||k r–dn|}||}}| t¡}|jd	 d
 |j	 d }d|  kr¸dk rÎn q|dkrÀ|n|dk rÆ|n||  |7  < qW d   ƒ n1 sÙw   Y  |||dœS )Ng        i†  )Nr   Úquoter   é   é   éÿÿÿÿé	   é<   é   )ÚbuyÚsellÚother)
ÚopenÚjsonÚloadsr   ÚfromisoformatÚtotal_secondsÚ
astimezoneÚETÚhourÚminute)Úpathr   r   r   ÚqÚlast_pÚ	last_sideÚfÚlineÚtsÚkindÚaÚbÚtÚpÚsizeÚsideÚbidÚaskÚmidÚteÚm© r+   ú:/var/www/screener/trade/reports/open_window/build_flows.pyÚflows   s6   "



44

(€îÿr-   Ú__main__zbars/bars_2026-*.json.gzÚrtÚdateÚflowT)ÚparentsÚexist_okÚtop30_currentz.jsonz.jsonlr   z done (z files, z.0fzs))ÚflushÚ
FLOWS_DONE)$Ú__doc__Úgzipr   ÚsysÚtimer   Úpathlibr   Úzoneinfor   Ú__file__ÚresolveÚparentÚHEREÚCACHEr   r-   Ú__name__Út0ÚnÚsortedÚglobr#   Úloadr   ÚdÚdayÚoutÚmkdirÚsr   ÚexistsÚsrcÚ
write_textÚdumpsÚprintr+   r+   r+   r,   Ú<module>   s@    
*î