
    (jf
                    x    d dl mZ d dlZd dlmc mZ d dlm	Z	m
Z
mZmZ d dlmZ ddZddZddZddZddZdS )    )annotationsN)Candlerun_coin_slice_replayrun_parameter_sweeprender_parameter_sweep_reportStrategyPresetiintclosefloatreturnr   c                8    t          d| dz  z   ||||d          S )Ni Se<   i@B )tsopenhighlowr   volume)r   )r
   r   s     M/home/agent/projects/CryptoTradingBot/Crypto_Agent/tests/test_replay_sweep.py_candler      s(    ]QV+%eV[dmnnnn    r	   c                 >    t          ddddddddd	d
dddd
          S )NbaseBaseunit      @g?g      ?g      ?   g       @g      @g      I@      )
flash_crash_trigger_pctbreak_even_activation_pctv_shape_activation_pctv_shape_trail_dist_pctdead_fish_time_limit_minsatr_sl_multipliermax_hard_stop_pcttrade_size_usddefault_leveragemin_volume_24h)strategy_idlabelsource
parametersr    r   r   _base_presetr0      sJ    '*),&)&))+!$!$" !
 
	   r   Nonec            	        t          dd          t          dd          t          dd          t          dd          t          dd	          gt          dd          t          dd          t          dd          t          dd
          t          dd          gd} t          t                      g| ddddg          }|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         }|j        }d}	||	k    }|st	          j        d|fd||	f          t	          j	        |          t	          j	        |          t	          j	        |	          dz  }
dd|
iz  }t          t	          j        |                    d x}x}x}}	d |j        d         j        j        D             }t!          |          }|sddt          j                    v st	          j        t                     rt	          j	        t                     ndt	          j	        |          t	          j	        |          dz  }t          t	          j        |                    d x}}d S ) Nr   d   r       _      a            X@Z   Y   )WLDBTC@T r<   )volumesexclude_coins)r<   ==)z6%(py2)s
{%(py2)s = %(py0)s.excluded_coins
} == %(py5)sreport)py0py2py5zassert %(py7)spy7r   )z3%(py3)s
{%(py3)s = %(py1)s.strategy_id
} == %(py6)s)py1py3py6assert %(py8)spy8c              3  ,   K   | ]}|j         d k    V  dS )r<   N)coin).0trades     r   	<genexpr>zMtest_coin_slice_replay_reports_without_single_coin_leakage.<locals>.<genexpr>)   s)      SSuuzU"SSSSSSr   z,assert %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}all)rD   rE   py4)r   r   r0   excluded_coins
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanationresultsr+   	aggregatetradesrR   )candlesrC   @py_assert1@py_assert4@py_assert3@py_format6@py_format8@py_assert0@py_assert2@py_assert5@py_format7@py_format9@py_format5s                r   :test_coin_slice_replay_reports_without_single_coin_leakagerl      s4   3C'!R..'!R..RYZ[]aRbRbc3C'!R..'!R..RYZ[]_R`R`a G
 #LNN#3Wi`iFjFj  |A  {B  C  C  CF ,H, H,,,,,,,,,, H,,,,,,,,,,,,6,,,,,6,,,,,, ,,,,H,,,,,,,,,,,,,,,,,,,,,,,,,,,>!2(2F2(F2222222222(F222222222(2222F22222222222222222222222222222SSq0A0K0RSSSS3SSSSSSSSSSSSSSSS3SSSSS3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Sr   c            	        dt          dd          t          dd          t          dd          t          dd          t          d	d
          gi} t          t                      | ddiddgddgdd          }t          |          }d	}||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}}|d         }|j        }|j        }d} ||          }	|	sdt	          j	        |          t	          j	        |          t	          j	        |          t	          j	        |          t	          j	        |	          dz  }
t          t	          j        |
                    d x}x}x}x}}	d}|d         }|j        }||v }|st	          j        d|fd||f          t	          j	        |          t	          j	        |          t	          j	        |          dz  }dd|iz  }t          t	          j        |                    d x}x}x}}d }|d         }|j        }||v }|st	          j        d|fd||f          t	          j	        |          t	          j	        |          t	          j	        |          dz  }dd|iz  }t          t	          j        |                    d x}x}x}}d S )!Nr=   r   r3   r    r4   r5   r6   r7   r8   r9   r>   g      @r      (   )r!   r%   r?   gridsegmentsrA   )z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)slenr]   )rD   rH   rI   rJ   rK   rL   base__zmassert %(py9)s
{%(py9)s = %(py5)s
{%(py5)s = %(py3)s
{%(py3)s = %(py1)s.strategy_id
}.startswith
}(%(py7)s)
})rH   rI   rF   rG   py9r!   in)z2%(py1)s in %(py6)s
{%(py6)s = %(py4)s.parameters
})rH   rS   rJ   r%   )r   r   r0   rs   rU   rV   rW   rX   rY   rZ   r[   r\   r+   
startswithr.   )r`   r]   rg   rh   rb   ri   rj   rf   @py_assert6@py_assert8@py_format10rc   s               r   ;test_parameter_sweep_clones_preset_with_stable_strategy_idsr|   ,   s    3C'!R..'!R..RYZ[]aRbRbcG "	"*-sSUWYRZ[[  G w<<1<1<133ww<11:6:!6!,6X6,,X66666666:6666!6666,6666X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666$=
=
(==$(===========$(======$====
====(==============================&?'!*?**??&*???????????&*??????&????*????*????????????????????????????????r   c            	        dt          dd          t          dd          t          dd          t          dd          t          d	d
          gi} t          t                      | ddiddgid          }t          |d          }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}||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}||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 S )Nr=   r   r3   r    r4   r5   r6   r7   r8   r9   r>   r!   r   rp   )top_nzParameter Sweeprv   )z%(py1)s in %(py3)srC   )rH   rI   zassert %(py5)srF   rt   zparams=)r   r   r0   r   rU   rV   rZ   rW   rX   rY   r[   r\   )r`   r]   rC   rf   rg   @py_format4rd   s          r   1test_parameter_sweep_report_contains_top_variantsr   ?   s   wq#3BQRTVY`abdhYiYijkG!,..'E9CU]vy|x}\~  JK  L  L  LG*7!<<<F&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&8v8v8vv999r   )r
   r   r   r   r   r   )r   r	   )r   r1   )
__future__r   builtinsrW   _pytest.assertion.rewrite	assertionrewriterU   historical_replayr   r   r   r   strategy_registryr	   r   r0   rl   r|   r   r/   r   r   <module>r      s    " " " " " "               o o o o o o o o o o o o , , , , , ,o o o o   (
T 
T 
T 
T@ @ @ @&     r   