
    i!                        d Z  ed        ed        ed        e         ed       	 ddlmZmZ  ed        ed
       	  e       Z e       Z	ee	u sJ d        ed e
ej                         d        ed       	  e       Zej                  dd      \  ZZ ederdnd         ede        ej                  dd      \  ZZ ederdnd         ede        ej                  dd      \  ZZ ederdnd         ede        ej                  dd      \  ZZ ederdnd         ede         ed       	  e       Zej                  d   j$                  Zej)                  d       ej                  d   j$                  Zeedz   k(  sJ d         ed!e d"        ed$       	  e       Zd%ej                  vr ed%      ej                  d%<   ej                  d%   j,                  Zej                  d%   j0                  Zej5                  d%d&       ej                  d%   j,                  edz   k(  sJ ej                  d%   j0                  edz   k(  sJ ej                  d%   j6                  d&k(  sJ  ed'ej                  d%   j8                  d(d)       ej5                  d%d*       ej                  d%   j,                  ed+z   k(  sJ ej                  d%   j:                  dk(  sJ  ed,ej                  d%   j8                  d(d)        ed.       	  e       Zej=                         Zd/ev sJ d0ev sJ ed0   d1   dkD  sJ  ed2        ed3ed0   d1            ed4ed0   d5            ed6ed0   d7            ed9       	  e       ZejA                           ed:       dd	l!Z!e!jD                  jG                  d;      sJ d<        ed=       dd>lm$Z$  e$       Z% e
e%j                        dkD  sJ d?        ed@ e
e%j                         dA        edC       	  e       ZejM                         Z' edD        edE e
e'dF                  ed6 e
e'd7                  edG e
e'dH          e
e'dI         z            edK       	  e       ZejQ                         Z) e
e)      dkD  sJ dL       dMe)v sJ dN        edO       e)jU                  dP      d	dQ D ]  Z+ edRe+         	  edT       	 dd	l,Z,dd	l-Z.e.j^                  ja                  dUdV      Z1 edW        e2dVdXdYZ      5 Z3e3ji                         Z5d	d	d	       d[e5v sJ d\        ed]       d^e5v sJ d_        ed`       dae5v sJ db        edc       dde5v sJ de        edf       dge5v sJ dh        edi        edk        edl        ed        edm        edn        edo        edp        edq        edr        eds        edt        edu        edv        edw        ed       y	# e$ rZ ede         ed       Y d	Z[ d	Z[ww xY w# e$ rZ ede         ed       Y d	Z[d	Z[ww xY w# e$ r3Z ede        dd	lZ ej"                           ed       Y d	Z[wd	Z[ww xY w# e$ r3Z ed#e        dd	lZ ej"                           ed       Y d	Z[Dd	Z[ww xY w# e$ r3Z ed-e        dd	lZ ej"                           ed       Y d	Z[d	Z[ww xY w# e$ r3Z ed8e        dd	lZ ej"                           ed       Y d	Z[d	Z[ww xY w# e$ r3Z edBe        dd	lZ ej"                           ed       Y d	Z[vd	Z[ww xY w# e$ r3Z edJe        dd	lZ ej"                           ed       Y d	Z[Ad	Z[ww xY w# e$ r3Z edSe        dd	lZ ej"                           ed       Y d	Z[d	Z[ww xY w# 1 sw Y   xY w# e$ r3Z edje        dd	lZ ej"                           ed       Y d	Z[d	Z[ww xY w)xuu   
Test d'intégration du PatternManager avec trading_bot.py
=========================================================
zF======================================================================u'   🧪 TEST D'INTÉGRATION PATTERNMANAGERu"   📦 Test 1: Import des modules...    )get_pattern_managerPatternConfigu      ✅ pattern_manager importéu&      ❌ Erreur import pattern_manager:    Nu#   
🔧 Test 2: Instance singleton...u&   Les instances doivent être identiquesu      ✅ Singleton fonctionnel (u    patterns chargés)u      ❌ Erreur singleton: u(   
🎯 Test 3: Validation des patterns...EARLY_BREAKOUT2   z   EARLY_BREAKOUT (score=50): u   ✅ Autoriséu   ❌ Bloquéz      Raison:    z   EARLY_BREAKOUT (score=30): END_OF_CYCLEd   z   END_OF_CYCLE (score=100): DEAD_CAT_BOUNCE<   z   DEAD_CAT_BOUNCE (score=60): u      ❌ Erreur validation: u+   
📊 Test 4: Enregistrement des signaux...u   Signal non enregistréu"      ✅ Signal enregistré (total: )u%      ❌ Erreur enregistrement signal: u*   
💰 Test 5: Enregistrement des trades...TEST_PATTERNg      ?u!      ✅ Trade WIN enregistré (WR=z.1fz%)g   u"      ✅ Trade LOSS enregistré (WR=u$      ❌ Erreur enregistrement trade: u(   
📈 Test 6: Calcul des statistiques...patternssummarytotal_patternsu      ✅ Stats calculées:z      Total patterns: z      Actifs: enabledu         Blacklistés: blacklistedu      ❌ Erreur stats: u)   
💾 Test 7: Sauvegarde et chargement...u!      ✅ Configuration sauvegardéezpattern_config.jsonu   Fichier non crééu)      ✅ Fichier pattern_config.json créé)PatternManageru   Patterns non chargésu!      ✅ Configuration rechargée (z
 patterns)u%      ❌ Erreur sauvegarde/chargement: u)   
🎯 Test 8: Optimisation automatique...u      ✅ Optimisation exécutée:u         Désactivés: disabledu         Scores ajustés: score_increasedscore_decreasedu      ❌ Erreur optimisation: u'   
📊 Test 9: Rapport de performance...zRapport videzRAPPORT DE PERFORMANCEzFormat incorrectu#      ✅ Rapport généré (extrait):
   z      u      ❌ Erreur rapport: u/   
🤖 Test 10: Intégration avec trading_bot...trading_botztrading_bot.pyu       ✅ trading_bot.py accessiblerzutf-8)encodingz/from pattern_manager import get_pattern_managerzImport manquantu*      ✅ Import présent dans trading_bot.pyzpm = get_pattern_manager()zUtilisation manquanteu2      ✅ PatternManager utilisé dans trading_bot.pyzpm.is_pattern_allowedzValidation manquanteu'      ✅ Validation pattern implémentéezpm.record_signalzEnregistrement signal manquantu*      ✅ Enregistrement signaux implémentézpm.record_tradezEnregistrement trade manquantu)      ✅ Enregistrement trades implémentéu      ❌ Erreur intégration: zG
======================================================================u)   ✅ TOUS LES TESTS PASSÉS AVEC SUCCÈS !u   
📋 Résumé:u$      ✅ Modules compilent sans erreuru      ✅ Singleton fonctionnelu.      ✅ Validation des patterns opérationnelleu'      ✅ Enregistrement signaux/trades OKu+      ✅ Statistiques calculées correctementu(      ✅ Sauvegarde/chargement fonctionnelu&      ✅ Optimisation automatique activeu'      ✅ Rapports générés correctementu)      ✅ Intégration trading_bot complèteu/   
🚀 Le PatternManager est prêt à l'emploi !)6__doc__printpattern_managerr   r   	Exceptioneexitpm1pm2lenr   pmis_pattern_allowedallowedreason	traceback	print_exctotal_signalsinitial_signalsrecord_signalnew_signalstotal_tradesinitial_tradeswinsinitial_winsrecord_trade	total_pnlwin_ratelossesget_all_statsstatssave_configospathexistsr   pm_newoptimize_patternsoptimizationsget_performance_reportreportsplitlinesysimportlib.util	importlibutilspec_from_file_locationspecopenfreadcontent     ./test_pattern_manager.py<module>rS      s	  
 f / 0 f  * +B	
+, , -

C

C#:???:	*3s||+<*==P
QR 1 2		B ++,<bAOGV	*g?=*Y
Z[	N6(
#$ ++,<bAOGV	*g?=*Y
Z[	N6(
#$ ++NC@OGV	)W/-)X
YZ	N6(
#$ ++,=rBOGV	+wOM+Z
[\	N6(
#$ 4 5		B kk"23AAO %& ++./==K/A--G/GG-	.{m1
=> 3 4		B R[[(&3N&CN#[[0==N;;~.33L OONC( ;;~&33~7IIII;;~&++|a/????;;~&00C777	-bkk..I.R.RSV-WWY
Z[ OOND) ;;~&33~7IIII;;~&--222	.r{{>/J/S/STW.XXZ
[\ 1 2		B E,-111	$&	"5#34D#E"F
GH	N5+I67
89	 y!1-!@ A
BC 2 3		B NN	
-. 77>>/0F2FF0	
56 /F v!#<%<<#	-c&//.B-C:
NO 2 3		B ((*M	+-	 ]:%>!? @
AB	 ]=%A!B C
DE	#C6G(H$ICP]^oPpLq$q#r
st 0 1		B &&(Fv;?*N*?#v-A/AA-	
/0T"2A& tfo 8 9 >>11-AQRD	
,- 
g	6 !&&( =GZIZZG	
67'72K4KK2	
>?"g-E/EE-	
34(J*JJ(	
67'H)HH'	
56 m  1 2 f   , - $ % 6 7 / 0 3 4 0 1 . / / 0 1 2 8 9 fk  	21#
67GG  	%aS
)*GG:  	&qc
*+IGG	,  	1!
56IGG	F  	0
45IGG	.  	!!
%&IGG	8  	1!
56IGG	&  	(
,-IGG	*  	#A3
'(IGG	$ $  	(
,-IGG	s  X= 5Y# CZ	 A%[ <E'[? ,A+\:  B]5 ;A'^0 +A _+ 7`3 `&A'`3 =Y YY #Z(ZZ	[(Z<<[[<	([77[<?\7(\22\7:]2?(]--]25^-:(^((^-0_(5(_##_(+`#0(``#&`0+`3 3a+8(a&&a+