
    i#                        d Z ddlZddlZej                  dk(  rej                  j
                  dk7  r2  ej                  d      ej                  j                  d      e_        ej                  j
                  dk7  r2  ej                  d      ej                  j                  d      e_        ddl	m
Z
 d Zd Zd	 Z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)zr
Utilitaire de gestion des patterns en ligne de commande
========================================================
    Nwin32zutf-8strict)get_pattern_managerc                  "    t        t               y)zAffiche l'aideN)print__doc__     ./manage_patterns.py
print_helpr      s	    	'Nr
   c                    t        d       t        dddddddddd	d
ddddd        t        d       t        | j                  j                               D ]  }| j                  |   }|| j                  v rd}n|j
                  rd}nd}|j                  dkD  r|j                  ddnd}t        |j                        }t        |j                        }t        |dd|dd|dd|d
d|dd|j                  dd          t        d       t        dt        | j                         dt        | j                                dt        | j                                y)zListe tous les patternsz
 LISTE DES PATTERNS
Pattern25s Status8sWR6sTrades7sScoreDescriptionzd====================================================================================================z[BLACKLIST] BLz[OK] ONz	[OFF] OFFr   .1f%zN/AN(   ze
====================================================================================================zTotal: z | Actifs: u    | Blacklistés: )r   sortedpatternskeysblacklisted_patternsenabledtotal_tradeswin_ratestr	min_scoredescriptionlenget_enabled_patterns)pmnameconfigstatuswrtradesscores          r   cmd_listr/      sw   	
#$	YsO1XbM4)1XbM72,aP]
_`	'Nr{{'')* bT"2***%F^^F F*0*=*=*A$A&uV(()F$$%c
!F2;a2war{!E":QvGYGYZ][]G^F_`ab  
.	GC$%[R5L5L5N1O0P Qr6678: ;r
   c                 |   || j                   vrt        d| d       y| j                   |   }|j                         }t        d|        t        d       t        d|j                          t        d       t        d|j                  rd	nd
        t        d|| j
                  v rdnd        t        d|j                          t        d|j                   d       t        d       t        d|j                          t        d|j                          t        d|j                          t        d|j                          t        d|j                  dd       t        d|j                  dd       t        d|j                  dd       |j                  r't        d|j                  j!                  d              t        d       |j"                  rt        d       n>|j$                  rt        d        n&|j                  d!k  rt        d"       nt        d#       t        d       y)$u+   Affiche les stats détaillées d'un pattern[ERR] Pattern '	' inconnuNz
 STATISTIQUES - zF======================================================================zDescription: z
STATUS:u     Activé: z[OK] Ouiz	[OFF] Nonu     Blacklisté: z[BLACKLIST] Ouiz[OK] Nonz  Score IA minimum: z  Win rate minimum: r   z
PERFORMANCE:u     Signaux générés: u     Trades executés: z  Wins: z
  Losses: z  Win Rate: r   z  P&L total: z+.2fz  P&L moyen: z+.3fu     Dernière utilisation: z%Y-%m-%d %H:%M:%Su   
ÉVALUATION:z*  [OK] PROFITABLE - Performance acceptableu9     [WARN] RÉVISION NÉCESSAIRE - Performance insuffisante   u4      DONNÉES INSUFFISANTES - Besoin de plus de tradesz+  [OFF] NON PROFITABLE - Performance faible)r   r   to_dictr%   r    r   r$   win_rate_thresholdtotal_signalsr!   winslossesr"   	total_pnlavg_pnl	last_usedstrftimeis_profitableneeds_review)r(   pattern_namer*   statss       r   	cmd_statsrA   4   s   2;;&~Y78[[&FNNE	|n
-.	&M	M&,,-
./	I	Kfnn
+F
GH	OAXAX1X-^hi
jk	 !1!1 2
34	 !:!: ;1
=>	N	"6#7#7"8
9:	 !4!4 5
67	HV[[M
"#	Jv}}o
&'	L-Q
/0	M&**40
23	M&...a
01)&*:*:*C*CDW*X)YZ[	N:;			IJ			q	 DE;<	&Mr
   c                 d    | j                  |      rt        d| d       yt        d| d       y)zActive un pattern[OK] Pattern 'u   ' activé avec succèsr1   r2   N)enable_patternr   r(   r?   s     r   
cmd_enablerF   _   s3    	&|n,BCD~Y78r
   c                 d    | j                  |      rt        d| d       yt        d| d       y)u   Désactive un patternz[OFF] Pattern 'u   ' désactivé avec succèsr1   r2   N)disable_patternr   rE   s     r   cmd_disablerI   g   s3    	,'~-GHI~Y78r
   c                 d    | j                  |      rt        d| d       yt        d| d       y)zBlackliste un patternz[BLACKLIST] Pattern 'u   ' blacklisté avec succèsr1   r2   N)blacklist_patternr   rE   s     r   cmd_blacklistrL   o   s4    	L)%l^3MNO~Y78r
   c                     || j                   v r;| j                   j                  |       | j                          t        d| d       yt        d| d       y)z!Retire un pattern de la blacklistrC   u   ' retiré de la blacklistr1   u   ' n'est pas blacklistéN)r   removesave_configr   rE   s     r   cmd_unblacklistrP   w   sR    r...
&&|4
|n,EFG~-DEFr
   c                     	 t        |      }|dk  s|dkD  rt        d       y| j                  ||      rt        d| d|        yt        d| d       y# t        $ r t        d	       Y yw xY w)
z'Change le score IA minimum d'un patternr   d   u(   [ERR] Le score doit être entre 0 et 100Nz[OK] Score minimum de 'u   ' mis à jour: r1   r2   u2   [ERR] Score invalide (doit être un nombre entier))intr   update_min_score
ValueError)r(   r?   	new_scorer.   s       r   	cmd_scorerW      s{    DI19<=|U3+L>PQOL>;< DBCDs    A #A A A.-A.c                    t        d       | j                         }|d   r3t        dt        |d          d       |d   D ]  }t        d|         |d   r3t        dt        |d          d       |d   D ]  }t        d|         |d   r3t        d	t        |d          d       |d   D ]  }t        d|         |d
   r3t        dt        |d
          d       |d
   D ]  }t        d|         t        |j	                               st        d       yt        d |j	                         D              }t        d| d       y)z%Optimise automatiquement les patternsz2
[OPTIM] OPTIMISATION AUTOMATIQUE DES PATTERNS...
disabledu   [OFF] Patterns désactivés (z):z  - blacklistedu$   
[BLACKLIST] Patterns blacklistés (score_increasedu   
 Scores augmentés (score_decreasedu   
 Scores baissés (u@   [OK] Aucune optimisation nécessaire - Tous les patterns sont OKc              3   2   K   | ]  }t        |        y w)N)r&   ).0vs     r   	<genexpr>zcmd_optimize.<locals>.<genexpr>   s     ;qCF;s   u   
[OK] Optimisation terminée - u    patterns modifiésN)r   optimize_patternsr&   anyvaluessum)r(   optimizationsptotals       r   cmd_optimizerh      s   	
@A((*MZ -c-
2K.L-MRPQz* 	AD*	 ]#5c-:V6W5XXZ[\}- 	AD*	 &'&s=9J+K'L&MRPQ01 	AD*	 &'$S7H)I%J$K2NO01 	AD*	 }##%&PQ;M$8$8$:;;07JKLr
   c                 6    t        | j                                y)z!Affiche le rapport de performanceN)r   get_performance_report)r(   s    r   
cmd_reportrk      s    	"
#
#
%&r
   c                 J   || j                   vrt        d| d       yt        d| d      }|j                         dvrt        d       y| j                   |   }d|_        d|_        d|_        d|_        d	|_        d|_	        | j                          t        d
| d       y)z#Reset les statistiques d'un patternr1   r2   Nz([WARN] Confirmer le reset des stats de 'z' ? (oui/non): )ouiyesoyu   [ERR] Annulér   g        z[OK] Statistiques de 'u   ' réinitialisées)r   r   inputlowerr6   r!   r7   r8   r9   r;   rO   )r(   r?   confirmr*   s       r   	cmd_resetrt      s    2;;&~Y78>|nO\]G}}66o[[&FFFFKFMFFNN	"<.0B
CDr
   c                     t        t        j                        dk  rt                y t	               } t        j                  d   j                         }	 |dk(  rt        |        y |dk(  rFt        t        j                        dk  rt        d       y t        | t        j                  d          y |dk(  rFt        t        j                        dk  rt        d       y t        | t        j                  d          y |d	k(  rFt        t        j                        dk  rt        d
       y t        | t        j                  d          y |dk(  rFt        t        j                        dk  rt        d       y t        | t        j                  d          y |dk(  rFt        t        j                        dk  rt        d       y t        | t        j                  d          y |dk(  rXt        t        j                        dk  rt        d       y t        | t        j                  d   t        j                  d          y |dk(  rt        |        y |dk(  rt        |        y |dk(  rFt        t        j                        dk  rt        d       y t!        | t        j                  d          y t        d|        t                y # t"        $ r,}t        d|        dd l}|j'                          Y d }~y d }~ww xY w)N      listr@      z9[ERR] Usage: python manage_patterns.py stats PATTERN_NAMEenablez:[ERR] Usage: python manage_patterns.py enable PATTERN_NAMEdisablez;[ERR] Usage: python manage_patterns.py disable PATTERN_NAME	blacklistz=[ERR] Usage: python manage_patterns.py blacklist PATTERN_NAMEunblacklistz?[ERR] Usage: python manage_patterns.py unblacklist PATTERN_NAMEr.      zC[ERR] Usage: python manage_patterns.py score PATTERN_NAME NEW_SCOREoptimizereportresetz9[ERR] Usage: python manage_patterns.py reset PATTERN_NAMEz[ERR] Commande inconnue: z
[ERR] ERREUR: r   )r&   sysargvr   r   rr   r/   r   rA   rF   rI   rL   rP   rW   rh   rk   rt   	Exception	traceback	print_exc)r(   commander   s       r   mainr      s8   
388}q		Bhhqk!G;fRL388}q QRb#((1+& 388}q RSr388A;'	!388}q STCHHQK(#388}q UV"chhqk*%388}q WXB,388}q [\b#((1+sxx{3
" rN388}q QRb#((1+& -gY78L  $%s~   J? %,J? J? 0,J? J? ;,J? (J? ,J? 3J? ,J? >J? ,J? 	/J? 9J? 
J? ,J? J? &J? ?	K4"K//K4__main__)r   r   codecsplatformstdoutencoding	getwriterbufferstderrpattern_managerr   r   r/   rA   rF   rI   rL   rP   rW   rh   rk   rt   r   __name__r	   r
   r   <module>r      s   
   <<7
zzg%.%V%%g.szz/@/@(K

zzg%.%V%%g.szz/@/@(K
 /
;6(V999GD MB'
E.CL zF r
   