
    0Bj                        d dl mZ d dlmZ d dlmZmZ d dlmZ h dZ	h dZ
e	e
z  Z ed           G d	 d
                      ZddZddZddZdS )    )annotations)	dataclass)Decimal
ROUND_DOWN)OrderIntent>   BTCETHSOLLINK>   BCHENASUIWLDT)frozenc                  d   e Zd ZU ded<   ded<   ded<   ded<   ded<   ded<   ded	<   d
ed<   d
ed<   ded<   ded<   dZded<    ed          Zded<   dZded<   dZded<   dZ	ded<   dZ
ded<    ed          Zded<    ed          Zded <    ed          Zded!<    ed          Zded"<    ed#          Zded$<    ed%          Zded&<    ed          Zded'<    ed          Zded(<    ed          Zded)<    ed          Zded*<    ed          Zded+<    ed          Zded,<   dS )-MarketContextstrcoinsymbolr   current_pricerecent_highsma_fastsma_slow
volume_24hintbreadth_positive_candidatesrelative_strength_rankbaseline_pricewallet_equity_usdcFboolcoin_leakage_blocked1risk_multiplierTdata_quality_allowed ztuple[str, ...]data_quality_reasonsstrict_anti_chaseNzDecimal | None
retest_low1.20atr_pct0move_15m_pctmove_1h_pctpullback_from_high_pctz0.03
spread_pctz0.02expected_slippage_pctfunding_rate_hourly_pctvwap_distance_pctupper_wick_pctcandle_body_pctopen_interest_change_pctpremium_pct)__name__
__module____qualname____annotations__r!   r   r#   r$   r&   r'   r(   r*   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r%       1src/strategies/v76_hl_confirmed_squeeze_hybrid.pyr   r      s3        IIIKKK$$$$!&&&&&&ws||O++++!%%%%%,.....#####!%J%%%%wvG&&&&#GCLLL(((("73<<K''''&-gcll2222!'&//J))))%,WV__4444'.ws||3333!(----%gcllN****&ws||O++++(/4444"73<<K''''''r;   r   notionalr   pricereturnc                Z    | |z                       t          d          t                    S )N
0.00000001rounding)quantizer   r   )r=   r>   s     r<   _size_for_notionalrE   .   s(    u&&w|'<'<z&RRRr;   context	list[str]c                   | j         sg S g }| j        dk    r|                    d           | j        t	          d          k    r|                    d           | j        t	          d          k    r|                    d           | j        t	          d          k    r-| j        t	          d          k    r|                    d	           | j        t	          d
          k    r|                    d           | j        t	          d          k    r|                    d           | j        t	          d          k    r5| j	        | j        t	          d          z  k    r|                    d           | j
        t          t	          d          | j        t	          d          z            k    r|                    d           | j        | j        t	          d          z  k    r-| j
        t	          d          k    r|                    d           | j	        | j        t	          d          z  k    p| j        | j        t	          d          z  k    }| j        t          t	          d          | j        t	          d          z            k     }|r|r|                    d           | j        | j        n| j        }| j        | j        cxk    o
| j        k    nc o
| j        |k    }| j        | j        t	          d          z  k    }| j        | j        k    r|s| j        | j        k    o|}|s|                    d           |s|r|                    d           |S )al  Conservative v76 strict entry timing guards.

    The original v76 strict Paper edge was inflated by immediate expected-move
    exits. Under the real lifecycle, late entries produce too many time exits
    and stop losses. These guards keep the strategy from buying local tops and
    require a basic retest/reclaim shape before opening a lifecycle position.
    r   anti_chase_missing_atrz0.08anti_chase_spread_too_widez0.015#anti_chase_crowded_positive_funding12z0.005anti_chase_oi_funding_crowdedz0.10anti_chase_premium_too_highr)   !anti_chase_vwap_distance_too_highr+   z2.50anti_chase_atr_pumpz0.60z1.50anti_chase_upper_wick_rejectionz3.50z0.35anti_chase_exhaustion_candlez2.75z0.30!anti_chase_overextended_no_retestNz1.015anti_chase_no_retest_reclaim"anti_chase_buying_above_local_high)r'   r*   appendr/   r   r1   r5   r6   r2   r,   r3   maxr4   r-   r.   r(   r   r   r   r   )rF   blockersoverextended	no_retestr(   retest_heldnot_chasing_highs          r<   strict_anti_chase_blockersr]   2   s\    $ 	H!0111GFOO++4555&)9)999=>>>''$--77G<[^efm^n^n<n<n7888WV__,,5666 76??22;<<<%%'*>SZ[aSbSbAb*b*b-...GFOOW5LwW]5^ _ ___9:::W_wv>>>7CY\cdj\k\kCkCk6777''/GFOO*KK  GwObeletw~  @F  xG  xG  fG  PGL.WV__goX_`fXgXgFg1h1hhI =	 =;<<<'.'9'E##7K[J'7+;OOOOw?OOOOOvT[TilvTvK,0CggFVFV0VVw22292&'*::O?O 86777 >	 ><===Or;   client_order_idr   OrderIntent | Nonec          
     ~   | j                                         }|t          vrd S | j        rd S | j        sd S | j        t          d          k     rd S | j        dk     s| j        dk    rd S t          |           rd S | j
        | j        k    o| j        | j        k    }| j
        | j        k     o| j
        | j        k    }|r!d}t          d          }t          d          }n%|r!d}t          d          }t          d	          }nd S | j        |z  t          d
          z  | j        z  }|dk    r||t          d
          z  z  nt          d          }	| j        t          d          z  t          d
          z  }
t#          |	|
          }	|	t          d          k     rd S t%          |	| j
                  }| j
        t          d          |t          d
          z  z
  z  }t'          d'i ddd| j        d|ddddddddd|dd dd d|                    t          d           t,          !          d"d d#|d$|d%|d&|	S )(N12000000      confirmed_squeeze_breakoutz0.25z1.25survival_rebound_sma_reclaimz0.125z1.0100r   r+   2010r"   strategy_id)candidate_v76_hl_confirmed_squeeze_hybridr   r   sidebuyreduce_onlyF
order_typemarkettifIocsizer>   trigger_price	stop_lossrA   rB   take_profitr^   reasonrisk_usdestimated_notional_usdr%   )r   upperALLOWEDr!   r$   r   r   r   r   r]   r   r   r   r   r   r   r#   minrE   r   r   rD   r   )rF   r^   r   breakoutsurvival_reclaimrv   risk_pctstop_distance_pctrw   r=   max_notionalrr   rt   s                r<   build_v76_order_intentr   b   s   <D7t# t' tGJ////t*Q..'2PST2T2Tt!'** t$w'::cw?OSZSc?cH,w/EEs'J_cjcsJs 	-6??#FOO	 /7###ENNt)H4wu~~EH__HBJQ,,x,wu~~=>>T[\_T`T`H-=NL8\**H'$--th(=>>D%8IGTYNN8Z)Z[I   ??~~ T U	
 E 8 E T d d $$W\%:%:Z$PPP D ( v    (x! r;   N)r=   r   r>   r   r?   r   )rF   r   r?   rG   )rF   r   r^   r   r?   r_   )
__future__r   dataclassesr   decimalr   r   src.execution.order_intentr   CORERESEARCH_ALTrz   r   rE   r]   r   r%   r;   r<   <module>r      s   " " " " " " ! ! ! ! ! ! ' ' ' ' ' ' ' ' 2 2 2 2 2 2$$$+++

 $( ( ( ( ( ( ( (@S S S S- - - -`5 5 5 5 5 5r;   