o
    -¨i4  ã                   @   s(  d Z ddlmZ ddlmZ ddlZddlZddlm	Z	m
Z
 ddlZG dd„ deƒZedƒ ed	ƒ edƒ ed
ddd�Zedƒ e ddd¡Zedu rPedƒ edeeƒ› d�ƒ edƒ edƒ g d¢Zg d¢ZddddddddœZg ZdZeeƒeeƒ ZeD ]^\ZZeD ]WZed7 Zede› d e› d!e› d e› d"e› �
d#d$d%� z6edÙeeed&œe¤ŽZejeded'd(�ZerÙej dkrÙe !eeeej"ej#ej$ej ej%ej&ej'ej(d)œ¡ W qˆ   Y qˆq‚ed*ƒ ed+ƒ edƒ es÷ed,ƒ edƒ ej)d-d.„ d$d/� edd0… Z*ed1d2d3›d4d5d6›d4d7d8›d4d9d:›d4d;d<›d4d=d:›d4d>d8›d4d?d@›d4dAd8›d4dBdC›�ƒ edDƒ e+e*dƒD ]k\Z,Z-e,dk�rFdEne,dFk�rMdGn
e,dHk�rTdIne,dJ›Z.e-dK dk�radLndMZ/ee.d3›d4e-dN d6›d4e-dO d8›d4e-dP d:›d4e-dK dQ›dRe-dS dT dU›dRe-dV dQ›d4e-dW d@›d4e-dX dY›dRe-dZ d[›d4e/› �ƒ �q;e*d Z0ed\ƒ ed]e0dN › d^e0dO › d_�ƒ ed`e0dP › da�ƒ edbe0dK dc›d_�ƒ edde0dV de›�ƒ edfe0dW › �ƒ edgƒ edƒ e0dN e0dO e0dP d&œZ1g dh¢Z2g di¢Z3g dj¢Z4g dk¢Z5g dl¢Z6g Z7dZdTZ8edme8› dn�ƒ e9e8ƒD ]–Z:ed7 Zej; <e2¡Z=ej; <e3¡Z>e4ej; ?dee4ƒ¡ \Z@ZAej; <e5¡ZBej; <e6¡ZCede› d e8› doeDdpdq„ e7D ƒddr�dc›d_�d#d$d%� zJedÙi e1¤e=e>e@eAeBeCddœ¤ŽZejeded'd(�Ze�r®ej dk�r®e7 !i e1¥e=e>e@eAeBeCdsœ¥ej"ej#ej$ej ej%ej&ej'ej(ejEdtœ
¡ W �q    Y �q ed*ƒ eduƒ edƒ e7j)dvd.„ d$d/� e7dd… ZFed1d2d3›d4dwd:›d4dxdy›d4dzd<›d4d{d:›d4d|d@›d4d}d8›d4d=d:›d4d>d8›d4dAd8›d4d?dy›�ƒ ed~ƒ e+eFdƒD ]€\Z,Z-e-d ZGe,dk�rdEne,dFk�r!dGn
e,dHk�r(dIne,dJ›Z.e-dK dk�r5dLndMZ/eGd€ › d�eGd‚ › �ZHee.d3›d4eGdƒ d„›d4eGd… dy›d4eHd<›d4eGd† dT d‡›d4eGdˆ dU›d4e-dK dY›dRe-dS dT dU›dRe-dV dQ›d4e-dX dY›dRe-dW dy›d4e/› �ƒ �qeFd ZIed‰d› �ƒ edŠƒ ed› ƒ ed‹ƒ edŒeIdK dc›dReIdK dk�rµd�ndM› �ƒ edŽeIdZ de›�ƒ ed�eIdZ d de›�ƒ ed�eIdS dT d‘›d_�ƒ ed’eIdV de›d“�ƒ ed”eIdX de›d_�ƒ ed•eIdW › �ƒ ed–eId— › �ƒ eIdW dk�rBed˜ƒ ed™eIdš de›d_�ƒ ed›eIdœ de›d_�ƒ eIdœ dk�r7eJeIdš eIdœ  ƒndZKed�eKde›dž�ƒ eId ZGedŸƒ ed ƒ ed¡eGdN › d¢eGdN › d£�ƒ ed¤eGdO › d¥eGdO › d£�ƒ ed¦eGdP › da�ƒ ed§ƒ ed¨eGdƒ de›�ƒ ed©eGd… › dªdFeGd…  › d£�ƒ ed«eGd€ › d¬eGd‚ › dž�ƒ ed­eGd† dT d®›d_�ƒ ed¯eGdˆ d‘›d°�ƒ eGdƒ dFeGd…   ZLed±ƒ ed²eLde›�ƒ ed³deL de›dž�ƒ ed´dµeGd… d  dT d¶›d_�ƒ ed› ƒ ed·ƒ edƒ ed# Mg d¸‘eGdN › ‘d¹‘eGdO › ‘dº‘eGdP › ‘d»‘eGdƒ › ‘d¼‘eGd… › ‘d½‘eGd€ › ‘d¾‘eGd‚ › ‘d¿‘eGd† › ‘dÀ‘eGdˆ › ‘dÁ‘eIdK dc›‘dÂ‘eIdS dT d‘›‘dÃ‘eIdV de›‘dÄ‘eIdX de›‘dÅ‘eGdN › ‘dÆ‘eGdP › ‘dÇ‘eGdO › ‘dÆ‘eGdP › ‘dÈ‘¡ƒ edƒ eNdÉdÊƒ�ZOejPeId eIeFee7dËœeOdFeQdÌ� W d  ƒ n	1 �s§w   Y  edÍƒ dÎdq„ e7D ƒZRedÏƒ edÐee7ƒ› �ƒ edÑeeRƒ› dÒeeRƒee7ƒ dT d‘›dÓ�ƒ eR�re SdÔdq„ eRD ƒ¡ZTe SdÕdq„ eRD ƒ¡ZUedÖeTde›d_�ƒ ed×eUde›�ƒ ed1d› �ƒ edØƒ ed› ƒ dS )Úu›  
OPTIMISEUR PRICE EXTREMES - La stratÃ©gie la plus prometteuse!

PF: 19.99 (gain moyen 20x la perte!)
ROI: +3.45%
WR: 54%
DD: -0.06%

Principe:
- Acheter quand prix <= percentile bas (ex: 10%)
- Vendre quand prix >= percentile haut (ex: 90%)
- Mean reversion basique mais TRÃˆS efficace

On optimise:
1. Percentiles (5/95, 10/90, 15/85, etc.)
2. Lookback period (50, 100, 200 bougies)
3. ParamÃ¨tres martingale
é    )ÚMartingaleBacktester)ÚTrueMartingaleStrategyN)ÚOptionalÚTuplec                       sB   e Zd ZdZd‡ fdd„	Zdejdeee	e
f  fd	d
„Z‡  ZS )ÚOptimizedPriceExtremesu@   Version optimisÃ©e de Price Extremes avec paramÃ¨tres ajustablesé
   éZ   éd   c                    s(   t ƒ jdi |¤Ž || _|| _|| _d S )N© )ÚsuperÚ__init__Úpercentile_lowÚpercentile_highÚlookback)Úselfr   r   r   Úkwargs©Ú	__class__r
   úS/var/www/html/HyperOracle/crypto_trader/martingale_degen/optimize_price_extremes.pyr       s   
zOptimizedPriceExtremes.__init__ÚdfÚreturnc                 C   sp   |j d }t|ƒ| jk rdS |d  | j¡}| | jd ¡}| | jd ¡}|d |kr.dS |d |kr6dS dS )z*Generate signal based on price percentileséÿÿÿÿNÚcloseg      Y@)ÚLONGç      ð?)ÚSHORTr   )ÚilocÚlenr   ÚtailÚquantiler   r   )r   r   ÚcurrentÚrecent_pricesÚp_lowÚp_highr
   r
   r   Úgenerate_base_signal&   s   
z+OptimizedPriceExtremes.generate_base_signal)r   r   r	   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚpdÚ	DataFramer   r   ÚstrÚfloatr$   Ú__classcell__r
   r
   r   r   r      s    (r   zP================================================================================u4   ðŸŽ¯ OPTIMISEUR PRICE EXTREMES - StratÃ©gie PF 19.99g     @�@gü©ñÒMb@?é<   )Úinitial_capitalÚtrading_fee_pctÚtimeout_minutesu"   
ðŸ“¥ TÃ©lÃ©chargement donnÃ©es...ÚBTCUSDTÚ1méè  é   u   âœ… z	 bougies
u1   ðŸ”¬ PHASE 1: OPTIMISATION PERCENTILES & LOOKBACK))é   é_   )r   r   )é   éU   )é   éP   )é   éK   )é2   r	   é–   éÈ   g      &@é   r:   çú~j¼t“h?ç      @g        )Úbase_position_sizeÚmax_martingale_levelÚbase_leverageÚmax_leverageÚstop_loss_pctÚtake_profit_ratioÚmin_signal_scoreu   ðŸ§ª Test ú/z | Pz LBÚ T)ÚendÚflush)r   r   r   F)Úverbose)r   r   r   ÚroiÚwin_rateÚprofit_factorÚtradesÚmax_ddÚcapitalÚavg_winÚavg_losszR

================================================================================u-   ðŸ�† TOP 10 COMBINAISONS PERCENTILES/LOOKBACKu(   
â�Œ Aucun rÃ©sultat en Phase 1! ArrÃªt.c                 C   ó   | d S )NrR   r
   ©Úxr
   r
   r   Ú<lambda>—   ó    r[   )ÚkeyÚreverser   Ú
ú#z<3ú zP-Lowz>6zP-Highz>7ÚLBz>5zROI %z>8zWR%ÚPFÚTrz>4zDD%zCap $z>10zP--------------------------------------------------------------------------------u   ðŸ¥‡é   u   ðŸ¥ˆé   u   ðŸ¥‰Ú2rP   u   âœ…u   â�Œr   r   r   z>7.2fz% rQ   r	   z>4.1frR   rS   rT   z>6.2frU   z>9.2fu   
âœ¨ MEILLEURE COMBINAISON:z   Percentiles: z% / ú%z   Lookback:    z bougiesz   ROI:         z+.2fz   PF:          z.2fz   Trades:      u3   

ðŸ”¬ PHASE 2: OPTIMISATION PARAMÃˆTRES MARTINGALE)rf   r6   é   é	   é   é   r8   )r6   rA   ri   é   ))r   iô  )r8   iî  )r:   r4   )r<   r4   )gü©ñÒMb`?g{®Gázd?rB   gyé&1¬l?gü©ñÒMbp?)g       @g      @rC   g      @g      @u   ðŸŽ¯ Test de z combinaisons intelligentes...
z | Meilleur ROI: c                 C   ó   g | ]}|d  ‘qS ©rP   r
   ©Ú.0Úrr
   r
   r   Ú
<listcomp>Û   ó    rs   )Údefault)rD   rE   rF   rG   rH   rI   )
ÚconfigrP   rQ   rR   rS   rT   rU   rV   rW   Úmax_consec_lossesu%   ðŸ�† TOP 20 CONFIGURATIONS COMPLÃˆTESc                 C   rX   )NrP   r
   rY   r
   r
   r   r[     r\   zPos$ÚLvz>3ÚLegzSL%ÚTPzROI%zU-------------------------------------------------------------------------------------rv   rF   u   â†’rG   rD   z>5.0frE   rH   z>4.2frI   z

u*   ðŸ�† CONFIGURATION OPTIMALE PRICE EXTREMESu   
ðŸ“Š PERFORMANCE:z   ROI:                u   âœ… PROFITABLE!z   Capital final:      $z   Gain:               $z   Win Rate:           z.1fz   Profit Factor:      u    ðŸš€z   Max Drawdown:       z   Trades:             z   Max pertes consec:  rw   u   
ðŸ’° STATISTIQUES TRADES:z   Gain moyen:         +rV   z   Perte moyenne:      rW   z   Ratio Gain/Perte:   rZ   u   
âš™ï¸�  PARAMÃˆTRES OPTIMAUX:u   
   ðŸ“� PERCENTILES:z      Percentile BAS:     z% (LONG si prix <= Pú)z      Percentile HAUT:    z% (SHORT si prix >= Pz      Lookback period:    u   
   ðŸ’° MARTINGALE:z      Position de base:   $z      Max level:          z (xz      Leverage:           u   x â†’ z      Stop Loss:          z.3fz      Take Profit:        zx SLu   
ðŸ§® ANALYSE MATHÃ‰MATIQUE:z   Position max:       $u      Marge sÃ©curitÃ©:     z   Proba ruine:        g      à?z.4fu   
ðŸ“� CODE POUR UTILISER:z…
from optimize_price_extremes import OptimizedPriceExtremes

strategy = OptimizedPriceExtremes(
    # Percentiles
    percentile_low=z,
    percentile_high=z,
    lookback=z+,

    # Martingale
    base_position_size=z,
    max_martingale_level=z,
    base_leverage=z,
    max_leverage=z,
    stop_loss_pct=z,
    take_profit_ratio=z5,
    min_signal_score=0.0
)

# STATISTIQUES:
# ROI: z%
# Win Rate: z%
# Profit Factor: z
# Max DD: z,%

# LOGIQUE:
# LONG  si prix <= percentile z% des u2    derniÃ¨res bougies
# SHORT si prix >= percentile u<    derniÃ¨res bougies
# Sinon: rien (on attend les extrÃªmes)
zprice_extremes_optimized.jsonÚw)Úbest_configÚbest_metricsÚtop_20Úphase1_resultsÚphase2_results)Úindentru   u/   
ðŸ’¾ RÃ©sultats: price_extremes_optimized.jsonc                 C   s   g | ]
}|d  dkr|‘qS )rP   r   r
   rp   r
   r
   r   rs   z  s    u   
ðŸ“ˆ STATISTIQUES GLOBALES:u      Configs testÃ©es:     z   Configs profitables: z (z%)c                 C   rn   ro   r
   rp   r
   r
   r   rs     rt   c                 C   rn   )rR   r
   rp   r
   r
   r   rs   €  rt   z   ROI moyen:           +z   PF moyen:            u   ðŸŽ‰ OPTIMISATION TERMINÃ‰E!r
   )Vr(   Úmartingale_backtesterr   Útrue_martingaler   ÚnumpyÚnpÚjsonÚtypingr   r   Úpandasr)   r   ÚprintÚ
backtesterÚfetch_binance_datar   Úexitr   Úpercentile_configsÚlookback_periodsÚbase_martingale_configr€   Útest_numÚtotal_testsr"   r#   r   ÚstrategyÚrun_backtestÚresultÚtotal_tradesÚappendÚtotal_return_pctrQ   rR   Úmax_drawdown_pctÚfinal_capitalÚavg_win_pctÚavg_loss_pctÚsortÚtop_10_phase1Ú	enumerateÚrankÚresÚemojiÚstatusÚbest_p1Úbest_percentilesÚposition_sizesÚ
max_levelsÚ	leveragesÚsl_pctsÚ	tp_ratiosr�   Únum_samplesÚrangeÚiÚrandomÚchoiceÚpos_sizeÚmax_lvÚrandintÚbase_levÚmax_levÚslÚtpÚmaxÚmax_consecutive_lossesr   ÚcfgÚlev_strÚbestÚabsÚratioÚmax_positionÚjoinÚopenÚfÚdumpr+   Ú
profitableÚmeanÚavg_roiÚavg_pfr
   r
   r
   r   Ú<module>   s~  ýù
"ÿýüõ€á!4ÿÿÿÿ2"ÿÿÿþþýýýýÿþÿ
øÿù	î€4ÿÿÿÿÿ2"ÿÿÿþþýýýý
,&""
ûúù
öõôóòñ
ì

ë
ê
éææååûúÿ	,