o
    ¥¨i™$  ã                   @   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 ZdD ]ZdD ]ZdD ]Ze eeddeddœ¡ qnqjqfdD ]ZdD ]ZdD ]Ze eed deddœ¡ q‰q…q�d!D ]Zd"D ]Zd#D ]Ze eed$ded%dœ¡ q¤q qœed&eeƒ› d'�ƒ g Zd(ZeedƒD ]d\ZZd)ed*< ed+e› d,eeƒ› d-ed.›d/�d0d1d2� zCed±i e¤ŽZejeded3d4�Z e �r&e j!dk�r&e "¡ e j#e j$e j%e j!e j&e j'e j(e j)e j*d5œ
Z+e e+¡ e+d6 ek�r&e+d6 ZW qÈ   Y qÈed7ƒ ed8ƒ edƒ e�sDed9ƒ edƒ ej,d:d;„ d1d<� edd … Z-ed=d>d?›d@dAdB›d@dCdD›d@dEdF›d@dGdH›d@dIdJ›d@dKdL›d@dMdH›d@dNdB›d@dOdL›d@dPdD›�ƒ edQƒ ee-dƒD ]€\Z.Z/e/dR Z0e.dk�r›dSne.dTk�r¢dUn
e.dVk�r©dWne.dX›Z1e/d6 dk�r¶dYndZZ2e0d[ › d\e0d] › �Z3ee1d?›d@e0d^ d_›d@e0d` dD›d@e3dF›d@e0da db dc›d@e0dd de›d@e/d6 df›dge/dh db de›dge/di df›d@e/dj df›dge/dk dD›d@e2› �ƒ �qŒe-d Z4edld› �ƒ edmƒ ed› ƒ ednƒ edoe4d6 d.›dge4d6 dk�r6dpndZ› �ƒ edqe4dr ds›�ƒ edte4dr d ds›�ƒ edue4dh db dv›d/�ƒ edwe4di ds›�ƒ edxe4dj ds›d/�ƒ edye4dk › �ƒ edze4d{ › �ƒ e4dk dk�rÂed|ƒ ed}e4d~ ds›d/�ƒ ede4d€ ds›d/�ƒ e4d€ dk�r·e5e4d~ e4d€  ƒndZ6ed�e6ds›d‚�ƒ e4dR Z0edƒƒ ed„e0d^ ds›�ƒ ed…e0d` › d†dTe0d`  › d‡�ƒ edˆe0d[ › d‰e0d] › d‚�ƒ edŠe0da db d‹›d/�ƒ edŒe0dd dv›d��ƒ e0d^ dTe0d`   Z7edŽƒ ed�e7ds›�ƒ ed�de7 ds›d‚�ƒ ed‘d’e0d` d  db d“›d/�ƒ ed”ƒ ed•ƒ ed–ƒ ed—ƒ ed˜ƒ ed› ƒ ed™ƒ edƒ edše0d^ › d›e0d` › dœe0d[ › d�e0d] › dže0da › dŸe0dd › d e4d6 d.›d¡�ƒ edƒ e8d¢d£ƒ�Z9ej:e4dR e4e-ed¤œe9dTe;d¥� W d  ƒ n	1 �s­w   Y  ed¦ƒ d§d¨„ eD ƒZ<ed©ƒ edªeeƒ› �ƒ ed«ee<ƒ› d¬ee<ƒeeƒ db dv›d­�ƒ e<�röe =d®d¨„ e<D ƒ¡Z>ed¯e>ds›d/�ƒ ed=d› �ƒ ed°ƒ ed› ƒ dS )²us  
ULTIMATE MARTINGALE - StratÃ©gie mathÃ©matique pure optimale

RÃ¨gles:
1. Choisir LONG ou SHORT au hasard pour le 1er trade
2. Martingaler (doubler) dans le MÃŠME sens jusqu'Ã  gagner
3. Quand on GAGNE â†’ CHANGER DE CÃ”TÃ‰ pour le prochain
4. RÃ©pÃ©ter

Avantages:
- Pas de TA inutile (50% WR suffit)
- Ã‰quilibrage automatique LONG/SHORT
- Edge purement mathÃ©matique
é    )ÚTrueMartingaleStrategy)ÚMartingaleBacktesterN)ÚOptionalÚTuplec                       sN   e Zd ZdZ‡ fdd„Zdejdeee	e
f  fdd„Zdefd	d
„Z‡  ZS )ÚUltimateMartingaleu6   Martingale pure avec alternance des cÃ´tÃ©s aprÃ¨s winc                    s(   t ƒ jdi |¤Ž d | _tj d¡ d S )Né*   © )ÚsuperÚ__init__Úlast_winning_sideÚnpÚrandomÚseed)ÚselfÚkwargs©Ú	__class__r   úO/var/www/html/HyperOracle/crypto_trader/martingale_degen/ultimate_martingale.pyr
      s   zUltimateMartingale.__init__ÚdfÚreturnc                 C   sB   | j du rtj ¡ dkrdnd}|dfS | j dkrdnd}|dfS )uL   
        GÃ©nÃ¨re signal en alternant les cÃ´tÃ©s aprÃ¨s chaque win
        Nç      à?ÚLONGÚSHORTg      ð?)r   r   r   )r   r   Úsider   r   r   Úgenerate_base_signal    s
   
þz'UltimateMartingale.generate_base_signalÚwonc                 C   sT   |r| j | _d| _d| _d| _ d| _dS |  jd7  _t| jd | jƒ| _d| _dS )u#   Met Ã  jour l'Ã©tat aprÃ¨s un trader   NFé   T)Úcurrent_sider   Úconsecutive_lossesÚcurrent_levelÚlocked_in_martingaleÚminÚmax_martingale_level)r   r   r   r   r   Úupdate_after_trade.   s   

z%UltimateMartingale.update_after_trade)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r
   ÚpdÚ	DataFramer   r   ÚstrÚfloatr   Úboolr#   Ú__classcell__r   r   r   r   r      s
     r   zP================================================================================u<   ðŸŽ¯ ULTIMATE MARTINGALE - MathÃ©matiques pures + Alternanceg     @�@gü©ñÒMb@?é<   )Úinitial_capitalÚtrading_fee_pctÚtimeout_minutesu"   
ðŸ“¥ TÃ©lÃ©chargement donnÃ©es...ÚBTCUSDTÚ1miè  r   u   âœ… z	 bougies
u,   ðŸ”¬ OPTIMISATION PARAMÃˆTRES MATHÃ‰MATIQUES)r   r   é   é   )é   é	   é
   )çú~j¼t“h?gü©ñÒMbp?g{®Gázt?r8   iô  g      @)Úbase_position_sizer"   Úbase_leverageÚmax_leverageÚstop_loss_pctÚtake_profit_ratio)é   é   r7   é   )é   r@   )ç{®Gázd?r9   gyé&1¬l?é   )é   rD   é   )é   r?   )gü©ñÒMb`?rC   é   g      @u   ðŸŽ¯ u    configurations Ã  tester
iüÿÿg        Úmin_signal_scoreu   ðŸ§ª Test ú/z | Meilleur ROI: z+.2fú%Ú T)ÚendÚflushF)Úverbose)
ÚconfigÚroiÚwin_rateÚprofit_factorÚtradesÚmax_ddÚcapitalÚmax_consec_lossesÚavg_winÚavg_lossrQ   zR

================================================================================u   ðŸ�† TOP 20 CONFIGURATIONSu   
â�Œ Aucun rÃ©sultat valide!c                 C   s   | d S )NrQ   r   )Úxr   r   r   Ú<lambda>©   s    r[   )ÚkeyÚreverseÚ
ú#z<3ú zPos$z>6ÚLvz>3ÚLegz>8zSL%z>5ÚTPz>4zROI%z>7zWR%ÚPFzDD%ÚTrzP--------------------------------------------------------------------------------rP   u   ðŸ¥‡r4   u   ðŸ¥ˆr5   u   ðŸ¥‰Ú2u   âœ…u   â�Œr;   u   â†’r<   r:   z>6.1fr"   r=   éd   z>4.2fr>   z>4.1fz>6.2fz% rR   rS   rU   rT   z

u1   ðŸ�† CONFIGURATION OPTIMALE - ULTIMATE MARTINGALEu   
ðŸ“Š PERFORMANCE:z   ROI:               u   âœ… PROFITABLE!z   Capital final:     $rV   z.2fz   Gain:              $z   Win Rate:          z.1fz   Profit Factor:     z   Max Drawdown:      z   Trades:            z   Max pertes consec: rW   u   
ðŸ’° STATISTIQUES:z   Gain moyen:        +rX   z   Perte moyenne:     rY   z   Ratio Gain/Perte:  rZ   u-   
âš™ï¸�  PARAMÃˆTRES MATHÃ‰MATIQUES OPTIMAUX:z   Position de base:  $z   Max level:         z (xú)z   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:       r   z.4fu   
ðŸ’¡ LOGIQUE:z/   1. Premier trade: 50/50 random LONG ou SHORTu-      2. Si perte â†’ doubler dans le MÃŠME sensu.      3. Si win â†’ CHANGER de cÃ´tÃ© au prochainu      4. RÃ©pÃ©teru   
ðŸ“� CODE:zk
from ultimate_martingale import UltimateMartingale

strategy = UltimateMartingale(
    base_position_size=z,
    max_martingale_level=z,
    base_leverage=z,
    max_leverage=z,
    stop_loss_pct=z,
    take_profit_ratio=z%,
    min_signal_score=0.0
)

# ROI: u9   %
# Alterne LONG/SHORT automatiquement aprÃ¨s chaque win
z ultimate_martingale_results.jsonÚw)Úbest_configÚbest_metricsÚtop_20Úall_results)ÚindentÚdefaultu2   
ðŸ’¾ RÃ©sultats: ultimate_martingale_results.jsonc                 C   s   g | ]
}|d  dkr|‘qS )rQ   r   r   ©Ú.0Úrr   r   r   Ú
<listcomp>  s    rs   u   
ðŸ“ˆ STATS GLOBALES:u      Configs testÃ©es:     z   Configs profitables: z (z%)c                 C   s   g | ]}|d  ‘qS )rQ   r   rp   r   r   r   rs     s    z   ROI moyen:           +u0   ðŸŽ‰ OPTIMISATION ULTIMATE MARTINGALE TERMINÃ‰E!r   )?r'   Útrue_martingaler   Úmartingale_backtesterr   Úpandasr(   Únumpyr   Útypingr   r   Újsonr   ÚprintÚ
backtesterÚfetch_binance_datar   ÚexitÚlenÚconfigsÚposÚmax_lvÚslÚappendÚresultsÚbest_roiÚ	enumerateÚirP   ÚstrategyÚrun_backtestÚresultÚtotal_tradesÚcopyÚtotal_return_pctrR   rS   Úmax_drawdown_pctÚfinal_capitalÚmax_consecutive_lossesÚavg_win_pctÚavg_loss_pctÚmetricsÚsortrl   ÚrankÚresÚcfgÚemojiÚstatusÚlev_strÚbestÚabsÚratioÚmax_positionÚopenÚfÚdumpr*   Ú
profitableÚmeanÚavg_roir   r   r   r   Ú<module>   s¤  %ý
úÿÿ
úÿÿ
úÿÿ(ö
€4ÿÿÿÿÿ2"ÿÿÿþþþýýý
,&""
üûúùø	÷óüûÿ,