+
    0.j  c                       R t ^ RIt^ RIHu Ht ^ RIt^ RIH	t	 ^ RI
Ht / RRbRRbRR	bR
RbR^7bR^bRRbRRbRRbRRbRRbRRbRRbRRR.bRRbRR R!.bt ! R" R#4      tR# )$zUnit tests for strategy engine.N)SignalAction)strategy_enginepriceiP  	ema_shorti  ema_longi  ema_crossoverbullishrsiadxrelative_volumeg333333?atri  price_vs_bbwithin_bands	bb_middlebb_lowerih  bb_upperi8  sma_longi  resistancesi\  historical_volatilityg333333?supportsi  it  c                   >   a  ] tR t^t o R tR tR tR tR tRt	V t
R# )TestStrategyEnginec                   \         P                  ! R \        4      pVP                  p\        P
                  \        P                  \        P                  .q2V9   qD'       g   \        P                  ! RV3RW#34      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p;rC^ qqP                   qV8*  p	^dqV
8*  qI'       d	   V'       g   \        P                  ! RW3RWxV
34      R\        P                  ! V4      R	R\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR
\        P                  ! V4      R\        P                  ! V
4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p;p	;p;rVP"                  q"'       g   RRR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      /,          p\        \        P                  ! V4      4      hRpR# )trendpy0signalpy2py5assert %(py7)spy7Npy1py4py6py8assert %(py10)spy10z*assert %(py2)s
{%(py2)s = %(py0)s.reason
})in)z.%(py2)s
{%(py2)s = %(py0)s.action
} in %(py5)s<=r'   )z2%(py1)s <= %(py6)s
{%(py6)s = %(py4)s.confidence
}z2%(py6)s
{%(py6)s = %(py4)s.confidence
} <= %(py8)s)r   evaluateBASE_INDICATORSactionr   BUYHOLDSELL
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanation
confidencereason)selfr   @py_assert1@py_assert4@py_assert3@py_format6@py_format8@py_assert0@py_assert5@py_assert2@py_assert7@py_format9@py_format11@py_format3s   &             ?C:\xampp\htdocs\tradingbinance\backend\tests\test_strategies.pytest_trend_following_buy+TestStrategyEngine.test_trend_following_buy   s"    ))'?C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,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,    c                   / \         CR ^RR/Cp\        P                  ! RV4      pVP                  p\        P
                  qCV8H  qU'       Eg   \        P                  ! RV3RW434      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      RR\        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MRR	\        P                  ! V4      /,          pR
RV/,          p\        \        P                  ! V4      4      hR;p;rTVP                  p^KqV8  qU'       g   \        P                  ! RV3RW834      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      R\        P                  ! V4      /,          p	RRV	/,          p
\        \        P                  ! V
4      4      hR;p;rXR# )r   r   below_lowermean_reversionr   r   r   r    r   r!   assert %(py8)sr"   Nr   r   r   ==)zG%(py2)s
{%(py2)s = %(py0)s.action
} == %(py6)s
{%(py6)s = %(py4)s.BUY
})>=)z2%(py2)s
{%(py2)s = %(py0)s.confidence
} >= %(py5)s)r)   r   r(   r*   r   r+   r.   r/   r0   r1   r2   r3   r4   r5   r6   )r8   
indicatorsr   r9   r?   r;   @py_format7rB   r:   r<   r=   s   &          rE   test_mean_reversion_oversold/TestStrategyEngine.test_mean_reversion_oversold$   s    QQM=Q
 ))*:JG000000000000000000000000000000000000000000&&&&&&&&&&&&&&&&&&&&&&&&&&&&&rH   c                   \         P                  ! R \        RR/4      pVP                  p\        P
                  q2V8H  qD'       Eg   \        P                  ! RV3RW#34      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      RR\        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MRR\        P                  ! V4      /,          pR	R
V/,          p\        \        P                  ! V4      4      hR;p;rCVP                  p^ qrV8H  qD'       g   \        P                  ! RV3RW'34      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p	\        \        P                  ! V	4      4      hR;p;rGR# )scalping
spread_pctg?r   r   r   r    r   r!   rL   r"   Nr   r   r   rM   zH%(py2)s
{%(py2)s = %(py0)s.action
} == %(py6)s
{%(py6)s = %(py4)s.HOLD
})z2%(py2)s
{%(py2)s = %(py0)s.confidence
} == %(py5)s)r   r(   r)   r*   r   r,   r.   r/   r0   r1   r2   r3   r4   r5   r6   )
r8   r   r9   r?   r;   rQ   rB   r:   r<   r=   s
   &         rE    test_scalping_blocks_high_spread3TestStrategyEngine.test_scalping_blocks_high_spread*   s     ))*oVYGZ[111111111111111111111111111111111111111111%%%%%%%%%%%%%%%%%%%%%%%%%%%%%rH   c                T   \         P                  ! R \        4      p^ q!P                  q2V8*  p^dqSV8*  qd'       d	   V'       g   \        P
                  ! R	WF3R
W#V34      R\        P                  ! V4      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p;p;p;r5R# )ensembler   r    r   r!   r"   r#   r$   Nr&   )z-%(py1)s <= %(py6)s
{%(py6)s = %(py4)s.score
}z-%(py6)s
{%(py6)s = %(py4)s.score
} <= %(py8)s)r   r(   r)   scorer.   r/   r3   r0   r1   r2   r4   r5   )	r8   r   r>   r?   r@   rA   r;   rB   rC   s	   &        rE   test_ensemble_returns_score.TestStrategyEngine.test_ensemble_returns_score/   sz     ))*oF''''''''''''''''''''''''''''''''''rH   c                   \         P                  ! R \        4      pVP                  p\        P
                  q2V8H  qD'       Eg   \        P                  ! R
V3RW#34      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      RR\        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MRR\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR	;p;rCR	# )unknownr   r   r   r    r   r!   rL   r"   NrM   rW   )r   r(   r)   r*   r   r,   r.   r/   r0   r1   r2   r3   r4   r5   )r8   r   r9   r?   r;   rQ   rB   s   &      rE   test_unknown_strategy(TestStrategyEngine.test_unknown_strategy3   s     )))_E111111111111111111111111111111111111111111rH    N)__name__
__module____qualname____firstlineno__rF   rR   rX   r]   ra   __static_attributes____classdictcell__)__classdict__s   @rE   r   r      s#     '&
(2 2rH   r   )__doc__builtinsr0   _pytest.assertion.rewrite	assertionrewriter.   pytest
app.modelsr   app.services.strategy_enginer   r)   r   rc   rH   rE   <module>rs      s    %    # 8U  Y	
 
2 
2 s 
3 >     E5> S  !(2 2rH   