
    %j
                    n    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 d dlmZ ddZdddZddZddZdS )    )annotationsN)Candleaggregate_trade_breakdownsrun_walk_forward_tournament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     ^/home/agent/projects/CryptoTradingBot/Crypto_Agent/tests/test_historical_replay_walkforward.py_candler      s(    ]QV+%eV[dmnnnn          @strategy_idstrtriggerr   c                >    t          | | d|dddddddd	d
d
          S )Nunitg?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)r   labelsource
parametersr   )r   r   s     r   _presetr/      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          d          g| dddd          }t          |d         j        j                  }|j        }t          |          }ddh}||k    }|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}}|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}}
|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             }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! |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!      _            X@   g      X@Z   Y   BTCETH	candidate@T volumessegmentsr;   r<   ==)zM%(py5)s
{%(py5)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s.by_coin
})
} == %(py8)sset	breakdown)py0py1py3py5py8assert %(py10)spy10)z5%(py3)s
{%(py3)s = %(py1)s.closed_trades
} == %(py6)srG   rH   py6assert %(py8)srJ   c              3  @   K   | ]}|                     d           V  dS )zV-ShapeN
startswith.0reasons     r   	<genexpr>zQtest_aggregate_trade_breakdowns_groups_by_coin_and_exit_reason.<locals>.<genexpr>+   s0      SSv  ++SSSSSSr   z,assert %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}any)rF   py2py4c              3  @   K   | ]}|                     d           V  dS )zSL HitNrQ   rS   s     r   rV   zQtest_aggregate_trade_breakdowns_groups_by_coin_and_exit_reason.<locals>.<genexpr>,   s0      RRvv  **RRRRRRr   )r   r   r/   r   	aggregatetradesby_coinrD   
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanationclosed_tradesby_exit_reasonrW   )candlesresultsrE   @py_assert2@py_assert4@py_assert7@py_assert6@py_format9@py_format11@py_assert0@py_assert5@py_format7@py_assert1@py_assert3@py_format5s                  r   >test_aggregate_trade_breakdowns_groups_by_coin_and_exit_reasonrv      s&   3C'!R..'!TBRBRT[\]_cTdTde3C'!R..'!R..RYZ[]_R`R`a G
 *7;+?+?*@'[dmvSwSw  CD  E  E  EG*71:+?+FGGI 33 !!3eU^3!^3333333333!^33333333333333333333333333333333y33333y333333 3333!3333^33333333333333333333333333333U#6#16Q61Q66666666661Q66666#666616666Q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U#6#16Q61Q66666666661Q66666#666616666Q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SS):R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RR9QRRRR3RRRRRRRRRRRRRRRR3RRRRR3RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRr   c                 @   t          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d	          t          dd	          g
t          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d          t          dd          g
d} t          t          d          g| dddd          }|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	        }	t          |	          }d}
||
k    }|st	          j        d|fd||
f          dt          j                    v st	          j        t                    rt	          j        t                    ndt	          j        |          t	          j        |	          t	          j        |          t	          j        |
          dz  }dd|iz  }t          t	          j        |                    d x}x}	x}x}}
|d         }|j        }|j        }d}||k    }|st	          j        d|fd||f          t	          j        |          t	          j        |          t	          j        |          t	          j        |          d z  }d!d"|iz  }t          t	          j        |                    d x}x}x}x}}|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}||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%}||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 S )'Nr   r2   r!   r3   r4   r5   r6   r7   `   r             	   r8   r9   r:   wfr>   r?   rB   )z3%(py3)s
{%(py3)s = %(py1)s.strategy_id
} == %(py6)srM   rO   rJ   )zN%(py6)s
{%(py6)s = %(py0)s(%(py4)s
{%(py4)s = %(py2)s.segments
})
} == %(py9)slen)rF   rX   rY   rN   py9zassert %(py11)spy11)zT%(py5)s
{%(py5)s = %(py3)s
{%(py3)s = %(py1)s.aggregate
}.closed_trades
} == %(py8)s)rG   rH   rI   rJ   rK   rL   )z8%(py3)s
{%(py3)s = %(py1)s.winning_segments
} == %(py6)s)z7%(py3)s
{%(py3)s = %(py1)s.losing_segments
} == %(py6)sr   )z7%(py3)s
{%(py3)s = %(py1)s.stability_score
} == %(py6)s)r   r   r/   r   r^   r_   rc   rd   re   rA   r~   r`   ra   rb   r[   rf   winning_segmentslosing_segmentsstability_score)rh   ri   rp   rj   rq   rk   rr   rn   rs   rt   @py_assert8rl   @py_format10@py_format12rm   ro   s                   r   ;test_walk_forward_tournament_reports_segments_and_stabilityr   /   s<    AsOOWQ__gannga>N>NPWXY[]P^P^ArNNGArNNGArNNGArNNGTUWYNN

 AsOOWQ__gaoowq#PWXY[^P_P_AsOOWQ__gannganngVWY[nn
	 	G *74==/7T]foLpLp{|}}}G1:):!)T)!T))))))))))!T))))):))))!))))T)))))))))))))))))))))))))))))qz(z"(3"##(q(#q((((((((((#q((((((((((((3(((((3((((((z(((("((((#((((q(((((((((((((((((((((((((((((((1: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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22221:+:&+!+&!++++++++++&!+++++:++++&++++!+++++++++++++++++++++++++++++1:*:%**%**********%*****:****%*********************************1:,:%,,%,,,,,,,,,,%,,,,,:,,,,%,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,r   )r	   r
   r   r   r   r   )r   )r   r   r   r   r   r   )r   r0   )
__future__r   builtinsr`   _pytest.assertion.rewrite	assertionrewriter^   historical_replayr   r   r   strategy_registryr   r   r/   rv   r    r   r   <module>r      s    " " " " " "               ] ] ] ] ] ] ] ] ] ] , , , , , ,o o o o    (S S S S - - - - - -r   