
    9j                     x    d dl Zd dlmc mZ d dlZd dlZ	d dl
Z
d dlmZ d dlmZ d Zd Zd Zd Zd Zd	 Zd
 Zy)    N)confirmed_score_structure)_score_to_signalsc                  `   t        j                  g d      } t        | dd      }|j                  }|j                  } |       }g d}||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      t        j                  |      t        j                  |      dz  }d	d
|iz  }t        t        j                  |            d x}x}x}x}}y )N)              @r   r         @r      leftrightFFFFFT==ze%(py6)s
{%(py6)s = %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.lower_high
}.tolist
}()
} == %(py9)s	structurepy0py2py4py6py9assert %(py11)spy11nparrayr   
lower_hightolist
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanation	scorer   @py_assert1@py_assert3@py_assert5@py_assert8@py_assert7@py_format10@py_format12s	            I/Users/jameslopez/projects/TradingBot25/tests/test_mlp_score_structure.pyGtest_lower_high_is_available_only_after_the_right_hand_confirmation_barr1   	   s     HH34E)%aqAIU&&U&(U,UU(,UUUUU(,UUUUUUU9UUU9UUUUUU&UUU(UUU,UUUUUUUUU    c                  `   t        j                  g d      } t        | dd      }|j                  }|j                  } |       }g d}||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      t        j                  |      t        j                  |      dz  }d	d
|iz  }t        t        j                  |            d x}x}x}x}}y )N)r   r   r   r          @r   r	   r
   r   r   )ze%(py6)s
{%(py6)s = %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.higher_low
}.tolist
}()
} == %(py9)sr   r   r   r   )r   r   r   
higher_lowr   r   r    r!   r"   r#   r$   r%   r&   r'   s	            r0   Gtest_higher_low_is_available_only_after_the_right_hand_confirmation_barr6      s    HH34E)%aqAIU&&U&(U,UU(,UUUUU(,UUUUUUU9UUU9UUUUUU&UUU(UUU,UUUUUUUUUr2   c                  `   t        j                  g d      } t        | dd      }|j                  }|j                  } |       }g d}||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      t        j                  |      t        j                  |      dz  }d	d
|iz  }t        t        j                  |            d x}x}x}x}}y )N)
r   r   r   r   r4   r         @r   r8   r4   r	   r
   )
FFFFFTTTTFr   )zh%(py6)s
{%(py6)s = %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.bullish_state
}.tolist
}()
} == %(py9)sr   r   r   r   )r   r   r   bullish_stater   r   r    r!   r"   r#   r$   r%   r&   r'   s	            r0   Jtest_structure_state_turns_bullish_on_higher_low_and_bearish_on_lower_highr:      s    HHGHE)%aqAI""q"))q)+q/qq+/qqqqq+/qqqqqqq9qqq9qqq"qqq)qqq+qqq/qqqqqqqqqr2   c            
         t        j                  t        d      5  t        t	        j
                  ddg      dd       d d d        t        t	        j
                  dddt        j                  ddg      dd      } | j                  }|j                  } |       }| }|sdd	t        j                         v st        j                  |       rt        j                  |       nd	t        j                  |      t        j                  |      t        j                  |      d
z  }t        t        j                  |            d x}x}x}}| j                   }|j                  } |       }| }|sdd	t        j                         v st        j                  |       rt        j                  |       nd	t        j                  |      t        j                  |      t        j                  |      d
z  }t        t        j                  |            d x}x}x}}| j"                  }|j                  } |       }| }|sdd	t        j                         v st        j                  |       rt        j                  |       nd	t        j                  |      t        j                  |      t        j                  |      d
z  }t        t        j                  |            d x}x}x}}y # 1 sw Y   xY w)Nz
at least 1matchg      ?r4   r   r	   r
   zbassert not %(py6)s
{%(py6)s = %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.higher_low
}.any
}()
}r   )r   r   r   r   zbassert not %(py6)s
{%(py6)s = %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.lower_high
}.any
}()
}zeassert not %(py6)s
{%(py6)s = %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.bullish_state
}.any
}()
})pytestraises
ValueErrorr   r   r   nanr5   anyr!   r"   r   r#   r$   r%   r&   r   r9   )r   r)   r*   r+   r-   @py_format8s         r0   Itest_score_structure_rejects_invalid_windows_and_ignores_plateaus_and_nanrD   %   s   	z	6!"((C:"6QaH 
7 *
#sCc23!1I ##)#'')')))))))))))y)))y)))#)))'))))))))))##)#'')')))))))))))y)))y)))#)))'))))))))))&&,&**,*,,,,,,,,,,,y,,,y,,,&,,,*,,,,,,,,,, 
7	6s   $K%%K/c                  `   t        j                  g d      } t        | dd      }|j                  }|j                  } |       }g d}||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      t        j                  |      t        j                  |      d	z  }d
d|iz  }t        t        j                  |            d x}x}x}x}}y )N)r   r   r   r   r   r   r   r	      r
   )FFFFFFTr   r   r   r   r   r   r   r'   s	            r0   @test_asymmetric_pivot_is_emitted_on_the_requested_right_hand_barrG   2   s    HH89E)%aqAI\&&\&(\,\\(,\\\\\(,\\\\\\\9\\\9\\\\\\&\\\(\\\,\\\\\\\\\r2   c                     t        j                  g dg dg dd      } dddd}t        | j                         |t	        j
                  d      | d	   j                         | d
   j                         t	        j                  g d      t	        j                  g d            }t        | j                         |t	        j
                  d      | d	   j                         | d
   j                         t	        j                  g d            }|d   }|j                  } |       }g 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                  } |       }g 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                  } |       }g 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}}y )Ng      i@      I@rJ         Y@g     @Y@g     Y@)activation_scoreclosehighrL         @      )!i_long_entry_activation_threshold i_long_exit_activation_threshold-i_long_exit_activation_confirmation_threshold   rN   rO   )TTTFFT)
entry_gateadditional_exit)TFTrW   execute_entryFTFr   zE%(py5)s
{%(py5)s = %(py3)s
{%(py3)s = %(py1)s.tolist
}()
} == %(py8)spy1py3py5py8assert %(py10)spy10execute_exitFFF)pd	DataFramer   copyr   zerosto_numpyr   r   r   r    r$   r%   r&   )dfparamssignalsblocked@py_assert0@py_assert2@py_assert4r-   @py_assert6@py_format9@py_format11s              r0   Btest_structure_overlay_gates_entries_and_closes_existing_positionsru   :   sc   	/&% 
B .3,19?F  
	6288A;7(<(<(>6
@S@S@U88./!56G
  
	6288A;7(<(<(>6
@S@S@U88/0G
 ?#D#**D*,D0DD,0DDDDD,0DDDD#DDD*DDD,DDD0DDDDDDDD>"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CCCC?#E#**E*,E0EE,0EEEEE,0EEEE#EEE*EEE,EEE0EEEEEEEEEr2   c                     t        j                  t        j                  g d      g dg dg dd      } ddddd	}t        j                  t
        d
      5  t        | j                         |t        j                  d      | d   j                         | d   j                         t        j                  ddg             d d d        t        j                  t
        d      5  t        | j                         |t        j                  d      | d   j                         | d   j                         t        j                  ddg             d d d        t        | j                         |t        j                  d      | d   j                         | d   j                         t        j                  g d            }|d   }|j                  } |       }g 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                  } |       }g 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}}y # 1 sw Y   xY w# 1 sw Y   xY w)N)z2020-01-01 00:002020-01-01 06:00z2020-01-01 12:00rI   rK   )timerM   rN   rO   rL   rP   rQ   rw   )rR   rS   rT   _pine_time_endzentry_gate lengthr<   rU   rN   rO   TrY   zadditional_exit lengthF)rX   rV   rZ   r[   r   r\   r]   rb   rc   rd   re   )rf   rg   to_datetimer>   r?   r@   r   rh   r   ri   rj   r   r   r   r    r$   r%   r&   )
rk   rl   rm   ro   rp   rq   r-   rr   rs   rt   s
             r0   Dtest_overlay_validates_array_lengths_and_respects_the_pine_time_gater{   U   sr   	[\/&%	 
B .3,19?,	F 
z)<	="'')VRXXa["W+:N:N:PRTU[R\ReReRg%'XXtTl%;	= 
> 
z)A	B"'')VRXXa["W+:N:N:PRTU[R\ReReRg*,((E4=*A	C 
C  
	6288A;7(<(<(>6
@S@S@U!56G ?#D#**D*,D0DD,0DDDDD,0DDDD#DDD*DDD,DDD0DDDDDDDD>"D"))D)+D/DD+/DDDDD+/DDDD"DDD)DDD+DDD/DDDDDDDDD 
>	= 
C	Bs   A*M%A*MMM)builtinsr!   _pytest.assertion.rewrite	assertionrewriter   numpyr   pandasrf   r>   strategies.mlp_score_structurer   strategies.strategy_mlp_scoresr   r1   r6   r:   rD   rG   ru   r{    r2   r0   <module>r      sB          D <VVr
-]F6Er2   