
    i3.                        d Z ddlZddlZddlZddlmZ  ej
                  ej                  j                  dd      e_         ed        ed        ed        ed	        ed
       ddddddddddddZ	 ede	d            ede	d            ede	d   dz  dd        ede	d    dz  dd        ed!e	d"   dd#e	d"   d$z  d%d&        ed'e	d(   dd)        ed*e	d+   dd        ed,        ed-        ed       e	d   Z
e	d   Ze	d    Ze	d"   Ze	d(   Ze	d.   Ze	d/   Ze	d0   Ze	d+   Zed1z  Zed2z  d3z  Zed4z  ed5z  z   Z ed6ed%        ed7ed%        ed8ed%       edkD  redkD  rd9ndZ e ee      dz  d      Zed:z  ed3z  z   Z ed;ed%        ed<edz  dd=ed%        ed>e d?        ed@ed%dAe dBed%       dZer
edCk  redDz  Zered3z  ZedEk  red1z  Zdecxk  rd:k  rn nedFz  Z edGed%        edHe dI        edJe dI        edK        edL        edM       dNZ edOed%dP       dZd3e
cxk  rdQk  sn dRe
cxk  rdSk  r	n nedTz  ZndQe
cxk  rdRk  r	n ned3z  ZnedFz  Zdecxk  rd:k  r	n nedTz  Zned1z  Z edUed%        edVe
 dW        edXe dY        edZ       edz  Zed:z  Zeed[z   z  Z  ee d1z  d      Z! ed\e!d%       edz  ed$z  z   ed$z  z   edz  z   ed]z  z   e!d^z  z   Z" ed_        ed`e"d%        edaed%dbedz  d%        edced%dded$z  d%        edeed%dded$z  d%df        edged%dhedz  d%        edied%djed]z  d%dk        edle!d%dme!d^z  d%        edne"d%do        ed,        edp        ed       edkD  r eedqz  d      Z#e#d:z  ed3z  z   Z$n e%ddTedz  z         Z#e#d:z  Z$ edre$d%        edsedz  ddte#d%du        ed>e d?        ed@e#d%dAe dBe$d%        edve$ez
  d%dw       dZ&dxe
cxk  xr dyk  nc xr edzkD  xr ed$kD  Z'e'rJe&dNz  Z& ed{e&d%        ed|        ed}e
 d~        ededz  dd        ededd        ed       er
edCk  re&dTz  Z&ere&d3z  Z&edEk  re&d1z  Z&decxk  rd:k  rn ne&dFz  Z& ee&d      Z& ede&d%        edve&ez
  d%de&ez
   e%ed9      z  dz  dd       dZ(d1e
cxk  rdyk  rn ne(dz  Z(dZ)n@d3e
cxk  rdQk  sn dRe
cxk  rdSk  rn ne(dTz  Z(dZ)ndQe
cxk  rdRk  rn ne(d3z  Z(dZ)ne(dFz  Z(dZ)edk  re(d1z  Z(dZ*ndecxk  rd:k  rn ne(dTz  Z(dZ*ne(dFz  Z(dZ* ee(d      Z( ede(d%        edVe
 de) d        edXedde* d        ede(d%        edve(ez
  d%de(ez
   e%ed9      z  dz  dd       edz  e$d$z  z   e&d$z  z   edz  z   e(d]z  z   e!d^z  z   Z+ ed_        ede+d%        edaed%dbedz  d%        edce$d%dde$d$z  d%de$ez
  d$z  d%        edee&d%dde&d$z  d%de&ez
  d$z  d%        edged%dhedz  d%        edie(d%dje(d]z  d%de(ez
  d]z  d%        edle!d%dme!d^z  d%        edne+d%d        ed,        ed        ed       e+e"z
  Z,e"dkD  re,e"z  dz  ndZ- ed        ede"d%d        ede+d%d        ede,d%de-d%d        ed        eded%de$d%de$ez
  d%d        eded%de&d%de&ez
  d%d        eded%de(d%de(ez
  d%d        ed        ed        ed        ed        ed        ed        ed,        ed        ed        ed        ed        ed        ed        ed        ed       y)zA
Test des corrections ai_opportunity_selector sur cas ANIM 14h02
    N)datetimezutf-8replace)encodingerrorszd====================================================================================================z;[TEST] CORRECTIONS AI_OPPORTUNITY_SELECTOR - CAS ANIM 14h02z6
[SIMULATION] ANIM 14h02 (creux termine, debut montee)zd----------------------------------------------------------------------------------------------------	ANIMEUSDT   gH}M?g/nR?g333333?g333333?   Fg{Gzg{Gz@)symbolrsi
momentum_3
momentum_5volume_ratiobb_positionbb_bandwidth
is_squeezeis_breakoutema_diffvolatility_6hzSymbol:         r
   zRSI:            r   zMomentum 3min:  +r   d   z.2f%zMomentum 5min:  +r   zVolume ratio:   r   z (= g?z.1fzx)zBB position:    r   z (proche bande basse)zVolatility 6h:  r   ze
====================================================================================================u   ❌ AVANT CORRECTIONSr   r   r      g      ?   g?g333333?z
1. Volatility score: z
   - 6h:  z
   - 24h:    gffffff?z
2. Momentum score (ANCIEN): z   - Strength: abs(z%) * 100 = z   - Align:    z (3min & 5min positifs)z   - Score:    z	 * 0.7 + z * 30 =    (      
   z
3. Pattern score (ANCIEN): z   - Squeeze: z -> 0z   - Breakout: z   - BB width < 5: False -> 0z$   - BB position 0.3-0.7: False -> 0u      ❌ AUCUN PATTERN DÉTECTÉ!<   z
4. Trend score: z	 (neutre)-   7   F   2   z
5. Entry timing (ANCIEN): z	   - RSI u   : extrême -> +10z   - BB position z: hors zone -> +20u.      ❌ RSI oversold considéré comme MAUVAIS!g{Gz?z
6. Risk/reward score: g?g?ze
----------------------------------------------------------------------------------------------------u    SCORE FINAL AVANT: z   - Volatility: z
 * 0.30 = z   - Momentum:   z
 * 0.20 = z   - Pattern:    u     ❌ CATASTROPHEz   - Trend:      z
 * 0.15 = z   - Entry:      z
 * 0.10 = u     ❌ MAUVAISz   - Risk/Rew:   z
 * 0.05 = z
   TOTAL: u    < 60  ❌ BLOQUÉ (rank 47)u   ✅ APRÈS CORRECTIONS   z
2. Momentum score (NOUVEAU): z   - Strength: z
% * 200 = z (x2 UP)u      ✅ Amélioration: +z points   #   g-C6J?z
3. Pattern score (NOUVEAU): u      ✅ CREUX_REBOUND DÉTECTÉ!z      - RSI u    in [15, 35]: ✅z      - Momentum u   % > 0.08%: ✅z      - Volume u    > 0.20: ✅z      - Bonus: +60 pointsz   - Score final: z
 points (+z.0fz%)P   zZone CREUX_REBOUND optimalezRSI standard optimalz
RSI neutreu   RSI extrême hautz$Proche bande basse (rebond probable)zMilieu bandeszBande haute (risque)z
5. Entry timing (NOUVEAU): z: z -> +80z -> +20z   - Score: min(100, 100) = u    SCORE FINAL APRÈS: u     ✅ +u+    > 60  ✅ AUTORISÉ! (rank estimé: 10-15)u    COMPARAISON AVANT/APRÈSz
Score opportunity:z   AVANT:  u     ❌ Bloqué (rank 47)u      APRÈS: u     ✅ Sélectionné (rank ~12)z   Gain:   +u   
Détail améliorations:z   Momentum:  z -> z  (+)z   Pattern:   z   Entry:     u   
Impact sur sélection:u;      AVANT:  Rank 47 -> NON sélectionné (TOP 20 uniquement)u5      APRÈS: Rank ~12 -> ✅ Sélectionné dans TOP 20!u2      Résultat: ai_predictor.py pourra analyser ANIMu2               CREUX_REBOUND détecté -> Achat 14h02z,            Peak exit -> Vente 14h51 (+3.0%)u4   ✅ VALIDATION: Corrections stratégiques EFFICACES!u   
Prochaines étapes:u>   1. ✅ Corrections appliquées dans ai_opportunity_selector.pyu@   2. ⏳ Redémarrer auto_updater_service pour activer changementsu>   3. ⏳ Observer prochain cycle (5 min) pour validation réelleuB   4. ⏳ Monitoring 24-48h: win rate, CREUX détections, TOP 20 rank).__doc__sysiojsonr   TextIOWrapperstdoutbufferprintfeatures_anim_14h02r   r   r   r   r   r   r   r   r   vol_score_6hvol_score_24hvolatility_scoremomentum_align_oldminabsmomentum_strength_oldmomentum_score_oldpattern_score_oldtrend_scoretiming_score_oldriskrewardrr_ratiorisk_reward_scoreopportunity_score_oldmomentum_strength_newmomentum_score_newmaxpattern_score_newis_creux_reboundtiming_score_newrsi_comment
bb_commentopportunity_score_newameliorationamelioration_pct     ./test_corrections_anim.py<module>rO      s    	   Rcjj//')T
 i  C D i  ? @ i    ,X678 9 ,U345 6 -l;C?DAF G -l;C?DAF G ,^<SAGZ[iGjknGnpsEttvw x ,];C@@UV W ,_=cB!D E     ! i %  .
 .
">2!-0">2 .
!-0#O4 r!#b(#%(;;   056 7 
<$% & 
=%& ' &>j1nQ1 C
Oc137 *S03E3JJ  &'9#&>? @ JsN3/{;PQT:UV W *++BC D -c2)<N;OxXjknWop q  ,"!+ %&7%<= > zl%( ) }E* + % ' , . 2 4  ;s+95 6  ??bCo2o#]]+ $%5c$:; < 	#+, - +&89 : A C s		TD[!2s+   !23 78 9 t $ t	
     ()>s(CD E *3/z:JT:QRU9VW X ,S1<NQU<UVY;Z[ \ +C0
;Lt;STW:XXlm n +c**[45G4LM N *3/z:JT:QRU9VVfg h +C0
;Lt;STW:XY Z *3//RS T   % & i  >
S 0#6.47IB7NN2
S(8#89.4 '(:3'?@ A 
3s+:6KC5PPXY Z *++BC D -c2)<N;OxXjknWop q &'9<N'Ns&SSZ[ \   #OO 4 
 	*+<S*A
BC	68	L1
23	jnS11B
CD	OL-_
=>	%' ,"  ! +)3/  ,S12 3 &'8;L'LS&QQ[^o  sD  _D  FI  J[  ]^  F_  ^_  `c  ^c  eh  \i  ik  l  m   ??/K3_"_cR(K#]]K)K 7JK3 J'J'-  %&6s%;< = 	#bW- . +c*"ZL@ A $%5c$:; < &'7:J'J3&Oz\lo\  BE  FV  XY  BZ  \Z  [^  \^  `c  Zd  df  g  h t $ t	
     -.CC-HI J *3/z:JT:QRU9VW X ,S1<NQU<UVY;ZZdfx  |N  gN  RV  fV  WZ  e[  \  ] +C0
;Lt;STW:XXbdu  yJ  eJ  NR  dR  SV  cW  X  Y +c**[45G4LM N *3/z:JT:QRU9VV`br  vF  cF  JN  bN  OR  aS  T  U +C0
;Lt;STW:XY Z *3//ef g   1 2 i $'<<CX[\C\L#883>bc    )#..LM N -c22[\ ] \#&j1A#0FbI J ) + )#.d3Ec2J$OadvOvwzN{{|} ~ (-T2CC1HM^arMrsvLwwxy z ',D1A#0FdK[^nKnorJsstu v $ & K M L N > @ B D 4 6   C D i  ! " M N O P M N Q R i rM   