
    hBjP                     d    d dl Zd dlmc mZ d dlmZ d dlm	Z	m
Z
mZ d Zd Zd Zd Zd Zd	 ZdS )
    N)Decimal)MarketContextbuild_v76_order_intentstrict_anti_chase_blockersc                  6	   t          ddt          d          t          d          t          d          t          d          t          d          dd	t          d
          t          d                    } t          | d          }d }||u}|st          j        d|fd||f          dt          j                    v st          j        |          rt          j        |          ndt          j        |          dz  }dd|iz  }t          t          j
        |                    d x}}|j        }d}||k    }|st          j        d|fd||f          dt          j                    v st          j        |          rt          j        |          ndt          j        |          t          j        |          dz  }dd|iz  }t          t          j
        |                    d x}x}}|j        }d}||k    }|st          j        d|fd||f          dt          j                    v st          j        |          rt          j        |          ndt          j        |          t          j        |          dz  }dd|iz  }t          t          j
        |                    d x}x}}|j        }d }||u}|st          j        d|fd||f          dt          j                    v st          j        |          rt          j        |          ndt          j        |          t          j        |          dz  }dd|iz  }t          t          j
        |                    d x}x}}|j        }d}	t          |	          }
||
k    }|st          j        d|fd||
f          dt          j                    v st          j        |          rt          j        |          ndt          j        |          dt          j                    v st          j        t                    rt          j        t                    ndt          j        |	          t          j        |
          d z  }d!d"|iz  }t          t          j
        |                    d x}x}x}	}
d S )#NBTCBTC/USDC:USDC100000998009975099500	100000000      99000500)coinsymbolcurrent_pricerecent_highsma_fastsma_slow
volume_24hbreadth_positive_candidatesrelative_strength_rankbaseline_pricewallet_equity_usdcz	v76-BTC-1client_order_idis notz%(py0)s is not %(py3)sintentpy0py3assert %(py5)spy5==)z,%(py2)s
{%(py2)s = %(py0)s.coin
} == %(py5)sr%   py2r(   assert %(py7)spy7confirmed_squeeze_breakoutz.%(py2)s
{%(py2)s = %(py0)s.reason
} == %(py5)s)z5%(py2)s
{%(py2)s = %(py0)s.stop_loss
} is not %(py5)sz1.25)zN%(py2)s
{%(py2)s = %(py0)s.risk_usd
} == %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
}r   )r%   r,   py4py6py8assert %(py10)spy10)r   r   r   
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanationr   reason	stop_lossrisk_usd)contextr#   @py_assert2@py_assert1@py_format4@py_format6@py_assert4@py_assert3@py_format8@py_assert5@py_assert7@py_format9@py_format11s                `/home/agent/projects/CryptoTradingBot/Crypto_Agent/tests/test_v76_hl_confirmed_squeeze_hybrid.py=test_v76_strategy_returns_order_intent_without_exchange_callsrN      s   h''G$$!!!!;''$% w''"5>>  G $G[IIIF6666;%;%;%66;%=888=88888888888=88888888888886888886888888=88888888888888888888888888888888'4'4''''''''''4''''''''''''6'''''6''''''''''4'''''''''''''''''''''''''''?-f-gfoo-?o----------?o------------6-----6------?-----------g-----g------f----o-------------------------------    c                  D   t          ddt          d          t          d          t          d          t          d          t          d          dd	t          d
          t          d          d          } d}t          | |          }d }||u }|st          j        d|fd||f          dt          j                    v st          j        t                    rt          j        t                    nddt          j                    v st          j        |           rt          j        |           ndt          j        |          t          j        |          t          j        |          dz  }dd|iz  }t          t          j
        |                    d x}x}x}}d S )NWLDzWLD/USDC:USDCz2.00z1.98z1.99z1.95r   r   r   z1.90r   T)r   r   r   r   r   r   r   r   r   r   r   coin_leakage_blockedz	v76-WLD-1r   iszI%(py5)s
{%(py5)s = %(py0)s(%(py1)s, client_order_id=%(py3)s)
} is %(py8)sr   rA   r%   py1r&   r(   r3   r4   r5   )r   r   r   r6   r7   r8   r9   r:   r;   r<   r=   )rA   rB   rF   rJ   @py_assert6rK   rL   s          rM   6test_v76_strategy_rejects_wld_when_leakage_gate_blocksrY      s   fooFOO;''$% v"5>>!  G <GO!';GGGO4OG4OOOOOOOOOOG4OOOOOOOOOOOO!OOOOO!OOOOOOOOOOOOO'OOOOO'OOOOOO;OOOOGOOOO4OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOrO   c                  n   t          d3i dddddt          d          dt          d          d	t          d
          dt          d          dt          d          dddddt          d          dt          d          dddt          d          dt          d          dt          d          dt          d           d!t          d"          } t          |           }d#}||v }|st          j        d$|fd%||f          t          j        |          d&t          j                    v st          j        |          rt          j        |          nd&d'z  }d(d)|iz  }t          t          j
        |                    d x}}d*}t          | |+          }d }||u }|st          j        d,|fd-||f          d.t          j                    v st          j        t                    rt          j        t                    nd.d/t          j                    v st          j        |           rt          j        |           nd/t          j        |          t          j        |          t          j        |          d0z  }	d1d2|	iz  }
t          t          j
        |
                    d x}x}x}}d S )4Nr   r   r   r	   r   z104.50r   z104.40r   z103.90r   z102.80r   r   r   r   r   r   r   100r   r   strict_anti_chaseT
retest_lowz103.10atr_pct1.20move_15m_pctz2.40move_1h_pctz4.00pullback_from_high_pctz0.05!anti_chase_overextended_no_retestinz%(py1)s in %(py3)sblockersrW   r&   r'   r(   zv76-BTC-chaser   rS   rU   r   rA   rV   r4   r5    r   r   r   r6   r7   r;   r8   r9   r:   r<   r=   r   rA   rg   @py_assert0rB   rD   rE   rF   rJ   rX   rK   rL   s              rM   8test_v76_strict_anti_chase_blocks_overextended_no_retestrm   1   sS      U h''' H%%%	
 """ """ ;''' %&A  !q u~~~ #5>>> $ 8$$$  V___  FOOO!"  'v#G( *'22H.:.(::::::::::.(:::::.:::::::::::(:::::(:::::::::::::::::::::::::::;JS!'?KKKStSKtSSSSSSSSSSKtSSSSSSSSSSSS!SSSSS!SSSSSSSSSSSSS'SSSSS'SSSSSS?SSSSKSSSStSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSrO   c                     t          d7i dddddt          d          dt          d          d	t          d
          dt          d          dt          d          dddddt          d          dt          d          dddt          d          dt          d          dt          d          dt          d           d!t          d"          } t          |           }g }||k    }|st          j        d#|fd$||f          d%t          j                    v st          j        t                    rt          j        t                    nd%d&t          j                    v st          j        |           rt          j        |           nd&t          j        |          t          j        |          d'z  }d(d)|iz  }t          t          j
        |                    d x}x}}t          | d*+          }d }||u}|st          j        d,|fd-||f          d.t          j                    v st          j        |          rt          j        |          nd.t          j        |          d/z  }d0d1|iz  }	t          t          j
        |	                    d x}}|j        }d2}||k    }
|
st          j        d#|
fd3||f          d.t          j                    v st          j        |          rt          j        |          nd.t          j        |          t          j        |          d4z  }	d5d6|	iz  }t          t          j
        |                    d x}x}
}d S )8Nr   r   r   r	   r   r[   r   101r   99.80r   99.20r   r   r   r   r   r   r   100.50r   r   r\   Tr]   99.30r^   r_   r`   0.30ra   0.90rb   0.99r)   )z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)sr   rA   )r%   rW   r&   r2   zassert %(py8)sr3   zv76-BTC-retestr   r    r"   r#   r$   r'   r(   survival_rebound_sma_reclaimr0   r+   r-   r.   ri   )r   r   r   r6   r7   r8   r9   r:   r;   r<   r=   r   r>   )rA   rB   rI   rF   @py_format7rK   r#   rC   rD   rE   rG   rH   s               rM   0test_v76_strict_anti_chase_allows_retest_reclaimry   L   s      U ennn ENNN	
 !!! !!! ;''' %&A  !q x((( #5>>> $ 7###  V___  FOOO!"  'v#G( &g..4"4."4444444444."444444444444%44444%4444444444444g44444g444444.4444"444444444444444444444444444#G=MNNNF6666=:::=:::::::::::=:::::::::::::6:::::6::::::=::::::::::::::::::::::::::::::::::rO   c                  	   t          d<i dddddt          d          dt          d          d	t          d
          dt          d          dt          d          dddddt          d          dt          d          dddt          d          dt          d          dt          d          dt          d           d!t          d"          d#t          d$          d%t          d&          d't          d(          } t          |           }d)}||v }|st          j        d*|fd+||f          t          j        |          d,t          j                    v st          j        |          rt          j        |          nd,d-z  }d.d/|iz  }t          t          j
        |                    d x}}d0}||v }|st          j        d*|fd+||f          t          j        |          d,t          j                    v st          j        |          rt          j        |          nd,d-z  }d.d/|iz  }t          t          j
        |                    d x}}d1}||v }|st          j        d*|fd+||f          t          j        |          d,t          j                    v st          j        |          rt          j        |          nd,d-z  }d.d/|iz  }t          t          j
        |                    d x}}d2}||v }|st          j        d*|fd+||f          t          j        |          d,t          j                    v st          j        |          rt          j        |          nd,d-z  }d.d/|iz  }t          t          j
        |                    d x}}d3}t          | |4          }d }||u }|st          j        d5|fd6||f          d7t          j                    v st          j        t                    rt          j        t                    nd7d8t          j                    v st          j        |           rt          j        |           nd8t          j        |          t          j        |          t          j        |          d9z  }	d:d;|	iz  }
t          t          j
        |
                    d x}x}x}}d S )=Nr   r   r   r	   r   105r   106r   104r   103r   r   r   r   r   r   r   r[   r   r   r\   Tr]   z103.50r^   z1.0r`   z2.7ra   z4.0rb   z0.95vwap_distance_pctz1.35upper_wick_pctz0.80candle_body_pctrt   !anti_chase_vwap_distance_too_highrd   rf   rg   rh   r'   r(   anti_chase_atr_pumpanti_chase_upper_wick_rejectionanti_chase_exhaustion_candlezv76-BTC-exhaustionr   rS   rU   r   rA   rV   r4   r5   ri   rj   rk   s              rM   ?test_v76_strict_anti_chase_blocks_vwap_pump_and_wick_exhaustionr   g   s      U ennn ENNN	
   ;''' %&A  !q u~~~ #5>>> $ 8$$$  U^^^  ENNN!"  'v#$ "&///%& v'(  )G. *'22H.:.(::::::::::.(:::::.:::::::::::(:::::(::::::::::::::::::::::::::: , H,,,,,,,,,, H,,,,, ,,,,,,,,,,,H,,,,,H,,,,,,,,,,,,,,,,,,,,,,,,,,,,8,8888888888,88888,8888888888888888888888888888888888888888888)5)X5555555555)X55555)55555555555X55555X555555555555555555555555555;OX!';OPPPXTXXPTXXXXXXXXXXXPTXXXXXXXXXXXXX!XXXXX!XXXXXXXXXXXXX'XXXXX'XXXXXX;OXXXXPXXXXTXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXrO   c                     t          d:i dddddt          d          dt          d          d	t          d
          dt          d          dt          d          dddddt          d          dt          d          dddt          d          dt          d          dt          d          dt          d           d!t          d"          d#t          d$          d%t          d&          d't          d(          } t          |           }d)}||v }|st          j        d*|fd+||f          t          j        |          d,t          j                    v st          j        |          rt          j        |          nd,d-z  }d.d/|iz  }t          t          j
        |                    d x}}d0}||v }|st          j        d*|fd+||f          t          j        |          d,t          j                    v st          j        |          rt          j        |          nd,d-z  }d.d/|iz  }t          t          j
        |                    d x}}d1}t          | |2          }d }||u }|st          j        d3|fd4||f          d5t          j                    v st          j        t                    rt          j        t                    nd5d6t          j                    v st          j        |           rt          j        |           nd6t          j        |          t          j        |          t          j        |          d7z  }	d8d9|	iz  }
t          t          j
        |
                    d x}x}x}}d S );Nr   ETHr   zETH/USDC:USDCr   r[   r   ro   r   rp   r   rq   r   r   r   r   r   r   r   rr   r   r   r\   Tr]   rs   r^   r_   r`   rt   ra   ru   rb   rv   funding_rate_hourly_pctz0.006open_interest_change_pct14premium_pctz0.12anti_chase_oi_funding_crowdedrd   rf   rg   rh   r'   r(   anti_chase_premium_too_highzv76-ETH-crowdedr   rS   rU   r   rA   rV   r4   r5   ri   rj   rk   s              rM   ;test_v76_strict_anti_chase_blocks_real_derivatives_crowdingr      sT      U ennn ENNN	
 !!! !!! ;''' %&A  !q x((( #5>>> $ 7###  V___  FOOO!"  'v#$ !( 0 0 0%& ")'( FOOO)G. *'22H*6*h6666666666*h66666*66666666666h66666h666666666666666666666666666(4(H4444444444(H44444(44444444444H44444H444444444444444444444444444;LU!';LMMMUQUUMQUUUUUUUUUUUMQUUUUUUUUUUUUU!UUUUU!UUUUUUUUUUUUU'UUUUU'UUUUUU;LUUUUMUUUUQUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUrO   )builtinsr8   _pytest.assertion.rewrite	assertionrewriter6   decimalr   .src.strategies.v76_hl_confirmed_squeeze_hybridr   r   r   rN   rY   rm   ry   r   r   ri   rO   rM   <module>r      s                        | | | | | | | | | |. . .0P P P&T T T6; ; ;6Y Y YBV V V V VrO   