o
    ]D$j#                     @   s|  d Z ddlZddlZddlZddlmZmZ ddlmZmZ ddl	m
Z
 dZdZdZd	Zd
ZddiZdZdZdZdZdZdZdZdZdZdZdZdZdZe ZdZ ddddddddddd dd!Z!d"d#d$d%dd&d'd(d)d*d+d,dd-d.d(d/d0d1d2dd-d.d(d3d4d5d6d-d7d8d9d:d;d6d-d7d8d<d=d>d6d-d7d8d?Z"eG d@dA dAZ#dBe$dCe%fdDdEZ&dFe'dCe'fdGdHZ(dIe
dJe)fdKdLZ*dS )Mu{  
V15 — Momentum Taker (configuración óptima).

Evolución de V12. Mismos módulos pero con parámetros validados en live:

  - CONFIRM_TICKS = 1: confirmación mínima. V12 usaba 3, lo que causaba
    perder 60% de las ventanas rentables. Con 1, comportamiento similar
    a V11 pero manteniendo la arquitectura modular de V12.

  - min_ask_confirm = 0.40 (ETH): bajado desde 0.48. El filtro alto
    forzaba entradas más caras con peor payoff.

  - AGGRESSIVE_BUMP = 0.01: centavo sobre ask para asegurar fill.

Resultados validados (2026-06-05/06): wallet +115% en 18h, WR 54-56%,
live igualando o superando paper en ETH y BTC.
    N)	dataclassfield)datetimetimezonePathz,https://gamma-api.polymarket.com/events/slugz.https://polymarket.com/api/crypto/crypto-pricez4wss://ws-subscriptions-clob.polymarket.com/ws/marketzhttps://clob.polymarket.com   z
User-AgentzMozilla/5.0Mb@?      @{Gz??皙?g{Gz?      g     8@  i,  5m
fiveminutei  <   )win_secsslug_tagprice_variantsignal_start_tleftsignal_stop_tleft15mfifteenminuteH  x   )      zbtcusdt@tradez
btc-updownBTCgRQ?g?g-C6J?)binance_stream	slug_baseprice_symbolmin_ask_confirmentry_size_usdmax_entry_pricemomentum_thresholdzethusdt@tradez
eth-updownETHg?g(\?gMbP?zsolusdt@tradez
sol-updownSOLgQ?zxrpusdt@tradez
xrp-updownXRPg?gǺF?)r    r!   r"   r#   r%   r&   zdogeusdt@tradezdoge-updownDOGEzbnbusdt@tradez
bnb-updownBNB)btcethsolxrpdogebnbc                   @   s&  e Zd ZU eed< eed< dZeed< dZeed< dZ	eed< dZ
eed< dZeed	< d
Zeed< dZeed< dZeed< dZeed< dZeed< dZeed< dZeed< dZeed< dZeed< edd dZeed< ed d dZeed!< ed"d dZeed#< ed$d dZeed%< d&d' Zd(S ))Configassetliver   window 
binance_wsslug_prefixr"   r   r   r   r   r   r   r   r   r#   r
   r$   r   r%   r	   r&   
   confirm_ticksr   aggressive_bumpc                   C      t dS N.r    r?   r?   ./var/www/html/MetaHedge/POLYBOT1/v15/config.py<lambda>       zConfig.<lambda>)default_factorylog_dirc                   C   r<   r=   r   r?   r?   r?   r@   rA      rB   
trades_csvc                   C   r<   r=   r   r?   r?   r?   r@   rA      rB   windows_csvc                   C   r<   r=   r   r?   r?   r?   r@   rA      rB   
state_jsonc                 C   s  t | j }t| j }d|d  | _|d  d|d  d| _|d | _|d | _|d | _|d	 | _	|d
 | _
|dd| _|dt| _|dt| _|dt| _|dt| _|dt| _| jrl| j d}n| j}ttjjd | }|| _|d | _|d | _|d | _d S )Nz!wss://stream.binance.com:9443/ws/r    r!   -r   r"   r   r   r   r   r#   r   r%   r&   r$   r:   r;   _livelogsz
trades.csvzwindows.csvz
state.json)ASSET_CONFIGSr3   WINDOW_CONFIGSr5   r7   r8   r"   r   r   r   r   getr#   MAX_ENTRY_PRICEr%   MOMENTUM_THRESHOLDr&   ENTRY_SIZE_USDr$   CONFIRM_TICKSr:   AGGRESSIVE_BUMPr;   r4   r   __file__parentrD   rE   rF   rG   )selfacfgwcfgsubbaser?   r?   r@   __post_init__   s.   








zConfig.__post_init__N)__name__
__module____qualname__str__annotations__boolr5   intr7   r8   r"   r   r   r   r   r#   floatr$   r%   r&   r:   r;   r   rD   r   rE   rF   rG   rZ   r?   r?   r?   r@   r2      s,   
 r2   tsreturnc                 C   s   t j| tjddS )N)tzz%Y-%m-%dT%H:%M:%SZ)r   fromtimestampr   utcstrftime)rc   r?   r?   r@   iso   s   ri   pricec                 C   s"   t tdtdt | t t dS )Nr   gGz?   )roundmaxmin	TICK_SIZE)rj   r?   r?   r@   
snap_price   s   "rp   pathdatac              
   C   sn   |  d}z|tj|ddd ||  W d S  ty6 } ztd| j d|  W Y d }~d S d }~ww )Nz.tmpFrk   )ensure_asciiindentz[json-write] z: )with_suffix
write_textjsondumpsreplace	Exceptionprintname)rq   rr   tmper?   r?   r@   
write_json   s   
$r   )+__doc__rw   mathosdataclassesr   r   r   r   pathlibr   	GAMMA_API	PRICE_APICLOB_WSHOSTCHAIN_IDUArO   rP   
MIN_SHARESro   rN   MIN_ENTRY_PRICETAKER_FEE_RATErQ   rR   PAPER_SLIPPAGELOSS_STREAK_MAXLOSS_STREAK_COOLDAILY_LOSS_LIMITsetBLOCKED_HOURS_UTCOUTCOME_MAX_WAITrL   rK   r2   ra   r^   ri   rb   rp   dictr   r?   r?   r?   r@   <module>   s    


		97