
    ,zKjI                        d dl mZ d dlZd dlmc mZ d dlZd dl	m	Z	m
Z
mZ d dlmZ d dlmZmZmZmZmZ d dlmZ d Zd Zd	 Zd
 Zd ZdS )    )annotationsN)datetimetimezone	timedelta)Path)classify_tradingview_impulseload_tradingview_latestnormalize_tradingview_contextrank_tradeable_coinstradingview_blockers)build_selection_reportc                 :
   t          dddddt          j                  } t          dd| t	          d	
          z
                                  ddddddddigdddd|           }t          |d          }|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        }|j        }|j        }	d}
 |	|
          }||k    }|s!t          j	        d|fd||f          dt          j                    v st          j        |          rt          j        |          ndt          j        |          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}	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+}||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 )-N           r   tzinfoSOLSOLUSDT   minutesbearishz0.82conflictweaknormalhigher_tf_downignoredTzbuy nowtradingview_mcp)coinsymboltsbias
confidencetrend_alignmentvolume_statevolatility_stateno_trade_reasonsfree_text_commandresearch_onlysourcenowlong)side==)z,%(py2)s
{%(py2)s = %(py0)s.coin
} == %(py5)sctx)py0py2py5zassert %(py7)spy7)z%(py2)s
{%(py2)s = %(py0)s.confidence
} == %(py12)s
{%(py12)s = %(py8)s
{%(py8)s = %(py6)s
{%(py6)s = %(py4)s.confidence
}.__class__
}(%(py10)s)
})r4   r5   py4py6py8py10py12zassert %(py14)spy14tv_bias_bearishin)z%(py1)s in %(py3)sblockers)py1py3zassert %(py5)sr6   tv_mtf_conflicttv_volume_not_confirmedtv_no_trade_higher_tf_down)r   r   utcr
   r   	isoformatr   r!   
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanationr%   	__class__)r.   r3   rA   @py_assert1@py_assert4@py_assert3@py_format6@py_format8@py_assert5@py_assert7@py_assert9@py_assert11@py_format13@py_format15@py_assert0@py_assert2@py_format4s                    T/home/agent/projects/CryptoTradingBot/Crypto_Agent/tests/test_tradingview_context.py>test_tradingview_context_whitelists_and_blocks_conflicted_longra      s   
4Ar1X\
:
:
:C
'Yq))))4466%$-	4/@A&#) )   C $Cf555H8u8u8u338u>=S^=^5=f=55f===>===========>=============3=====3======>===========S=====S======^====5====f======================================(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((($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00000000000000000'3'83333333333'833333'333333333338333338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    c                   t          dddddt          j                  }| dz  }|                    t	          j        dd	d
|                                ddddddd|                                dddddgi                     t          ||          }t          g ddddd|          }t          |          }d	dh}||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         }
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   r   r   r   r   r   tradingview_latest.jsoncoinsBTCBTCUSDTr   r   r   g?)r!   r"   r#   r$   r&   r'   r%   ETHETHUSDTbullishalignedbreakoutg?r-   )rf   rh   r   g      ?g?g?)candidate_coinspaper_pnl_by_cointv_contextsr1   )z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)ssetcontexts)r4   rB   rC   r9   zassert %(py8)sr:   z%(py1)s == %(py4)srB   r8   assert %(py6)sr9   )r   r   rG   
write_textjsondumpsrH   r	   r   rp   rI   rJ   rK   rL   rM   rN   rO   rP   )tmp_pathr.   tvrq   rankedr^   rW   rS   @py_format7@py_format9r]   rT   @py_format5s                r`   Ctest_load_tradingview_latest_and_rank_prefers_evidence_then_contextr~   &   s   
4Ar1X\
:
:
:C	-	-BMM$*g)3==??Ijt  GO  _b  	c  	c)3==??Ijs  FP  `c  	d  	d(    	 	 	 'rs333H!2G2G2Gcfor{~[[  NV  W  W  WFx==*UEN*=N**********=N************3*****3*************x*****x******=****N***************************!9999rb   c                    t          dddddt          j                  } t          dd| t	          d	
          z
                                  dddddddd
|           }t          |dd          }|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         }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          }d!}||u }|slt          j        d"|fd#||f          t          j	        |          t          j	        |          dz  }dd|iz  }t          t          j        |                    d x}x}}|d$         }d!}||u }|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   r   r   r   r   r   rf   rg      r   rj   z0.78rk   rl   squeezeTr    )
r!   r"   r#   r$   r%   r&   r'   r(   r+   r,   r-   r/     r0   max_age_secondscategorybuy_opportunityr1   rr   rs   rt   r9   action#paper_candidate_if_other_gates_passlive_order_allowedFisz%(py1)s is %(py4)smainnet_signed_actionr   r   rG   r
   r   rH   r   rI   rJ   rN   rO   rP   r.   r3   impulser]   rT   r^   r}   r{   s           r`   Ktest_tradingview_impulse_classifies_buy_opportunity_without_live_permissionr   4   sE   
4Ar1X\
:
:
:C
'Yq))))4466$"%#) )   C +3VTRRRG: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3333333338E EE EEEEEEEEEEE EEEEEEEEEE EEEEEEEEEEEEEEEEEEEEEEEEEEEE'(1E1(E1111111111(E11111(1111E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*+4u4+u4444444444+u44444+4444u44444444444444444444444444444rb   c                    t          dddddt          j                  } t          dd| t	          d	
          z
                                  dddddgddd
|           }t          |dd          }|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}|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 S )#Nr   r   r   r   r   r   rh   ri   r   r   r   z0.80r   r   r   Tr    )
r!   r"   r#   r$   r%   r&   r'   r)   r+   r,   r-   r/   r   r   r   
avoid_longr1   rr   rs   rt   r9   r>   reasonsr?   )z%(py1)s in %(py4)srF   r   r   s           r`   <test_tradingview_impulse_demotes_bearish_or_no_trade_contextr   K   s   
4Ar1X\
:
:
:C
'Yq))))4466% -.#) )   C +3VTRRRG:.,.,..........,.........,...........................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'=79+=='+==========='+======'====+==============================rb   c                $   | dz  dz  }|dz  }|                     d           |dz                      t          j        ddd	d
          dz              | dz  dz  dz  }|j                             d           |                    t          j        dddt          j        t          j                  	                                ddddddgi                     t          ddg||          }|d         }d}||u }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }dd|iz  }	t          t          j        |	                    d x}x}}|d         }d}||u }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }dd|iz  }	t          t          j        |	                    d x}x}}|d         }d}||u }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }dd|iz  }	t          t          j        |	                    d x}x}}|d          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$         d         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 )&Nruntimeexperiments"candidate_v76_fee_aware_anti_chaseT)parentsztrade_journal.jsonlexitr   z1.5)eventr!   net_pnl_usd
researchrd   re   r   rj   rk   r   r    )r!   r"   r#   r$   r&   r'   r+   r,   rf   )
candidatesruntime_roottv_pathr+   r   r   rs   rt   r9   r   Fr   selected_orderr   r1   rr   tradingview_contextr,   )mkdirru   rv   rw   parentr   r.   r   rG   rH   r   rI   rJ   rN   rO   rP   )
rx   r   antiry   reportr]   rT   r^   r}   r{   s
             r`   2test_coin_selector_outputs_readonly_runtime_reportr   a   s   "]2G99DJJtJ	!!--dj6SXin9o9o.p.psw.wxxx	I	
	*-F	FBIOODO!!!MM$*g)S[S_`h`lSmSmSwSwSySy  DM  bk  }E  X\  hy  )z  )z  ({  |  }  }  ~  ~  ~#u~G]_```F/"*d*"d**********"d*****"****d***************************&'050'50000000000'500000'00005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)*3e3*e3333333333*e33333*3333e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"#A&/%/&%//////////&%/////&////%///////////////////////////'(/9N=NN9=NNNNNNNNNNN9=NNNNNN9NNNN=NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNrb   )
__future__r   builtinsrK   _pytest.assertion.rewrite	assertionrewriterI   rv   r   r   r   pathlibr    src.research.tradingview_contextr   r	   r
   r   r   #src.tools.tradingview_coin_selectorr   ra   r~   r   r   r    rb   r`   <module>r      s*   " " " " " "               2 2 2 2 2 2 2 2 2 2       n  n  n  n  n  n  n  n  n  n  n  n  n  n F F F F F F4 4 46  5 5 5.> > >,O O O O Orb   