
    i                     L    d Z ddlZddlZddlmZmZ d Zedk(  r
 edd       yy)ui   
Diagnostic: Pourquoi une crypto n'a pas été achetée?
Analyse les signaux et les raisons de non-achat
    N)datetime	timedeltac                    t        j                  |d      }|t        d      z
  }|t        d      z   }t        d       t        d|         t        d       t        d|        t        d|j	                  d       d	|j	                  d              t                d
}t
        j                  j                  |      st        d       yg }g }t        |dd      5 }|D ]  }		 t        j                  |	      }
|
j                  d      | k(  rt        j                  |
d   dd d      }|j                  ||
j                  d      |
j                  d      |
j                  d      d       ||cxk  r|k  rVn nS|j                  ||
j                  d      |
j                  d      |
j                  d      |
j                  d      d        	 ddd       t        d       t                |rt        dt        |       d|j	                  d       d|j	                  d       d       |D ]4  }t        d|d    j	                  d!       d"|d#    d$|d    d%|d           6 t        d&       t        d'       t        d(       t        d)       t        d*       t        d+       nvt        d,|j	                  d       d|j	                  d              |rt        |d- .      }t        d/|  d       t        d0|d    j	                  d              t        d1|d#           t        d2|d           |d    |z
  j                         d3z  }|d4kD  rgt        d5|d6d7       t        d8       t        d9|d    j	                  d              t        d:       t        d;|d    j	                  d              nat        d<t!        |      d6d=       nGt        d>|  d?       t        d8       t        d@|  dA       t        dB|  dC       t        dD|  dE       t        dF       y#  Y OxY w# 1 sw Y   dxY w)GuG   Analyser pourquoi un symbole n'a pas été acheté à un moment précisz%Y-%m-%d %H:%M   )minuteszF======================================================================u   🔍 DIAGNOSTIC NON-ACHAT: zHeure cible: u
   Fenêtre: z%H:%Mz - ztrade_logs/signals_log.jsonlu)   ❌ Fichier signals_log.jsonl introuvableNrzutf-8)encodingsymbol	timestamp   z%Y-%m-%d %H:%M:%Sai_scorepatternsmart_signal)timescorer   r   smart_eligible)r   r   r   r   r   u   📊 RÉSULTAT:u   ✅ u'    signal(s) trouvé(s) dans la fenêtre -:u      • r   z%H:%M:%Sz	 - Score=r   z
, Pattern=z, Smart=u.   
❓ Pourquoi pas d'achat malgré les signaux?z7   1. Limite de positions atteinte (MAX_OPEN_POSITIONS)z   2. Solde insuffisantu.      3. Pattern bloqué dans pattern_config.jsonu:      4. Régime de marché défavorable (score < min requis)z$   5. Filtres techniques non remplisu"   ❌ AUCUN signal dans la fenêtre c                     | d   S )Nr    )xs    ./diagnose_missing_trade.py<lambda>z'analyze_missing_trade.<locals>.<lambda>P   s
    6     )keyu   
📅 Premier signal u      • Heure: u      • Score: u      • Pattern: <   r   u   
⏰ Le signal est apparu z.0fu    minutes APRÈS l'heure cibleu   
❓ Raisons probables:z   1. Score IA < 60 avant z=   2. Conditions techniques non remplies (RSI, EMA, momentum)z   3. Pattern bloquant avant u   
⏰ Le signal existait z minutes AVANT l'heure cibleu   
❌ Aucun signal u    trouvé dans tout le fichierz   1. u     jamais évalué par le systèmez   2. z2 toujours en dessous du seuil minimum (score < 60)z   3. u    blacklistézG
======================================================================)r   strptimer   printstrftimeospathexistsopenjsonloadsgetappendlenmintotal_secondsabs)r
   target_time_strtarget_timewindow_start
window_endsignals_filesignals_in_windowall_signals_symbolflineentrytssigfirst_signal	time_diffs                  r   analyze_missing_trader:      s    ##O5EFK1!55Ly33J	(O	'x
01	(O	M/*
+,	J|,,W56c*:M:Mg:V9W
XY	G 2L77>>,'9: 	lC'	2 a 	D

4(99X&&0!**5+=cr+BDWXB&-- "!&:!6#(99Y#7(-		.(A	/  $r7Z7)00$&%*YYz%:',yy';,1IIn,E.3ii8H.I2 	2 
O	GS*+,,ST`TiTijqTrSsstu  vI  vI  JQ  vR  uS  ST  U  	V$ 	NCGCK00<=Ys7|nT^_bcl_m^nnvwz  |J  xK  wL  M  N	N 	?AGI')>@JL462<3H3H3Q2RRST^TgTghoTpSqrs 17JKL*6(!45N<#7#@#@AT#U"VWXN<#8"9:;$\)%<$=>?%f-;JJLrQI1}3Ic?B_`a022<3G3P3PQX3Y2Z[\UW5l66J6S6ST[6\5]^_1#i.1EEabc'x/LMN,.F6("BCDF6("TUVF6(,/0	/[- s%   P4&C)P,P4,P1.P44P>__main__PEPEUSDTz2026-01-23 12:02)__doc__r$   r    r   r   r:   __name__r   r   r   <module>r?      s6   
  	 ([z z*&89 r   