
    ?j                     v    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 dlmZmZmZmZ d Zd Zd Zd Zd	 ZdS )
    NDecimal)datetimetimezone	timedelta)Candleassess_entryassess_exitrsic                 r   t          t          dddt          j                  t	          d| z            z   t          t          |                    t          t          |                    t          t          |                    t          t          |                    t          d                    S )Ni     )tzinfo   )minutes1000)r   r   r   utcr   r   str)iohlcloses        V/home/agent/projects/CryptoTradingBot/Crypto_Agent/tests/test_trade_timing_analysis.pycr      s    (4Ahl;;;iPRSTPT>U>U>UUW^_bcd_e_eWfWfhopstupvpvhwhw  zA  BE  FG  BH  BH  zI  zI  KR  SV  W\  S]  S]  K^  K^  `g  hn  `o  `o  p  p  p    c            
      2   t          ddddd          t          ddddd          t          ddd	dd
          t          dd
ddd          g} t          ddddd          t          ddddd          g}t          t          d          | |          }d}|d         }||v }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}d}|d         }||v }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}|d         }d }||k    }|slt          j        d!|fd"||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}d S )#Nr   d   e   c   r   g   f      h        Y@   i   g      Z@   g,Z@gfffffY@33333Y@         Z@gY@g     Y@z104.5"entry_likely_chased_after_pre_moveflagsinz%(py1)s in %(py4)spy1py4assert %(py6)spy6&entry_poor_immediate_adverse_excursionqualitybad==z%(py1)s == %(py4)s)r   r	   r   
@pytest_ar_call_reprcompare	_safereprAssertionError_format_explanationprepostresult@py_assert0@py_assert3@py_assert2@py_format5@py_format7s           r   6test_entry_flags_chased_pre_move_and_adverse_excursionrI      s   QS"c""Aac3$<$<a3SRW>X>XZ[\]_dfiknpuZvZv
wCaue,,a5%.N.NOD''**C66F/B6'?B/?BBBBBBBBBB/?BBBBB/BBBB?BBBBBBBBBBBBBBBBBBBBBBBBBBB3FvgF3FFFFFFFFFF3FFFFF3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF)%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%r   c                     d t          d          D             } t          ddddd          t          dddd	d
          g}t          t          d          | |          }d}|d         }||v }|slt	          j        d|fd||f          t	          j        |          t	          j        |          dz  }dd|iz  }t          t	          j        |                    d x}x}}|d         }d}||k    }|slt	          j        d|fd||f          t	          j        |          t	          j        |          dz  }dd|iz  }t          t	          j        |                    d x}x}}d S )Nc                 P    g | ]#}t          |d ddd |dz  dk    rdndz             $S )r   g33333Y@g33333X@r"   r   g{Gz?g{Gzr   .0r   s     r   
<listcomp>z2test_entry_good_follow_through.<locals>.<listcomp>   s=    
\
\
\Q1QUD#Q!"GHH
\
\
\r      r!   r$   gyY@r       r#   g33333Y@gY@102entry_good_follow_throughr,   r-   r/   r0   r3   r4   r6   goodr8   r:   )	ranger   r	   r   r;   r<   r=   r>   r?   r@   s           r   test_entry_good_follow_throughrV      s   
\
\RWXZR[R[
\
\
\Cb#ueS))1Rc5%+H+HID'%..#t44F&9&/9&/9999999999&/99999&9999/999999999999999999999999999)&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&r   c                     d t          d          D             } t          ddddd          t          dddd	d
          g}t          t          d          | |d          }d}|d         }||v }|slt	          j        d|fd||f          t	          j        |          t	          j        |          dz  }dd|iz  }t          t	          j        |                    d x}x}}|d         }d}||k    }|slt	          j        d|fd||f          t	          j        |          t	          j        |          dz  }dd|iz  }t          t	          j        |                    d x}x}}d S )Nc                 p    g | ]3}t          |d |dz  z   d |dz  z   dz   d|dz  z   d |dz  z   dz             4S )r   g?g?r   rL   rM   s     r   rO   zTtest_exit_flags_too_early_when_followthrough_after_profit_target.<locals>.<listcomp>   sP    
V
V
Vq1QAcE	3qu9S="QsU(C#IcMBB
V
V
Vr   rP   r!   r$   g33333sY@gY@rQ   r*   r    r(   rR   profit_target#exit_too_early_missed_followthroughr,   r-   r/   r0   r3   r4   r6   r7   r8   r:   )	rU   r   r
   r   r;   r<   r=   r>   r?   r@   s           r   @test_exit_flags_too_early_when_followthrough_after_profit_targetr[      s   
V
VERTII
V
V
VCb#ueU++Qr5%e-L-LMDdODDF0CF7OC0OCCCCCCCCCC0OCCCCC0CCCCOCCCCCCCCCCCCCCCCCCCCCCCCCCC)%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%r   c            	      6   d t          dd          D             } t          |           }d}t          |          }||k    }|sMt          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        |          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 )Nc                 ,    g | ]}t          |          S  r   rM   s     r   rO   zCtest_rsi_returns_high_value_on_consistent_gains.<locals>.<listcomp>%   s    ///Qgajj///r   r   rP   100r8   )zN%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py9)s
{%(py9)s = %(py5)s(%(py7)s)
}r   valuesr   )py0r1   py3py5py7py9zassert %(py11)spy11)rU   r   r   r;   r<   @py_builtinslocals_should_repr_global_namer=   r>   r?   )r`   rF   @py_assert6@py_assert8@py_assert4@py_format10@py_format12s          r   /test_rsi_returns_high_value_on_consistent_gainsro   $   s   //%2,,///Fv;;(%('%..(;.((((((((((;.((((((((((((3(((((3(((((((((((((v(((((v((((((;((((((((((('((((('((((((%((((.(((((((((((((((((((((((((((((((r   )builtinsrg   _pytest.assertion.rewrite	assertionrewriter;   decimalr   r   r   r   src.tools.analyze_trade_timingr   r	   r
   r   r   rI   rV   r[   ro   r^   r   r   <module>rv      s                        2 2 2 2 2 2 2 2 2 2 Q Q Q Q Q Q Q Q Q Q Q Qp p p& & &' ' '& & &) ) ) ) )r   