
    9j                     x    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 dZg dZdddd	d
dZ	dZ
d Zedk(  r e        yy)uw  
Batch optimizer: runs auto_optimize_loop.py on COINBASE_BTCUSD across all timeframes.

Usage:
    python3 run_btc.py                  # use auto_optimize_loop.py default (3 iters × 50M)
    python3 run_btc.py --hours 10       # 10h total budget, split evenly across all 5 TFs (2h each)
    python3 run_btc.py --hours 8 --tfs 6H 8H 12H 1D  # 8h split across 4 TFs (2h each)
    N)datetime	timedeltaCOINBASE_BTCUSD)4H6H8H12H1D240360480720r
   up  
examples:
  python3 run_btc.py --hours 10
      10h total ÷ 5 TFs = 2h each (4H, 6H, 8H, 12H, 1D)

  python3 run_btc.py --hours 8 --tfs 6H 8H 12H 1D
      8h total ÷ 4 TFs = 2h each (skips 4H)

  python3 run_btc.py --tfs 6H
      Single timeframe, default iteration count

  python3 run_btc.py
      All 5 TFs, default iteration count (3 iters × 50M samples each)
c                     t        j                  dt        t         j                        } | j	                  dt
        d d       | j	                  ddd dd	
       | j	                  dt        dddgd       | j	                  dt        dg dd       | j	                  ddd       | j                         }|j                  r(|j                  D cg c]  }|j                          c}nt        }|D cg c]*  }t        |dt         dt        j                  ||       df, }}t        |      }|j                  x|j                  |z  }t!        j"                         t%        |j                        z   }t'        d|j                   d| d|dd        t'        d!|j)                  d"              nd }t'        d#| d$       t'        d%t!        j"                         j)                  d"       d&       t+        |d'      D ]  \  }\  }	}}
|	 d(| }||dd)nd*}t'        d&d+        t'        d,| d-| d.| d/| d0	       t'        d1t!        j"                         j)                  d2              t'        d+        t,        j.                  d3d4|
d|j0                  d|j2                  g}||dt        |      gz  }|j4                  r|dgz  }t7        j6                         }t9        j:                  |      }t7        j6                         |z
  }|j<                  d5k(  rd6nd7|j<                   }t'        d8| d-| d.| d9|d:z  d;d<| d=       ||z
  }|d5kD  sX|Ft!        j"                         t%        ||z        z   }t'        d>| d?|j)                  d2              t'        d>| d@        t'        d&d+        t'        dAt!        j"                         j)                  d"              y c c}w c c}w )BNz:Batch optimizer for COINBASE_BTCUSD across all timeframes.)descriptionepilogformatter_classz--hourszYTotal hour budget divided evenly across timeframes. E.g. --hours 10 with 5 TFs = 2h each.)typedefaulthelpz--tfs*TFz;Timeframes to run (default: all 5). E.g. --tfs 6H 8H 12H 1D)nargsr   metavarr   z--searchrandomoptunazASearch strategy: 'random' (default) or 'optuna' (biased sampling))r   r   choicesr   z--regimeall)r   bullbearsidewaysz6MVRV regime filter for IS training bars (default: all)z	--tighten
store_truezSAuto-apply q5-q95 range tightening after each iteration (tighten_params.py --apply))actionr   z	data/mlp/z, z.csv)hourszTotal budget: u   h  ÷  z timeframes = z.2fzh eachzEstimated completion: z%Y-%m-%d %H:%M:%SzRunning u$    timeframes × 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 timeframes, ETA z timeframeszAll done. Finished at: )argparseArgumentParserEXAMPLESRawDescriptionHelpFormatteradd_argumentfloatstr
parse_argstfsupper
TIMEFRAMESASSET
_TF_TO_MINgetlenr#   r   nowr   printstrftime	enumeratesys
executablesearchregimetightentime
subprocessrun
returncode)parserargstfr6   combostotalhours_per_tfetaiasset	data_pathlabelper_tf_labelcmdstartresultelapsedstatus	remainings                      2/Users/jameslopez/projects/TradingBot25/run_btc.pymainr]   %   s   $$P <<F
 	tE  F sD$7  8 
hS[H\`  b

eEhU  W
Lr  tD-1XX
)"288:
):CWZ[WZQSubIeWBz~~b"/E.FdKLWZF[KEzzzzE)llnytzz::tzzl'%|TWFXX^_`&s||4G'H&IJKCDE	L001DEFb
IJ%.vq%9!!E2y'2$1=1I,s+1-y6(m!AeWBugSa89HLLN33J?@AB~~<h	4;;
DKKA#Is<011C<<K= C		$))+%**a/uV=N=N<O5PA3awb}WRZ4DDPQRSAI	q='llnyy<7O'PPi[0A#,,zBZA[\]i[<=9 &:< 
Bvh-	#HLLN$;$;<O$P#Q
RS[ *[s   O14/O6__main__)__doc__rG   rA   r.   rF   r   r   r9   r8   r:   r0   r]   __name__     r\   <module>rc      sX     
   (,
eEN
 ATH zF rb   