
    ixB                     H   d Z ddlZddlZddlmZ ddlmZ ddlmZmZm	Z	 dZ
dZg dZd	ee   fd
Zdee   d	eeee   f   fdZdee   d	eeee   f   fdZdee   d	eeee   f   fdZd	ee   fdZdee   d	efdZdededefdZdededefdZd Zedk(  r e        yy)u   
Analyse complète de TOUS les patterns de trading pour optimisation systématique.
Objectif: Identifier les patterns qui fonctionnent bien vs ceux qui nécessitent des optimisations.
    N)datetime)defaultdict)DictListTupleztrading_bot.logz)trade_history_backup_20260118_185741.json)STRONG_UPTRENDEARLY_BREAKOUTCONSOLIDATION_BREAKOUTEMA_BULLISHCROSSOVER_IMMINENTSQUEEZE_BREAKOUTVOLUME_REVERSALRSI_REVERSALEND_OF_CYCLEACTIVE_CRASHRSI_TRAPSTRONG_DOWNTRENDHIGH_SCORE_OVERRIDEIMMEDIATE_DIPCORRECTION_BUYCREUX_TOO_DEEPCREUX_REBOUNDCREUX_WAITINGPULLBACKFALLING_KNIFE_BLOCKEDNEUTRALreturnc                      	 t        t        dd      5 } | j                         }ddd       t        dt	               d       |S # 1 sw Y   #xY w# t
        $ r}t        d|        g cY d}~S d}~ww xY w)zCharge tous les logs du bot.rutf-8encodingN   ✅ u    lignes de logs chargéesu   ❌ Erreur lecture logs: )openLOG_FILE	readlinesprintlen	Exception)flogses      ./analyze_all_patterns.py	load_logsr.   2   sv    (C'2 	!a;;=D	!SYK89:	! 	!  )!-.	s3   A A!A AA 	A6A1+A61A6r+   c                 H   t        t              }t        j                  d      }| D ]x  }|j	                  |      }|s|j                  d      }t        |j                  d            }|j                  d      }||   j                  |||j                         d       z |S )u|   
    Extrait tous les signaux générés par pattern.
    Format log: 🤖 Signal IA: SYMBOL - Score=XX Pattern=PATTERN
    z/Signal IA: (\w+) - Score=([\d.]+) Pattern=(\w+)         )symbolscoreline)	r   listrecompilesearchgroupfloatappendstrip)r+   signalspattern_signalr5   matchr3   r4   patterns           r-   extract_signals_by_patternrB   =   s    
 $GZZ RSN %%d+[[^F%++a.)Ekk!nGG## 

%  N    c           	         t        t              }t        j                  d      }| D ]  }|j	                  |      }|s|j                  d      }|j                  d      }|j                  d      }t        |j                  d            }t        |j                  d            }	t        |j                  d            }
||   j                  ||||	|
d        |S )	u   
    Extrait les détections de patterns avec leurs indicateurs techniques.
    Format: 🎯 SYMBOL: Pattern=PATTERN Status=STATUS EMA_diff=XX% Mom3=XX% RSI=XX
    uY   🎯 (\w+): .*Pattern=(\w+) Status=(\w+) EMA_diff=([-\d.]+)% Mom3=([-\d.]+)% RSI=([\d.]+)r0   r1   r2            )r3   statusema_diff
momentum_3rsi)r   r6   r7   r8   r9   r:   r;   r<   )r+   
detectionspattern_regexr5   r@   r3   rA   rH   rI   mom3rK   s              r-   extract_pattern_detectionsrO   U   s    
 T"J JJdM  $$T*[[^Fkk!nG[[^FU[[^,HQ(DA'Cw&&  $"( $ rC   c                     t        t              }g d}|D ]d  }t        j                  | dt        j                        }| D ]6  }|j                  |      s||   j                  |j                                8 f |S )u{   
    Extrait les patterns qui ont BLOQUÉ des achats (sécurité).
    Format: ⚠️ SYMBOL: PATTERN BLOQUÉ - raison
    )r   r   r   r   r   u	   .*BLOQUÉ)r   r6   r7   r8   
IGNORECASEr9   r<   r=   )r+   blocksblocking_patternsrA   rM   r5   s         r-   extract_blocking_patternsrT   u   s~    
 F % 5

gYi#8"--H 	5D##D)w&&tzz|4	55 MrC   c                      	 t        t        dd      5 } t        j                  |       }ddd       t	        dt               d       |S # 1 sw Y   #xY w# t        $ r}t	        d|        g cY d}~S d}~ww xY w)zCharge l'historique des trades.r   r    r!   Nr#   u    trades chargés depuis JSONu   ⚠️  Pas d'historique JSON: )r$   TRADE_HISTORY_FILEjsonloadr'   r(   r)   )r*   tradesr,   s      r-   load_trade_historyrZ      sy    $cG< 	"YYq\F	"S[M!=>?	" 	"  /s34	s3   A A!A AA 	A;!A60A;6A;rY   c                 "   | si S t        d | D              }t        d | D              }||z   }|dkD  r||z  dz  nd}t        d | D              }|dkD  rt        d | D              |z  nd}|dkD  rt        d | D              |z  nd}|||||||dS )	z"Calcule les statistiques globales.c              3   L   K   | ]  }|j                  d d      dkD  sd  ywpnlr   r0   Nget.0ts     r-   	<genexpr>z)calculate_global_stats.<locals>.<genexpr>   s!     8QAEE%Oa$7q8   $$c              3   L   K   | ]  }|j                  d d      dk  sd  ywr]   r_   ra   s     r-   rd   z)calculate_global_stats.<locals>.<genexpr>   s!     :qaeeE1o&9:re   r   d   c              3   @   K   | ]  }|j                  d d        ywr^   r   Nr_   ra   s     r-   rd   z)calculate_global_stats.<locals>.<genexpr>   s     4AEE%O4s   c              3   l   K   | ],  }|j                  d d      dkD  s|j                  d d       . ywri   r_   ra   s     r-   rd   z)calculate_global_stats.<locals>.<genexpr>   s+     IaQUU5!_q5H!%%q/I   44c              3   l   K   | ],  }|j                  d d      dk  s|j                  d d       . ywri   r_   ra   s     r-   rd   z)calculate_global_stats.<locals>.<genexpr>   s+     JqaeeE1o6I155?Jrk   )total_tradeswinslosseswin_rate	total_pnlavg_winavg_loss)sum)rY   rn   ro   totalrp   rq   rr   rs   s           r-   calculate_global_statsrv      s    	8&88D:F::F6ME',qyus"aH4V44ITX[\T\cI6IIDPbcGW]`aWasJFJJVSghH  rC   r>   rL   rR   c                    t        d       t        d       t        d       t        d       t        d       t        d       t        | j                         d d	      }|D ]  \  }}t        |      d
k(  rt        d|        t        dt        |              |D cg c]  }|d   	 }}t	        |      t        |      z  }t        |      }	t        |      }
t        d|dd|	dd|
dd       ||v r||   r||   }t	        d |D              t        |      z  }t	        d |D              t        |      z  }t	        d |D              t        |      z  }t        d       t        d|d       t        d|dd       t        d|dd       |D cg c]  }|d   	 }}d
dlm}  ||      j                  d      }|r8dj                  |D cg c]  \  }}| d | d! c}}      }t        d"|        t                 t        d#       t        d$       t        d       t        |j                         d% d	      }|D ]Z  \  }}t        |      d
k(  rt        d&|        t        d't        |              |rt        d(|d
   d)d*  d+       t                \ t        d#       t        d,       t        d       t        | j                               t        |j                               z  }t        D cg c]  }||vs|d-k7  s| }}|r |D ]  }t        d.|         t                y)t        d/       t                y)c c}w c c}w c c}}w c c}w )0u3   Affiche l'analyse détaillée de tous les patterns.   
════════════════════════════════════════════════════════════════════════════════u7     📊 ANALYSE COMPLÈTE - TOUS LES PATTERNS DE TRADING   ════════════════════════════════════════════════════════════════════════════════   
┌─────────────────────────────────────────────────────────────────┐uJ   │ 🟢 PATTERNS ACTIFS (Génération de signaux d'achat)             │u   └─────────────────────────────────────────────────────────────────┘
c                     t        | d         S Nr0   r(   xs    r-   <lambda>z(print_pattern_analysis.<locals>.<lambda>   s    C!I rC   T)keyreverser   u   🎯 u      • Signaux générés: r4   u      • Score moyen: .1fz (min: z, max: )c              3   &   K   | ]	  }|d      yw)rK   N rb   ds     r-   rd   z)print_pattern_analysis.<locals>.<genexpr>   s     0q!E(0   c              3   &   K   | ]	  }|d      yw)rI   Nr   r   s     r-   rd   z)print_pattern_analysis.<locals>.<genexpr>   s     5A!J-5r   c              3   &   K   | ]	  }|d      yw)rJ   Nr   r   s     r-   rd   z)print_pattern_analysis.<locals>.<genexpr>   s     7a!L/7r   u      • Indicateurs moyens:z      - RSI: z      - EMA diff: +.2f%z      - Momentum 3: r3   )Counterr2   z,  (zx)u      • Symboles fréquents: u   ┌─────────────────────────────────────────────────────────────────┐uK   │ 🔴 PATTERNS DE BLOCAGE (Sécurité - empêchent les achats)       │c                     t        | d         S r|   r}   r~   s    r-   r   z(print_pattern_analysis.<locals>.<lambda>   s    S1Y rC   u   🚫 u      • Blocages effectués: u      • Exemple: Nrg   z...uK   │ ⚪ PATTERNS INACTIFS (Non détectés récemment)                   │r   u      • u%      ✅ Tous les patterns sont actifs!)r'   sorteditemsr(   rt   minmaxcollectionsr   most_commonjoinsetkeysALL_PATTERNS)r>   rL   rR   active_patternsrA   signal_listsscores	avg_score	min_score	max_scoredetavg_rsiavg_emaavg_momsymbolsr   top_symbolssymcnttop_strrS   
block_listactive_pattern_namespinactives                             r-   print_pattern_analysisr      s    

	
CD	* 
  X  Y	
VW	  X  YW]]_2EtTO / #{q gY +C,<+=>? '22!G*22K#f+-	K	K	$YsO79S/QZ[^P__`ab j Z%8W%C0C003s8;G555C@G7377#c(BG.0M'#/0&wtnA67(a89 )4411X;44'g&2215ii; OxsCC53%r!2 OPG0	:;G#L 
  V  W	
WX	  X  Yv||~3FPTU0 z?agY ,S_,=>? $Z]4C%8$9=> 
  V  W	
WX	  X  Yw||~.V[[]1CC'\a14H+HQR[^\H\ 	'GGG9%&	'
 
G 	56	G 3( 5 !P> ]s$   !MMM	M#M#M#c                    t        d       t        d       t        d       g }d| v rL| d   }|rEt        d |D              t        |      z  }|j                  ddt        |       d|dd	d
dd       d| v rld|v rh|d   }|ra|D cg c]  }|d   dk  s| }}t        |      t        |      dz  kD  r/|j                  ddt        |       dt        |       dddd       d| v rud|v rq|d   }	|	rj|	D cg c]  }t	        |d         dk  s| }
}t        |
      t        |	      dz  kD  r/|j                  ddt        |
       dt        |	       dddd       d| v r|j                  dddd d!d       t        |d"      D ]y  \  }}d#d$d%d&d'j                  |d(   d)      }t        | d*| d+|d,    d-|d(    d	       t        d.|d/           t        d0|d1           t        d2|d3           t                { y4c c}w c c}w )5u,   Génère des recommandations d'optimisation.rx   u%     💡 RECOMMANDATIONS D'OPTIMISATIONu   ════════════════════════════════════════════════════════════════════════════════
r   c              3   &   K   | ]	  }|d      yw)r4   Nr   )rb   r   s     r-   rd   z(print_recommendations.<locals>.<genexpr>  s     C1AgJCr   HAUTEu"    signaux générés (score moyen: r   r   u<   Peut bypasser les checks de sécurité (RSI trap, downtrend)uR   Ajouter validation minimum RSI > 35 et momentum > -0.5% même pour scores élevés)rA   priorityissueriskactionr   rK   (   g333333?MOYENNE/u    détections avec RSI < 40u2   Achat trop tôt dans la correction (falling knife)z:Ajouter confirmation rebond: momentum_3 > 0.2% OU RSI > 45r   rJ   g?g?u!    détections avec momentum faibleu6   Tendance haussière mais sans momentum (consolidation)zBExiger momentum_3 > 0.15% OU volume > moyenne pour confirmer forcer	   INFOu!   ✅ Déjà optimisé (21/01/2026)u6   Critères stricts appliqués (RSI >65, momentum >0.5%)z.Monitorer performances - attendu: Win Rate +5%r0   u   🔴u   🟡u   🟢u   ℹ️)r   r   BASSEr   r   u   •z RECOMMANDATION #z - rA   u    (Priorité: u      📌 Problème: r   u      ⚠️  Risque: r   u      ✅ Action: r   N)r'   rt   r(   r<   abs	enumerater`   )r>   rL   rR   recommendationshigh_score_signalsr   pullback_detr   low_rsiema_detweak_momireccolors                 r-   print_recommendationsr     s    

	
12	
O '$%:;C0BCCcJ\F]]I""0# 2344VW`adVeefgVn$  Wz!9!*-".@Q!E(R-q@G@7|c,/#55&&) ) #G~Qs</@.AA[\PZ(  MZ$?]+#*Iac!L/.BS.HIHI8}s7|c11&&, ) #HaG~=^_Tb(  7"'8LF 
 	 OQ/ 3	

 #c*ou
% 	 	(3s9~.>mCPZOK\\]^_#CL>23#CK=12H/0G A Js   HH7HHc                      t        d       t               } | st        d       y t               }|rt        |      }t        d       t        d       t        d       t        d|d           t        d|d	    d
|d   dd       t        d|d           t        d|d   dd       t        d|d   dd       t        d|d   dd       t                t        d       t	        |       }t        |       }t        |       }t        dt        d |j                         D               d       t        dt        d |j                         D               d       t        dt        d |j                         D               d       t        |||       t        |||       t        d        t        d!       t        d        t        d"       t        d#       t        d$       t        d%       t        d&       y )'Nu8   
🚀 Démarrage de l'analyse complète des patterns...
u"   ❌ Impossible de charger les logsrz   uH   │ 📈 STATISTIQUES GLOBALES (Baseline)                            │u   └─────────────────────────────────────────────────────────────────┘u   
   • Total trades: rm   u      • Wins: rn   r   rp   r   z%)u      • Losses: ro   u      • P&L Total: rq   r   u   €u      • Gain moyen (win): rr   u      • Perte moyenne (loss): rs   u/   📊 Extraction des patterns depuis les logs...u      ✅ c              3   2   K   | ]  }t        |        y wNr}   rb   vs     r-   rd   zmain.<locals>.<genexpr>y  s     91A9   z signaux extraitsc              3   2   K   | ]  }t        |        y wr   r}   r   s     r-   rd   zmain.<locals>.<genexpr>z  s     <1A<r   u    détections analyséesc              3   2   K   | ]  }t        |        y wr   r}   r   s     r-   rd   zmain.<locals>.<genexpr>{  s     81A8r   u    blocages recensésry   u     ✅ ANALYSE TERMINÉEu   
💡 Prochaines étapes:uD      1. Implémenter les optimisations recommandées (priorité HAUTE)u3      2. Tester sur données historiques (backtesting)u+      3. Monitorer Win Rate après changementsu-      4. Itérer sur patterns priorité MOYENNE
)r'   r.   rZ   rv   rB   rO   rT   rt   valuesr   r   )r+   rY   statsr>   rL   rR   s         r-   mainr   Z  s   	
FG ;D23!F &v.  \  	]XY  Z  	['n(='>?@eFm_BuZ/@.ERHIh012"5#5d";3?@)%	*:4)@DE-eJ.?-ESIJ 

;<(.G+D1J&t,F	GC9(899::K
LM	GC<
(9(9(;<<==T
UV	GC88899L
MN 7J7 ':v6 
*	
#$	*	
&'	
PQ	
?@	
78	
:;rC   __main__)__doc__rW   r7   r   r   r   typingr   r   r   r%   rV   r   strr.   rB   rO   rT   rZ   rv   r   r   r   __name__r   rC   r-   <module>r      s.  
  	  # $ $ @ 8	49 	T#Y 4T$Z3H 0T#Y 4T$Z3H @DI $sDI~2F .	DJ 	4: $ :UD Ud UD UnI4 IT I4 I^1<f zF rC   