o
    �­ÑhW,  ã                   @   sv   d Z ddlZddlZddlZddlmZ ddlmZmZ ddlZe 	e
¡ZG dd„ dƒZdd„ Ze
d	kr9eƒ  dS dS )
uB   
Module pour analyser les donnÃ©es de trading avec Claude via API
é    N)Údatetime)ÚDictÚOptionalc                   @   s€   e Zd Zddefdd„Zdedefdd„Zd	edee fd
d„Zdedefdd„Z	dedee fdd„Z
dd	edefdd„ZdS )ÚClaudeAnalyzerNÚapi_keyc                 C   s4   |pt  d¡| _d| _d| _| jst d¡ d S d S )NÚANTHROPIC_API_KEYz%https://api.anthropic.com/v1/messageszclaude-3-sonnet-20240229uR   ClÃ© API Claude non trouvÃ©e. Utilisez ANTHROPIC_API_KEY env var ou passez api_key)ÚosÚgetenvr   Úapi_urlÚmodelÚloggerÚwarning)Úselfr   © r   ú:/var/www/html/HyperOracle/crypto_trader/claude_analyzer.pyÚ__init__   s   ÿzClaudeAnalyzer.__init__Útrading_dataÚreturnc                 C   s|  d|  dd¡› d|  dd¡› d�}|  di ¡}|d	|  d
d¡› d|  dd¡d›d|  dd¡› d|  dd¡› d|  dd¡d›d|  dd¡› d�7 }|  dg ¡}|r˜|d7 }t|dd… ƒD ];\}}|  d¡durpd|  dd¡› �nd}||d  › d!|d" › d#|d$ › d#|d% › d&|d' › d(|› d(|d) › d*�7 }q\|  d+g ¡}|rì|d,7 }t|dd… ƒD ]?\}}	|	d- r¶d.nd/}
|	  d0¡rÆd1|	  d0d¡› �nd2}||d  › d!|
› d(|	d" › d#|	d3 › d4|	d5 d›d6|	d) › |› d*�7 }q¬|  d7i ¡}|�r8|d87 }| ¡ D ]:\}}|�r7t|ƒdk�r7|d9 }|d }|d: |d;  |d;  d< }||› d=|d: d>›d?|d@›dAt|ƒ› dB�7 }qý|dC7 }|S )Du%   CrÃ©e le prompt d'analyse pour Claudeu¿   Tu es un expert en trading algorithmique. Analyse les donnÃ©es suivantes de mon bot de trading crypto et fournis une Ã©valuation dÃ©taillÃ©e.

=== DONNÃ‰ES DE TRADING ===
PÃ©riode analysÃ©e: Úperiod_hoursé   zh
Timestamp: Ú	timestampzN/Au#   

=== PERFORMANCES GÃ‰NÃ‰RALES ===
Úperformanceu   
- Trades exÃ©cutÃ©s: Ú
trades_24hr   z
- PnL total: Útotal_pnl_24hú.2fõ   $
- Signaux gÃ©nÃ©rÃ©s: Úsignals_generated_24hu   
- Signaux exÃ©cutÃ©s: Úsignals_executed_24hõ   
- Taux d'exÃ©cution: Úexecution_rateú.1fz%
- Positions actives: Úactive_positionsz

Útradesu   === TRADES RÃ‰CENTS ===
Né   ÚpnlzPnL: zPnL: N/Aé   z. ÚsymbolÚ ÚsideÚsizez @ $Úpricez | r   Ú
Úsignalsu   
=== SIGNAUX RÃ‰CENTS ===
Úexecutedu   âœ“ EXÃ‰CUTÃ‰u   âœ— REJETÃ‰Úreasonz | Raison: Ú Úsignal_typez (conf: Ú
confidencez) | Úcandle_datau   
=== DONNÃ‰ES DE MARCHÃ‰ ===
éÿÿÿÿÚcloseÚopenéd   z: Prix actuel $z.4fz | Variation z+.2fz% | z chandeliers
uÚ  

=== DEMANDE D'ANALYSE ===

Fournis une analyse complÃ¨te incluant:

1. **Ã‰VALUATION DES PERFORMANCES**:
   - Analyse du taux de rÃ©ussite et de la rentabilitÃ©
   - Ã‰valuation du nombre de trades et de leur qualitÃ©
   - Commentaire sur le taux d'exÃ©cution des signaux

2. **ANALYSE DES PATTERNS**:
   - Identification des symboles les plus tradÃ©s
   - Patterns temporels (heures d'activitÃ©)
   - Types de signaux les plus frÃ©quents

3. **ANALYSE DU COMPORTEMENT DU BOT**:
   - Ã‰valuation de la sÃ©lectivitÃ© (rejets vs exÃ©cutions)
   - CohÃ©rence des dÃ©cisions de trading
   - Identification d'Ã©ventuels biais ou problÃ¨mes

4. **RECOMMANDATIONS**:
   - Ajustements suggÃ©rÃ©s pour les paramÃ¨tres
   - AmÃ©liorations potentielles de la stratÃ©gie
   - Points d'attention ou signaux d'alerte

5. **CONTEXTE MARCHÃ‰**:
   - CorrÃ©lation avec les mouvements de prix
   - Adaptation aux conditions de marchÃ© actuelles

Sois prÃ©cis, critique et constructif dans ton analyse.
)ÚgetÚ	enumerateÚitemsÚlen)r   r   Úpromptr   r"   ÚiÚtradeÚpnl_strr,   Úsignalr-   r.   r2   r&   ÚcandlesÚlatestÚfirstÚprice_changer   r   r   Úcreate_analysis_prompt   sX   
ý
ü	
ÿ
þ
ý
ü
û

ú$L H,€!z%ClaudeAnalyzer.create_analysis_promptr;   c              
   C   sà   | j s
t d¡ dS d| j ddœ}| jdd|dœgd	œ}z8t d
¡ tj| j||dd�}|jdkrE| 	¡ }|d d d }t d¡ |W S t d|j› d|j
› �¡ W dS  tyo } zt d|› �¡ W Y d}~dS d}~ww )z!Appelle l'API Claude pour analyseu   ClÃ© API Claude manquanteNzapplication/jsonz
2023-06-01)zContent-Typez	x-api-keyzanthropic-versioni   Úuser)ÚroleÚcontent)r   Ú
max_tokensÚmessagesu%   Envoi de la requÃªte Ã  Claude API...é<   )ÚheadersÚjsonÚtimeoutéÈ   rG   r   Útextu   Analyse reÃ§ue de ClaudezErreur API Claude: z - u(   Erreur lors de l'appel Ã  l'API Claude: )r   r   Úerrorr   ÚinfoÚrequestsÚpostr
   Ústatus_coderL   rO   Ú	Exception)r   r;   rK   ÚdataÚresponseÚresultÚanalysisÚer   r   r   Úcall_claude_apin   s:   
ýþÿý


€þzClaudeAnalyzer.call_claude_apic                 C   s.  |  di ¡}|  dd¡}|  dd¡}|  dd¡}|  dd¡}|  dd¡}d}d	}	|dkr5|dkr5d
}d}	n|dk s=|dk rBd}d}	n|dkrN|dkrNd}d	}	d|› d|	d›d|› d|d›d|› d|d›d|dkrjdnd› d|dkrsdnd› d|dkr|dnd › d!|	d›d"t ¡  d#¡› d�}
t d$|	› �¡ |
S )%uI   GÃ©nÃ¨re une analyse de fallback simple quand Claude n'est pas disponibler   r   r   r   r   r   r   ÚNEUTREg      è?ÚPOSITIFgš™™™™™é?iÎÿÿÿé
   u   NÃ‰GATIFgffffffæ?ÚATTENTEu?   === ANALYSE AUTOMATIQUE (MODE FALLBACK) ===

STATUT GÃ‰NÃ‰RAL: u   
Score de qualitÃ© estimÃ©: r   u)   

MÃ‰TRIQUES CLÃ‰S:
- Trades exÃ©cutÃ©s: z
- PnL 24h: r   r   r    u   %

Ã‰VALUATION:
u"   âœ“ Performance positive observÃ©eu#   âš  Performance nÃ©gative ou neutrer+   u    âœ“ ActivitÃ© de trading normaleu   â„¹ Aucun trade exÃ©cutÃ©u"   âœ“ GÃ©nÃ©ration de signaux activeu   âš  Pas de signaux gÃ©nÃ©rÃ©suª  

RECOMMANDATIONS (Mode conservateur):
1. Maintenir les paramÃ¨tres actuels
2. Surveiller l'Ã©volution du marchÃ©
3. Ã‰viter les positions trop risquÃ©es
4. ConsidÃ©rer l'augmentation graduelle si performance positive

LIMITATIONS:
Cette analyse est gÃ©nÃ©rÃ©e automatiquement sans l'intelligence avancÃ©e de Claude.
Pour une analyse complÃ¨te, vÃ©rifiez les crÃ©dits API Claude.

Score recommandÃ© pour les nouveaux signaux: z
Timestamp: z%Y-%m-%d %H:%M:%Su%   Analyse fallback gÃ©nÃ©rÃ©e - Score: )r7   r   ÚnowÚstrftimer   rQ   )r   r   r   Útrades_countÚ	total_pnlÚsignals_generatedÚsignals_executedr   ÚstatusÚquality_scorerY   r   r   r   Úgenerate_fallback_analysis–   sT   þýúùø	÷ôóòæåz)ClaudeAnalyzer.generate_fallback_analysisc              
   C   sz  t  d¡ |  |¡}|  |¡}|st  d¡ |  |¡}|r»t ¡  d¡}d|› d�}zut	|ddd��[}| 
d	t ¡  ¡ › d
�¡ | 
|¡ | 
d¡ | 
d| dd¡› d�¡ | 
dt| dg ¡ƒ› d�¡ | 
dt| dg ¡ƒ› d�¡ | 
d| di ¡ dd¡› d�¡ W d  ƒ n1 s�w   Y  t  d|› �¡ W |S  tyº } zt  d|› �¡ W Y d}~|S d}~ww |S )u)   Analyse complÃ¨te des donnÃ©es de tradingu"   DÃ©but de l'analyse avec Claude...z6API Claude indisponible - Utilisation du mode fallbackú%Y%m%d_%H%M%Szlogs/claude_analysis_ú.txtÚwúutf-8©Úencodingz=== ANALYSE CLAUDE - z ===

u   

=== DONNÃ‰ES ANALYSÃ‰ES ===
u
   PÃ©riode: r   r   zh
zTrades: r"   r+   z	Signaux: r,   z
Symboles: ÚsummaryÚsymbols_countr   Nu   Analyse sauvegardÃ©e: z+Erreur lors de la sauvegarde de l'analyse: )r   rQ   rD   r[   r   rh   r   r`   ra   r5   ÚwriteÚ	isoformatr7   r:   rU   rP   )r   r   r;   rY   r   Úanalysis_fileÚfrZ   r   r   r   Úanalyze_trading_dataÏ   s6   






$ù	ý€ýz#ClaudeAnalyzer.analyze_trading_dataÚfilenamec              
   C   s¨   |du rt  ¡  d¡}d|› d�}z't|ddd��}| |¡ W d  ƒ n1 s)w   Y  t d|› �¡ W dS  tyS } zt d	|› �¡ W Y d}~dS d}~ww )
zSauvegarde le prompt pour debugNri   zlogs/debug_prompt_rj   rk   rl   rm   u   Prompt sauvegardÃ©: zErreur sauvegarde prompt: )	r   r`   ra   r5   rq   r   rQ   rU   rP   )r   r;   rv   r   rt   rZ   r   r   r   Úsave_prompt_for_debugô   s   ÿ€ÿz$ClaudeAnalyzer.save_prompt_for_debug)N)Ú__name__Ú
__module__Ú__qualname__Ústrr   r   rD   r   r[   rh   ru   rw   r   r   r   r   r      s    V(9%r   c                  C   s~   t ƒ } t ¡  ¡ ddddddddœgdd	d
dddœgdddddddœdœ}|  |¡}|  |¡ tdƒ tdt|ƒ› d�ƒ dS )u-   Test de l'analyzer avec des donnÃ©es facticesr   ÚBTCÚLONGg{®Gáz„?i¸ g     Ðb@z2024-01-01 12:00:00)r&   r(   r)   r*   r$   r   ÚBUYg333333ë?Tz2024-01-01 11:55:00)r&   r0   r1   r-   r   é   g     Xo@é   gš™™™™ÙD@é   )r   r   r   r   r   r!   )r   r   r"   r,   r   u*   Prompt gÃ©nÃ©rÃ© et sauvegardÃ© pour debugzLongueur du prompt: u    caractÃ¨resN)r   r   r`   rr   rD   rw   Úprintr:   )ÚanalyzerÚ	test_datar;   r   r   r   Útest_analyzer  s<   
úÿûÿ
úê
!
r…   Ú__main__)Ú__doc__rL   rR   Úloggingr   Útypingr   r   r   Ú	getLoggerrx   r   r   r…   r   r   r   r   Ú<module>   s   
 t,
ÿ