
    iu)                         d Z ddlZddlZddlmZ ddlmZmZ  G d d      Zd Zd Z	d	 Z
d
 Zd Zd Zd Zd Zedk(  r e        yy)u  
Analyse Détaillée des Performances par Pattern
==============================================

Ce script analyse TOUS les patterns du code et affiche:
- Fréquence d'utilisation
- Win Rate
- P&L moyen
- Meilleurs/Pires trades
- Recommandations d'optimisation
    N)defaultdict)datetime	timedeltac                   ,    e Zd ZdZdZdZdZdZdZdZ	dZ
y	)
Colorsz[92mz[93mz[91mz[94mz[96mz[95mz[0mz[1mN)__name__
__module____qualname__GREENYELLOWREDBLUECYANMAGENTARESETBOLD     !./analyze_patterns_performance.pyr   r      s*    EF
CDDGEDr   r   c                      	 t        ddd      5 } t        j                  |       cddd       S # 1 sw Y   yxY w#  g cY S xY w)zCharge l'historique des tradesztrade_history.jsonrutf-8encodingN)openjsonloadfs    r   load_trade_historyr        sA    &g> 	 !99Q<	  	  	 	s   ; /	; 8; ; Ac                  ~    	 t        ddd      5 } | j                         cddd       S # 1 sw Y   yxY w#  g cY S xY w)zCharge les logs du botztrading_bot.logr   r   r   N)r   	readlinesr   s    r   	load_logsr#   )   s?    #S7; 	!q;;=	! 	! 	!	s   6 *	6 36 6 <c                    t        d       }| D ]  }|j                  dd      }|j                  dd      }||   }|dxx   dz  cc<   |dxx   |z  cc<   |d	   j                  |       |dkD  r|d
xx   dz  cc<   n|dxx   dz  cc<   |d   ||d   d   kD  r||d<   |d   ||d   d   k  r||d<   d|v sd|v s	 t        j                  |d         }t        j                  |d         }||z
  j                         dz  }|dxx   |z  cc<    |j                         D ]F  \  }}|d   dkD  s|d
   |d   z  dz  |d<   |d   |d   z  |d<   |d   dkD  s7|dxx   |d   z  cc<   H |S #  Y fxY w)z$Analyse les performances par patternc            	          ddddg dd d dS )Nr   g        )countwinslosses	total_pnltradesavg_duration_minutes
best_tradeworst_trader   r   r   r   <lambda>z-analyze_pattern_performance.<locals>.<lambda>4   s!     !	) r   patternUNKNOWNpnl_pctr   r&      r)   r*   r'   r(   r,   r-   
entry_time	exit_time<   r+   d   win_rateavg_pnl)r   getappendr   fromisoformattotal_secondsitems)	r*   pattern_statstrader/   r1   statsentryexitdurations	            r   analyze_pattern_performancerD   2   s    	! 	M  ))Iy1))Iq)g&g!kg%hu%Q;&MQM(Oq O &'E,4G	4R*R"'E,'7U=5I)5T+T#(E-  5 [E%9 ..u\/BC--eK.@A 5L779B>,-9-5> (--/ @>A!&vw!?3 FE*$[1E'NBE)+,q0,-w?-@ s   ?AE00E5c                     i } 	 t        ddd      5 }|j                         }t        j                  d|      }|D ](  }|j	                  d      j                         }ddi| |<   * t        j                  d	|      }|D ]  }|j	                  d      }|| vsddi| |<   ! 	 d
d
d
       | S # 1 sw Y   | S xY w# t        $ r9}t        t        j                   d| t        j                          Y d
}~| S d
}~ww xY w)u;   Extrait les définitions de patterns depuis ai_predictor.pyzai_predictor.pyr   r   r   zis_(\w+)\s*=\s*\(r2   definedTz#item\.pattern\s*=\s*["\'](\w+)["\']Nz Erreur lecture ai_predictor.py: )r   readrefinditergroupupper	Exceptionprintr   r   r   )patternsr   contentpattern_matchesmatchpattern_namepattern_assignses           r   %extract_pattern_definitions_from_coderU   h   s   HP#S7; 	?qffhG !kk*>HO( ;${{1~335*3T):&;
 !kk*PRYZO( ?${{1~x/.7->H\*?	?& O'	?& O  P<QC~NOOOPs;   B8 BB+	B+!B8 +B50B8 5B8 8	C:.C55C:c                      ddddddddddd	d
S )u8   Retourne la priorité des patterns (ordre d'évaluation)r   r2               c   )CREUX_REBOUNDSTRONG_UPTRENDEARLY_BREAKOUTCONSOLIDATION_BREAKOUTEMA_BULLISHCROSSOVER_IMMINENTSQUEEZE_BREAKOUTVOLUME_REVERSALRSI_REVERSALPULLBACKOTHERr   r   r   r   get_pattern_priorityri      s/     "# r   c                 x   |d   }|d   }|d   }|dk\  rt         j                  }d}nB|dk\  rt         j                  }d}n*|dk\  rt         j                  }d	}nt         j                  }d
}t        d| d t         j                          t        | t         j                   d|  t         j                   d|        t        | d t         j                          t        d|        t        d|dk\  rdnd d|dd|d    d|d    d	       t        d|dd       t        d|d   dd       |d   d kD  r|d   dz  }t        d!|dd"|d   d#d$       |d%   r|d%   }	t        d&|	d'    d|	d(   dd       |d)   r|d)   }
t        d*|
d'    d|
d(   dd       | |v rt        d+       y-t        d,       y-).u!   Affiche les détails d'un patternr7   r8   r&   r5   u   ✅ EXCELLENT2   u   ✓ BON(   u   ⚠️ MOYENu
   ❌ FAIBLE
u   ────────────────────────────────────────────────────────────────────────────────z	Pattern:  u     📊 Trades: z     🟢   🔴z Win Rate: .1fz% (r'   zW / r(   zL)u     💰 P&L Moyen: +.2f%u     📈 P&L Total: r)   r+   r   u     ⏱️  Durée moy: zh (z.0fzmin)r,   u     🏆 Meilleur: symbolr1   r-   u     💔 Pire: u     ✅ Défini dans le codeu;     ⚠️ Non trouvé dans ai_predictor.py (ancien pattern?)N)r   r   r   r   r   rM   r   r   )r/   r@   code_patternsr7   r8   r&   colorstatushoursbestworsts              r   print_pattern_detailsr{      s   Z HIG'NE 2~ 	R	R

	Bugj\&,,
01	UGFKK=	'6<<.&
JK	UGJ<~
./ 
OE7
#$	BRvV4K~SQVW]Q^P__cdijrdscttv
wx	wtnA
./	u[1$7q
9:#$q(,-2&uSkU;Q5RSV4WW[\] \\"!$x.!14	?42HJK]m$eHo.ai0@/FaHI -*,KMr   c                 p   t        dt        j                   d t        j                          t        t        j                   t        j                   dt        j                          t        t        j                   d t        j                   d       | j                         D cg c]  \  }}|d   dk  s|d   dk\  s||f }}}|rot        t        j                   dt        j                          t        |d	 
      D ](  \  }}t        d| d|d   dd|d    d|d   dd	       * t                | j                         D cg c]$  \  }}d|d   cxk  rdk  sn n|d   dk\  s!||f& }}}|rot        t        j                   dt        j                          t        |d 
      D ](  \  }}t        d| d|d   dd|d    d|d   dd	       * t                | j                         D cg c]  \  }}|d   dk\  s||f }}}|rot        t        j                   dt        j                          t        |d 
      D ](  \  }}t        d| d|d   dd|d    d|d   dd	       * t                | j                         D cg c]  \  }}|d   dk  s||f }}}|rbt        t        j                   dt        j                          t        |d 
      D ]  \  }}t        d| d|d    d        t                yyc c}}w c c}}w c c}}w c c}}w )z*Affiche les recommandations d'optimisationrm      ════════════════════════════════════════════════════════════════════════════════zRECOMMANDATIONS D'OPTIMISATIONr7      r&   r\   u-   ❌ PATTERNS À DÉSACTIVER (Win Rate < 30%):c                     | d   d   S Nr2   r7   r   xs    r   r.   z'print_recommendations.<locals>.<lambda>   s    !A$zBR r   )key      • z: rq   z% WR, z	 trades, r8   rr   z% avg-   u0   ⚠️  PATTERNS À OPTIMISER (Win Rate 30-45%):c                     | d   d   S r   r   r   s    r   r.   z'print_recommendations.<locals>.<lambda>   s    AaDDT r   r5   u)   ✅ PATTERNS EXCELLENTS (Win Rate > 60%):c                     | d   d    S r   r   r   s    r   r.   z'print_recommendations.<locals>.<lambda>   s    QqT*EUDU r   u,   ℹ️  PATTERNS PEU UTILISÉS (< 5 trades):c                     | d   d   S Nr2   r&   r   r   s    r   r.   z'print_recommendations.<locals>.<lambda>       !A$w- r   z trades seulementN)rM   r   r   r   r   r=   r   sortedr   r   r   )	r>   psweak_patternsr/   r@   medium_patternsstrong_patternsrare_patternss	            r   print_recommendationsr      sE   	Bv{{mJ<~
67	V[[M&++&DV\\N
ST	V[[M*fll^2
67 )6(;(;(=h1:QSASXYZaXbfgXgaVhMhI&,,XY$]8RS 	{NGUGG9BuZ'8&=VE'NCSS\]bcl]mnr\ssxyz	{ +8*=*=*?p$!Q2:C[Y[C[`abi`jno`o1vpOpOPVP\P\~^_$_:TU 	{NGUGG9BuZ'8&=VE'NCSS\]bcl]mnr\ssxyz	{ +8*=*=*?W$!Q1Z=TVCV1vWOWG~VW$_:UV 	{NGUGG9BuZ'8&=VE'NCSS\]bcl]mnr\ssxyz	{ )6(;(;(=P17aaVPMPI&,,XY$]8OP 	JNGUGG9BuW~&66GHI	J	 3 i q X Qs<   ,L =L L L&*L&6L&L,L,!L22L2c                     t        dt        j                   d t        j                          t        t        j                   t        j                   dt        j                          t        t        j                   d t        j                   d       t               } t               }| s-t        t        j                   dt        j                          y t        dt        |        d       t        dt        |       d       t        |       }t        |j                         d	 d
      }|D ]  \  }}t        |||        t        |       t        t        j                   d t        j                          t        t        j                   t        j                   dt        j                          t        t        j                   d t        j                   d       t        |       }t        d | D              }|dkD  r||z  dz  nd}t        d | D              }	|dkD  r|	|z  nd}
t        d|        t        |dk\  rdnd d|dd       t        d|
dd       t        d|	dd       t        dt        |              t        |j!                               }t        |j!                               }||z
  }|rWt        dt        j"                   dt        |       dt        j                          t        |      D ]  }t        d|         t        dt        j                   d t        j                   d       y ) Nrm   r}   u2   ANALYSE DÉTAILLÉE DES PATTERNS - RAPPORT COMPLETu!   ❌ Aucun trade dans l'historiqueu   📊 Analyse de z tradesu   📝 u     patterns définis dans le code
c                     | d   d   S r   r   r   s    r   r.   zmain.<locals>.<lambda>  r   r   T)r   reverseu   RÉSUMÉ GLOBALc              3   L   K   | ]  }|j                  d d      dkD  sd  yw)r1   r   r2   Nr9   .0ts     r   	<genexpr>zmain.<locals>.<genexpr>  s"     B1!%%	1*=*AQBs   $$r   r6   c              3   @   K   | ]  }|j                  d d        yw)r1   r   Nr   r   s     r   r   zmain.<locals>.<genexpr>  s     8AAEE)Q'8s   u   📊 Total Trades: rk   ro   rp   z Win Rate Global: rq   rs   u   💰 P&L Moyen: z+.3fu   📈 P&L Total: rr   u   🎯 Patterns Utilisés: u   ⚠️  u)    patterns définis mais jamais utilisés:r   )rM   r   r   r   r   r    rU   r   lenrD   r   r=   r{   r   sumsetkeysr   )r*   ru   r>   sorted_patternsr/   r@   total_trades
total_wins	global_wrr)   r8   active_patternsdefined_patternsunused_patternsr   s                  r   mainr      s   	Bv{{mJ<~
67	V[[M&++&XY_YeYeXf
gh	V[[M*fll^2
67  !F9;M=fll^LM	S[M
12	E#m$%%F
GH 07M ]0028OY]^O * =gum<= -( 
V[[M*fll^
45	V[[M&++ofll^
DE	V[[M*fll^2
67v;LBBBJ5AA5El*c11I888I*6*:i,&G	~
./	yBVF33EiPS_TU
VW	WTN!
,-	Yt,A
./	%c-&8%9
:; -,,./O=--/0&8O6==/#o*>)??hioiuiuhvwx( 	!AGA3- 	! 
Bv{{mJ<~R
89r   __main__)__doc__r   rH   collectionsr   r   r   r   r    r#   rD   rU   ri   r{   r   r   r   r   r   r   <module>r      sc   
  	 # ( 3l6"/Nd$N8:v zF r   