
    i+                         d Z ddlZddlZddlmZ ddlmZ ddlZ G d d      Zedk(  r e       Z	e	j                          yy)u   
Validateur IA - Efficacité détection CREUX_REBOUND
Analyse la performance du pattern CREUX_REBOUND et valide la qualité de la détection
    N)datetime)defaultdictc                   4    e Zd ZdZd Zd Zd Zd Zd Zd Z	y)	CreuxReboundValidatorz2Validateur de performance du pattern CREUX_REBOUNDc                 $   t         j                  j                  t         j                  j                  t                    | _        t         j                  j                  | j
                  d      | _        g | _        ddddddddd d dddd| _	        y )Nztrade_history.jsonr   )total_tradeswinslosses	total_pnltotal_pnl_pctavg_pnl_pctwin_rateavg_duration_minutes
best_tradeworst_tradequick_exitstake_profitsstop_losses)
ospathdirnameabspath__file__
script_dirjoinhistory_filetradesstats)selfs    ./validate_creux_rebound.py__init__zCreuxReboundValidator.__init__   sv    ''//"''//(*CDGGLL:NO$%

    c                    t         j                  j                  | j                        st	        d       yt        | j                  dd      5 }t        j                  |      }ddd       D cg c]  }|j                  d      dv s| c}| _	        | j                  st	        d	       yt	        d
t        | j                         d       y# 1 sw Y   mxY wc c}w )zCharge l'historique des tradesu&   ❌ Aucun historique de trades trouvéFrutf-8encodingNpattern)CREUX_REBOUNDCREUX_REBOUND_EARLYu;   ⚠️  Aucun trade CREUX_REBOUND trouvé dans l'historiqueu   ✅ u"    trade(s) CREUX_REBOUND chargé(s)T)r   r   existsr   printopenjsonloadgetr   len)r   f
all_tradests       r    load_tradesz!CreuxReboundValidator.load_trades#   s    ww~~d//0:;$##S7; 	&q1J	& #-mQi0@Dl0lqm{{OPS%&&HIJ	& 	& ns   C0C	CCc                    | j                   syg }g }g }t        t              }| j                   D ]"  }|j                  dd      }|j                  dd      }|j                  dd      }	 t	        j
                  |d         }	t	        j
                  |d         }
|
|	z
  j                         d	z  }|j                  |       ||xx   d
z  cc<   |dkD  r)|j                  |       | j                  dxx   d
z  cc<   n(|j                  |       | j                  dxx   d
z  cc<   | j                  dxx   |z  cc<   | j                  dxx   |z  cc<   % t        | j                         | j                  d<   | j                  d   dkD  r"| j                  d   | j                  d   z  dz  nd| j                  d<   | j                  d   dkD  r| j                  d   | j                  d   z  nd| j                  d<   |rt        j                  |      nd| j                  d<   | j                   rJt        | j                   d       | j                  d<   t        | j                   d       | j                  d<   |j                  dd      | j                  d<   |j                  dd      | j                  d<   |j                  dd      | j                  d<   |||fS #  d}Y xY w)z1Analyse les performances des trades CREUX_REBOUNDNpnl_pctr   pnlreasonunknown
entry_time	exit_time<      r	   r
   r   r   r   d   r   r   r   c                 &    | j                  dd      S Nr7   r   r0   xs    r    <lambda>z6CreuxReboundValidator.analyze_trades.<locals>.<lambda>d   s    aeeIWXFY r"   )keyr   c                 &    | j                  dd      S rA   rB   rC   s    r    rE   z6CreuxReboundValidator.analyze_trades.<locals>.<lambda>e   s    quuYXYGZ r"   r   z
quick-exitr   take-profitr   	stop-lossr   )r   r   intr0   r   fromisoformattotal_secondsappendr   r1   
statisticsmeanmaxmin)r   r	   r
   	durationsreasons_counttrader7   r8   r9   r;   r<   duration_minutess               r    analyze_tradesz$CreuxReboundValidator.analyze_trades6   s   {{	#C([[ 	3Eii	1-G))E1%CYYx3F%%33E,4GH
$2253EF	$-
$:#I#I#Kb#P   !12
 &!Q&! {E"

6"a'"e$

8$)$JJ{#s*#JJ'72'5	3: &)%5

>"\`\f\fgu\vyz\z$**V"4tzz.7Q"QTW"W  AB

:`d`j`jky`z}~`~DJJ$?$**^B\$\  EF

=!KTZ__Y-GZ[

)* ;;'*4;;<Y'ZDJJ|$(+DKK=Z([DJJ}% %2$5$5lA$F

=!%2%6%6}a%H

>"$1$5$5k1$E

=!V]**C%#$ s   *AKKc           	         t        d       t        d       t        d       d}d}d}| j                  D ]  }|j                  dd      }|j                  dd      }d}	 t        j                  |d         }t        j                  |d	         }	|	|z
  j                         d
z  }d}
|dkD  r|
dz  }
|dkD  r|
dz  }
|j                  d      dk(  r|
dz  }
d|cxk  rdk  rn n|
dz  }
|dk  r|
dz  }
|j                  d      dk(  r|
dz  }
|
dk\  r|dz  }|
dk\  r|dz  }|dz  } t        | j                        }|dkD  r||z  dz  nd}|dkD  r||z  dz  nd}|dkD  r||z  dz  nd}t        d       t        d| d| d|dd       t        d| d| d|dd       t        d| d| d|dd       |d
k\  rt        d       y#||z   dk\  rt        d       y#||z   d k\  rt        d!       y#t        d"       y##  Y [xY w)$u1   Valide la qualité de la détection CREUX_REBOUNDG
======================================================================u1   🔍 VALIDATION QUALITÉ DÉTECTION CREUX_REBOUNDF======================================================================r   symbolUNKNOWNr7   r;   r<   r=      g      ?   r9   rH         r>   rI   r?   u   
📊 QUALITÉ DES DÉTECTIONS:u      🌟 Excellentes: / (.1f%)u      ✅ Bonnes:      u      ⚠️  Faibles:    uH   
🎯 ÉVALUATION: EXCELLENT - Le pattern détecte très bien les creux!F   u:   
✅ ÉVALUATION: BON - Le pattern fonctionne correctement2   uG   
⚠️  ÉVALUATION: MOYEN - Amélioration possible sur les conditionsu>   
❌ ÉVALUATION: FAIBLE - Les conditions doivent être revuesN)r,   r   r0   r   rK   rL   r1   )r   perfect_conditionsgood_conditionsweak_conditionsrT   rZ   r7   durationr;   r<   scoretotalperfect_pctgood_pctweak_pcts                  r    validate_detection_qualityz0CreuxReboundValidator.validate_detection_qualityn   s   mABf [[ -	%EYYx3Fii	1-GH%33E,4GH
$2253EF	%
2AACbH
 E {
 }
 yy"m3
 H##
 {
 yy"k1
 z"a'"!1$1$[-	%^ DKK <AAI)E1C716;aiOe+c1Q6;aiOe+c1Q02%&8%95'KPSCTTVWX$_$5QugR~RPQ''8%8C.PRST "]_8#r)OQ8#r)\^SUqs   AG::G?c                 v   | j                         \  }}}t        d       t        d       t        d       t        d       t        d| j                  d           t        d| j                  d    d	| j                  d
   dd       t        d| j                  d           t        d| j                  d   dd       t        d| j                  d   dd       t        d| j                  d   dd       t        d| j                  d   dd       t        d       t        d| j                  d    d	| j                  d   | j                  d   z  dz  dd       t        d | j                  d!    d	| j                  d!   | j                  d   z  dz  dd       t        d"| j                  d#    d	| j                  d#   | j                  d   z  dz  dd       | j                  d$   r`| j                  d$   }t        d%       t        d&|d'           t        d(|d)   dd       t        d*|d+           t        d,|d-           | j                  d.   r`| j                  d.   }t        d/       t        d&|d'           t        d(|d)   dd       t        d*|d+           t        d,|d-           | j                          t        d       t        d0       t        d       | j                  d
   d1k  rt        d2       | j                  d#   | j                  d   kD  rt        d3       | j                  d   d4k  rt        d5       n| j                  d   d6kD  rt        d7       | j                  d   d8k  rt        d9       n| j                  d   d:kD  rt        d;       t        d       y<)=u   Génère un rapport détaillérX   u.   📈 RAPPORT D'ANALYSE - PATTERN CREUX_REBOUNDrY   u   
📊 STATISTIQUES GLOBALES:z   Total trades:        r   z   Wins:                r	   ra   r   rb   rc   z   Losses:              r
   z   P&L Total:           r   z+.2fz USDTz   P&L Total %:         r   %z   P&L Moyen:           r   u      Durée moyenne:       r   z.0fz minutesu   
💰 RAISONS DE SORTIE:z   Take Profit:         r   r?   z   Quick Exit:          r   z   Stop Loss:           r   r   u   
🏆 MEILLEUR TRADE:z   Symbol:    rZ   z   P&L:       r7   z   Sortie:    r9   u      Entrée:    r;   r   u   
💔 PIRE TRADE:u   💡 RECOMMANDATIONS:re   uJ      ⚠️  Win rate < 50% - Renforcer conditions d'entrée (RSI, momentum)uL      ⚠️  Plus de stop-loss que de take-profit - Revoir SL/TP ou conditionsr   uG      ❌ P&L moyen négatif - Pattern non rentable, révision nécessaireg      ?uC      ✅ P&L moyen positif - Pattern rentable, continuer optimisationr^   uN      ⚠️  Durée moyenne < 5min - Trades trop rapides, risque de faux signauxr_   uO      ⚠️  Durée moyenne > 3h - Positions trop longues, risque de retournementN)rV   r,   r   ro   )r   r	   r
   reasonsbestworsts         r    generate_reportz%CreuxReboundValidator.generate_report   s     $ 3 3 5fgm>?f-/(N)C(DEF(F);(<Btzz*?UVY>ZZ\]^(H)=(>?@(K)@(FeLM(O)DT(J!LM(M)B4(HJK)$**5K*LS)QQYZ[)+(N)C(DBtzzR`Gabfblblm{b|G|  ~A  HA  BE  GF  FH  I  	J(M)B(C2djjQ^F_`d`j`jky`zFz{~F~  @C  FD  DF  G  	H(M)B(C2djjQ^F_`d`j`jky`zFz{~F~  @C  FD  DF  G  	H::l#::l+D*,N4>"234N4	?4"8:;N4>"234OD$6#789::m$JJ}-E&(N5?"345N5#3D"9;<N5?"345OE,$7#89: 	'') 	m%&f::j!B&^_::m$tzz.'AA`a::m$q([\ZZ&,WX::,-1bcZZ./#5cdmr"   c                     t        d       t        d       | j                         st        d       y| j                          t        j                  j                  | j                  d      }t        |dd      5 }t        j                  t        j                         j                         | j                  t        | j                        d	|d
       ddd       t        d       t        d       y# 1 sw Y    xY w)u    Exécute la validation complèteu+   
🤖 VALIDATEUR IA - PATTERN CREUX_REBOUNDrY   uF   
⏸️  Validation impossible - Attendez quelques trades pour analyseNzcreux_rebound_validation.jsonwr%   r&   )	timestampr   r   r]   )indentu8   
📄 Rapport sauvegardé: creux_rebound_validation.jsonzG======================================================================
)r,   r5   ru   r   r   r   r   r-   r.   dumpr   now	isoformatr   r1   r   )r   report_filer2   s      r    runzCreuxReboundValidator.run   s    <=f![\ ggll4??4ST+sW5 	II%\\^557 #DKK 0 		 	IKm	 	s   ;AC44C=N)
__name__
__module____qualname____doc__r!   r5   rV   ro   ru   r~    r"   r    r   r      s(    <
(&6+pLV\>@r"   r   __main__)r   r.   r   r   collectionsr   rN   r   r   	validatorr~   r   r"   r    <module>r      sH   
  	  # E EN z%'IMMO r"   