
    9jr                     |    d Z ddlZddlZddlZddlZddlmZmZ g dZg dZdddd	d
dZ	dZ
d Zedk(  r e        yy)u  
Batch optimizer: runs auto_optimize_loop.py on all non-BTC crypto assets across all timeframes.

Usage:
    python3 run_alt_crypto.py                          # use auto_optimize_loop.py default (3 iters × 50M)
    python3 run_alt_crypto.py --hours 15               # 15h total ÷ 15 combos = 1h each
    python3 run_alt_crypto.py --hours 6 --tfs 1D 12H   # 6h total ÷ 6 combos (3 assets × 2 TFs) = 1h each
    python3 run_alt_crypto.py --hours 10 --assets COINBASE_ETHUSD BINANCE_SOLUSD
    N)datetime	timedelta)COINBASE_ETHUSDBINANCE_SOLUSDBINANCE_LINKUSD)4H6H8H12H1D240360480720r   u  
examples:
  python3 run_alt_crypto.py --hours 15
      15h total ÷ 15 combos (3 assets × 5 TFs) = 1h each

  python3 run_alt_crypto.py --hours 6 --tfs 1D 12H
      6h total ÷ 6 combos (3 assets × 2 TFs) = 1h each

  python3 run_alt_crypto.py --hours 10 --assets COINBASE_ETHUSD BINANCE_SOLUSD
      10h total ÷ 10 combos (2 assets × 5 TFs) = 1h each

  python3 run_alt_crypto.py --hours 4 --assets BINANCE_SOLUSD --tfs 1D 12H 8H
      4h total ÷ 3 combos = 1.33h each
c                     t        j                  dt        t         j                        } | j	                  dt
        d d       | j	                  ddd dd	
       | j	                  ddd dd
       | j	                  dt        dddgd       | j                         }|j                  r(|j                  D cg c]  }|j                          c}nt        }|j                  r(|j                  D cg c]  }|j                          c}nt        }|D cg c])  }|D ]"  }||d| dt        j                  ||       df$ + }}}t        |      }|j                   |j                   |z  }	t#        j$                         t'        |j                         z   }
t)        d|j                    d| d|	dd       t)        ddj+                  |              t)        ddj+                  |              t)        d|
j-                  d              nKd }	t)        d | d!       t)        ddj+                  |              t)        ddj+                  |              t)        d"t#        j$                         j-                  d       d#       t/        |d$      D ]  \  }\  }}}| d%| }|	|	dd&nd'}t)        d#d(        t)        d)| d*| d+| d,| d-	       t)        d.t#        j$                         j-                  d/              t)        d(        t0        j2                  d0d1|d|j4                  g}|	|dt        |	      gz  }t7        j6                         }t9        j:                  |      }t7        j6                         |z
  }|j<                  d2k(  rd3nd4|j<                   }t)        d5| d*| d+| d6|d7z  d8d9| d:       ||z
  }|d2kD  s:|	Ft#        j$                         t'        ||	z        z   }
t)        d;| d<|
j-                  d/              t)        d;| d=        t)        d#d(        t)        d>t#        j$                         j-                  d              y c c}w c c}w c c}}w )?Nz@Batch optimizer for non-BTC crypto assets across all timeframes.)descriptionepilogformatter_classz--hoursz]Total hour budget divided evenly across all combos. E.g. --hours 15 with 15 combos = 1h each.)typedefaulthelpz--assets*ASSETzTAssets to run (default: all 3 non-BTC). E.g. --assets COINBASE_ETHUSD BINANCE_SOLUSD)nargsr   metavarr   z--tfsTFz8Timeframes to run (default: all 5). E.g. --tfs 1D 12H 8Hz--searchrandomoptunazASearch strategy: 'random' (default) or 'optuna' (biased sampling))r   r   choicesr   z	data/mlp/z, z.csv)hourszTotal budget: u   h  ÷  z
 combos = z.2fzh eachzAssets: zTimeframes: zEstimated completion: z%Y-%m-%d %H:%M:%SzRunning u     combos × default duration eachzStarted at: 
   -hr   z<============================================================[/z] z  ()z  Started: z%H:%M:%Sztools/auto_optimize_loop.pyz--datar   OKzEXIT z
[z finished in <   z.1fzm  []z  Remaining: z combos, ETA z comboszAll done. Finished at: )argparseArgumentParserEXAMPLESRawDescriptionHelpFormatteradd_argumentfloatstr
parse_argsassetsupper
ALT_ASSETStfs
TIMEFRAMES
_TF_TO_MINgetlenr    r   nowr   printjoinstrftime	enumeratesys
executablesearchtime
subprocessrun
returncode)parserargsar3   tfr6   assetcombostotalhours_per_comboetai	data_pathlabelper_combo_labelcmdstartresultelapsedstatus	remainings                        9/Users/jameslopez/projects/TradingBot25/run_alt_crypto.pymainr[   +   sZ   $$V <<F
 	tI  J 
#tWL  M sD$4  5 
hS[H\`  bD15-Aaggi-*F-1XX
)"288:
):CZ`oZ`QVknegubIeWBz~~b"/E.FdKLknLZ`FoKEzz**u,llnytzz::tzzl'%
?SVBWW]^_6*+,-TYYs^,-.&s||4G'H&IJK?@A6*+,-TYYs^,-.	L001DEFb
IJ%.vq%9!!E2y'2$7F7R_S13Xa6(m!AeWBugS(9;<HLLN33J?@AB~~<h	4;;(&Is?344C		$))+%**a/uV=N=N<O5PA3awb}WRZ4DDPQRSAI	q=*llnyy?7R'SSi[cll:>V=WXYi[895 &:8 
Bvh-	#HLLN$;$;<O$P#Q
RSa .
)os   6Q(0Q-.Q2__main__)__doc__rD   r@   r+   rC   r   r   r5   r7   r8   r-   r[   __name__     rZ   <module>ra      s\     
   (
 -
eEN
 CTL zF r`   