
    {Aj	                    P    d dl mZ d dlZd dlmZ d dlmZmZ ddZd Z	d Z
d ZdS )    )annotationsN)Path)summarize_strategy_performancerecommend_strategy_actionspathr   rowdictreturnNonec                    | j                             dd           |                     dd          5 }|                    t	          j        |          dz              d d d            d S # 1 swxY w Y   d S )NT)parentsexist_okazutf-8)encoding
)parentmkdiropenwritejsondumps)r   r   fhs      .tests/test_tradingview_strategy_performance.py_appendr   	   s    KdT222	3	)	) )R
C4'((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )s   +A,,A03A0c                   | dz  dz  dz  }t          |ddddd           t          |dddd	d           t          |dd
ddd           t          |           }|d         d         dk    sJ |d         d         dk    sJ |d         d         d         dk    sJ |d         d         d         dk    sJ |d         d         d         dk    sJ |d         d         d         dk    sJ d S )Nexperimentstradingview_paper_bridgetrade_journal.jsonl
paper_exitgaussian_channel_v1BTC0.50eventstrategy_idcoinnet_pnl_usdz-0.10squeeze_breakout_1hETH0.20overallclosed_trades   r'   z0.60
strategies   wins   winrate_pctz50.00coinsz0.40)r   r   )tmp_pathjournalsummarys      r   4test_strategy_performance_summarizes_winrate_and_pnlr7      sA   &)CCF[[GG|<Q[`qwxxyyyG|<Q[`qxyyzzzG|<Q[`qwxxyyy,X66G9o.!33339m,6666< !67HAMMMM< !67?1DDDD< !67F'QQQQ7E"=1V;;;;;;    c                    | dz  dz  dz  }t          |ddddd           t          |           }t          |d	
          }|d         dk    sJ d S )Nr   r   r   r   small_sampler!   r"   r#   r-   min_closed_tradescontinue_paper_too_few_trades)r   r   r   )r4   r5   r6   recss       r   ?test_strategy_recommendation_requires_sample_size_before_shadowr?      sr    &)CCF[[GG|NTYjpqqrrr,X66G%gCCCD#BBBBBBBr8   c           	     @   | dz  dz  dz  }t          g d          D ]\  }}t          |ddd|d           t          g d	          D ]\  }}t          |dd
d|d           t          t          |           d          }|d         dk    sJ |d
         dk    sJ d S )Nr   r   r   )z0.30r*   z0.10r   goodr!   r#   )z-0.30z-0.20z0.01badSOLr-   r;   shadow_candidate_not_livepause_or_rework)	enumerater   r   r   )r4   r5   ipnlr>   s        r   Ctest_strategy_recommendation_flags_positive_and_negative_strategiesrI   )   s    &)CCF[[G44455 l l3<PUfijjkkkk66677 k k3<uehiijjjj%&DX&N&NbcdddD<66666;+++++++r8   )r   r   r   r	   r
   r   )
__future__r   r   pathlibr   *src.tools.tradingview_strategy_performancer   r   r   r7   r?   rI    r8   r   <module>rN      s    " " " " " "        q q q q q q q q) ) ) )< < < C C C
, 
, 
, 
, 
,r8   