
    i&                        d Z ddlZddlmZ  ed        ed        ed        ed        ed        ed        ed	        ed
        ed       ddd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!        ed        ed"       ed#   j                         D ](  \  ZZed$kD  rd%ned&kD  rd'nd(Z ed)e d*ed+d,ed-       *  ed.        ed/        ed0        ed1        ed2        ed        ed3        ed4        ed5        ed       d6d7d8d9d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!        ed        ed"       e	d#   j                         D ](  \  ZZed$kD  rd%ned&kD  rd'nd(Z ed)e d*ed+d,ed-       *  ed?        ed@        edA        ed1        edB        ed        edC        ed        edD        ed        edE        edF        edG        edH        edI        edJ        edK        edL        edM        edN        ed        edO        edP        edQ        ed        edR        edS        edT        edU        edV        edW        ed        edX        edY        edZ        ed[        ed        ed\        ed]        ed        ed^        ed        ed_        ed`        eda        edb        edc        ed        edd        ede        ed        edf        edg        edh        ed1        edi        ed        edj        ed        edk        edl        ed        edm        edn        edo        edp        ed        edq        edr        eds        ed        edt        edu        ed        edv        edw        ed        edm        edx        edy        edz        ed        edq        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dW        ed        ed        edm        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d1        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        ed1        ed        ed       g ddgdz  g dg dg dg dg dg dg dg dg
Z
e
D ]%  Z eed   dd*ed   dd*ed   dd*ed   d       '  ed1        ed        ed        ed        ed        ed        ed       y)u<   
Analyse comparative BCH vs ANIM - Détection CREUX_REBOUND
    N)datetimezd====================================================================================================z+ANALYSE BCH 14h30-14h55 vs ANIM 14h02-14h51z
[BCH] Graphique 14h30-14h55:zd----------------------------------------------------------------------------------------------------u-   14h30: Creux ~503.46€ (RSI probable: 25-30)u.   14h55: Peak ~506.84€ → +0.67% depuis creuxu   Durée: 25 minutes BCHUSDTu   15h09 (39 min après creux)g333333G@5   FgYU@gffffff@g      4@g      N@g      I@gfffff&G@)
volatilitymomentumpatterntrendentry_timingrisk_rewardgp=
ף@DOWN)volatility_6h	direction)symbol	timestampopportunity_scorerankselectedscorespredictionsu5   
[BCH] Snapshot actuel (15h09 - 39 min APRÈS creux):zOpportunity score: r   zRank: r   u    → NON SÉLECTIONNÉu   Scores détaillés:r   <   u   ✅(   u   ⚠️u   ❌z   15sz: z.1fu3   
⚠️ PROBLÈME: Momentum = 2.3 (catastrophique!)uH      → 39 minutes après creux, momentum probablement retourné négatifu?      → Pattern CREUX_REBOUND non détecté car momentum < 0.08%ze
====================================================================================================z[ANIM] Graphique 14h02-14h51:u(   14h02: Début montée après creux 13h51u"   14h51: Peak → +3.0% depuis creuxu   Durée: 49 minutes	ANIMEUSDTu   15h03 (12 min après peak)g     J@/   g     T@gYI@g      >@g{Gz@u5   
[ANIM] Snapshot actuel (15h03 - 12 min APRÈS peak):u4   
⚠️ PROBLÈME SIMILAIRE: Momentum = 50.7 (moyen)u1      → 12 minutes après peak, momentum en baisseu+      → Mais encore >0 donc meilleur que BCHu?   🔍 ANALYSE ROOT CAUSE - Pourquoi CREUX_REBOUND pas détecté?z
1. TIMING DE L'ANALYSEu:   ai_opportunity_selector.py s'exécute toutes les 5 minuteszBCH:z6  14h30: CREUX (RSI ~27, momentum probablement +0.15%)u:     14h35: Cycle IA #1 → momentum encore positif (+0.10%?)u5     14h40: Cycle IA #2 → momentum en baisse (+0.05%?)u2     14h45: Cycle IA #3 → momentum faible (+0.02%?)u+     14h50: Cycle IA #4 → momentum quasi-nulu     14h55: Peak → trop tardu3     15h00: Cycle IA #5 → momentum négatif (-0.05%)u3     15h05: Cycle IA #6 → momentum négatif (-0.10%)u?     15h09: Snapshot JSON → momentum = 2.3 (négatif normalisé)uO   ⚠️ Le creux 14h30 était détectable uniquement dans les cycles 14h30-14h40u8      Après 14h40, momentum trop faible pour CREUX_REBOUNDu*   
2. VÉRIFICATION CONDITIONS CREUX_REBOUNDz;Conditions requises (ai_opportunity_selector.py ligne 470):z  is_creux_rebound = (u4         15 <= rsi <= 35 and          # ✅ BCH RSI ~27uD         momentum_3 > 0.0008 and      # ❌ BCH momentum 15h09 << 0.08%u3         volume_ratio > 0.20          # ? À vérifierz  )z
BCH 15h09:u-     RSI: ~27 (graphique actuel) → ✅ VALIDÉu4     Momentum: 2.3 normalisé = ~-0.10% → ❌ BLOQUÉu     Volume: Non vérifiéuP   Conclusion: CREUX_REBOUND non détecté car momentum négatif au moment snapshotu   
3. FENÊTRE DE DÉTECTIONu?   PROBLÈME: Cycle 5 minutes trop lent pour capter creux rapides!zBCH mouvement:u>     14h30-14h40: +0.34% (10 min) → Momentum fort (+0.15-0.20%)u?     14h40-14h50: +0.20% (10 min) → Momentum moyen (+0.08-0.10%)u;     14h50-14h55: +0.13% (5 min)  → Momentum faible (+0.05%)u=     14h55-15h05: -0.50% (10 min) → Momentum négatif (-0.15%)uF   Fenêtre détection CREUX_REBOUND: 14h30-14h45 (15 minutes seulement!)u>   Cycles IA pendant fenêtre: 14h35, 14h40 (2 chances seulement)u7   Si cycles IA ratés ou momentum juste en dessous 0.08%:u$     → CREUX_REBOUND jamais détectéu     → Opportunité manquéeu,   💡 SOLUTIONS POUR CAPTER BCH-LIKE PATTERNSu)   
1. RÉDUIRE SEUIL MOMENTUM CREUX_REBOUNDz#ACTUEL: momentum_3 > 0.0008 (0.08%)u%   PROPOSÉ: momentum_3 > 0.0005 (0.05%)z	Avantage:u4     ✅ Capter creux avec momentum faible mais positifu9     ✅ Fenêtre détection élargie: 14h30-14h50 (+10 min)u%     ✅ +2-3 cycles IA supplémentaireszRisque:uE     ⚠️ Faux positifs si momentum trop faible (rebond pas confirmé)u-     ⚠️ Win rate potentiellement 60% → 55%z+Recommandation: TESTER 0.05% pendant 24-48hu"   
2. RÉDUIRE INTERVAL MISE À JOURz#ACTUEL: UPDATE_INTERVAL_MINUTES = 5u'   PROPOSÉ: UPDATE_INTERVAL_MINUTES = 2-3u0     ✅ Plus de cycles pendant fenêtre détectionu+     ✅ 14h30-14h50: 6-10 cycles au lieu de 4u(     ✅ Meilleure réactivité temps réelu     ⚠️ Charge GPU augmentéeu;     ⚠️ Potentiellement faux signaux sur noise court-termez(Recommandation: TESTER 3 minutes d'abordz+
3. AJOUTER PATTERN CREUX_DELAYED (NOUVEAU)uQ   Détecter creux APRÈS qu'il soit passé (RSI bas + momentum faible mais positif)zConditions:z  is_creux_delayed = (z3      15 <= rsi <= 35 and          # RSI encore baszF      0.0002 < momentum_3 < 0.0008 and  # Momentum faible mais positifu4         volume_ratio > 0.15 and      # Volume modéréz=      trend_short > 0              # Tendance courte positivez/  Bonus: +40 points (vs +60 pour CREUX_REBOUND)u4     ✅ Capter creux 5-15 min après (BCH 14h45-14h55)u.     ✅ Gain partiel possible (50% du mouvement)u%     ✅ Meilleure couverture temporellez0Recommandation: AJOUTER comme pattern secondaireu   
4. VÉRIFIER CYCLES IA RÉELSuG   Vérifier si auto_updater_service exécute bien cycles toutes les 5 minzActions:u(     1. Vérifier logs auto_updater_serviceuG     2. Confirmer dernières exécutions: 14h35, 14h40, 14h45, 14h50, etc.u0     3. Si cycles manquants → redémarrer serviceuN     4. Si cycles OK mais momentum trop faible → réduire seuil 0.08% → 0.05%u    ✅ RECOMMANDATIONS PRIORITAIRESu6   
1. 🔴 URGENT: Réduire seuil momentum CREUX_REBOUNDz1   Modifier ai_opportunity_selector.py ligne 470:u0      momentum_3 > 0.0008  →  momentum_3 > 0.0005u9   2. 🟠 IMPORTANT: Réduire interval update 5min → 3minz0   Modifier ai_opportunity_selector.py ligne 63:u@      UPDATE_INTERVAL_MINUTES = 5  →  UPDATE_INTERVAL_MINUTES = 3u0   3. 🟡 OPTIONNEL: Ajouter pattern CREUX_DELAYEDz2   Pour capter creux tardifs (momentum 0.02-0.08%)u<   4. ⚠️ VÉRIFIER: Logs auto_updater pour confirmer cyclesu5      Vérifier si cycles 14h35, 14h40, 14h45 exécutésu#   📊 COMPARAISON FINALE BCH vs ANIM)u	   Métriquez	BCH 14h30z
ANIM 14h02u   Différencez--------------------   )u   Creux → Peakz+0.67%z+3.0%z	ANIM x4.5)u   Durée mouvementz25 minz49 minANIM x2)zMomentum snapshotu   2.3 (négatif)z50.7 (moyen)zANIM x22)zPattern score20r   	Identique)zOpportunity scorez46.4z53.5z	ANIM +7.1)Rank5347z
ANIM mieux)u   Fenêtre détectionz15 minz30 minr   )u   Détectable avec fix?zOUI (si mom 0.05%)OUIzLes 2 OK25s   20s      zCONCLUSION:uF     - ANIM: Plus facile à détecter (mouvement long, momentum maintenu)z>  - BCH: Plus difficile (mouvement court, momentum chute vite)uB     - FIX: Réduire seuil momentum 0.08% → 0.05% captera les 2 casuA     - BONUS: Réduire interval 5min → 3min améliore réactivité)__doc__jsonr   printbch_data_15h09itemskeyvaluestatusanim_data_15h03
comparisonrow     ./analyse_bch_vs_anim.py<module>r8      s     i  3 4 i  & ' i  5 6 6 7   b	 . ( > ? i  N+>?@A B ~f%&&<= > b	   *002 0JCbjU52:x5F	BvhaCy5+
./0 < = P Q G H   % & i  0 1 * +   b	 - ( > ? i  O,?@AB C v&''=> ? b	  !(+113 0JCbjU52:x5F	BvhaCy5+
./0 = > 9 : 3 4   G H i    ! i  B C b	 f > ? B C = > : ; 3 4 # $ ; < ; < G H b	 W X @ A 3 4 i  C D   < = L M ; < e b	 l  5 6 < =    b	 X Y # $ i  G H b	   F G G H C D E F b	 N O F G b	 ? @ , - # $   4 5 i  2 3 i  + , - . b	 k  < = A B - . b	 i  M N 5 6 b	 3 4 + , i  + , / 0 b	 k  8 9 3 4 0 1 b	 i  & ' C D b	 0 1 4 5 i  Y Z b	 m    ; < N O < = E F e 7 8 b	 k  < = 6 7 - . b	 8 9 ' ( i  O P b	 j  0 1 O P 8 9 V W   ( ) i  ? @ 9 : 8 9 b	 A B 8 9 H I b	 8 9 : ; b	 D E = >   + , i  <JN67G.6&:F
  BC	SVCL#a&Qs1vcl!CF3<
@AB   m  N O F G J K I J i r6   