o
    s¦i6,  ã                   @   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mZ eG dd„ dƒƒ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 r[edƒ edeeƒ› d�ƒ ddddddddœZg d¢Zg ZeedƒD ]`\ZZed d› �ƒ ed!e› d"eeƒ› d#e ¡  d$d%¡› �ƒ ed› ƒ e ¡ Zedwd&eie¤ŽZ e !ede ¡Z"e"rÍe #ee"j$e"j%e"j&e"j'e"j(e"j)e"j*e"j+d'œ	¡ qze #eddddddd(œ¡ qzed)ƒ ed*ƒ edƒ ej,d+d,„ d-d.� ed d/d0›d%d1d2›d%d3d4›d%d5d6›d%d7d8›d%d9d:›d%d;d6›d%d<d4›�ƒ ed=ƒ eedƒD ]h\Z-Z.e-dk�r(d>ne-d?k�r/d@n
e-dAk�r6dBne-dC›Z/e.dD dk�rCdEn
e.dD dFk�rLdGndHZ0ee/d0›d%e.dI d2›d%e.dD dJ›dKe.dL dM dN›dKe.dO dP›d%e.dQ d:›d%e.dR dS›dKe.dT dJ›d%e0› �ƒ �qed Z1edUd› �ƒ edVe1dI  ¡  d$d%¡› �ƒ ed› ƒ edWƒ edXe1dD dY›dKe1dD dk�rºdZndH› �ƒ ed[e1dT d\›�ƒ ed]e1dT d d\›�ƒ ed^e1dL dM d_›d`�ƒ edae1dO d\›�ƒ edbe1dR d\›d`�ƒ edce1dQ › �ƒ e1dQ dk�r!eddƒ edee1df dY›d`�ƒ edge1dh dY›d`�ƒ ed› ƒ ediƒ edjƒ edke1dI › dle1dD dY›dme1dL dM d_›d`�ƒ e1dD dnk�r]e1dD dn Z2edoe2d\›d`�ƒ ne1dL dpk�rqedqe1dL dM d_›dr�ƒ ed› ƒ ddl3Z3e4dsdtƒ�Z5e3j6ee5d?du� W d  ƒ n	1 �s“w   Y  edvƒ dS )xuæ  
EDGE MATHÃ‰MATIQUE PUR - Sans indicateurs techniques

HypothÃ¨se: Si la martingale fonctionne mathÃ©matiquement, on n'a pas besoin de TA.
On cherche un edge purement probabiliste/mathÃ©matique.

StratÃ©gies testÃ©es:
1. RANDOM - 50/50 LONG/SHORT alÃ©atoire
2. ALWAYS LONG - Crypto monte sur le long terme
3. ALWAYS SHORT - Pour tester l'inverse
4. MEAN REVERSION - Trade contre le mouvement prÃ©cÃ©dent
5. MOMENTUM - Trade dans la direction du mouvement
6. VOLATILITY BREAKOUT - Trade les cassures de volatilitÃ©
7. PRICE EXTREMES - Trade aux extrÃªmes de prix (percentiles)
8. TIME OF DAY - Trade seulement Ã  certaines heures
9. ALTERNATING - Alterne LONG/SHORT systÃ©matiquement
10. AFTER RED/GREEN - LONG aprÃ¨s rouge, SHORT aprÃ¨s vert
é    )ÚMartingaleBacktester)ÚTrueMartingaleStrategyN)ÚOptionalÚTuple)Ú	dataclassc                   @   s`   e Zd ZU ejed< eed< eed< eed< eed< eed< eed< eed< eed	< eed
< dS )ÚMartingaleSignalÚ	timestampÚsideÚentry_priceÚ	stop_lossÚtake_profitÚleverageÚposition_size_usdÚmartingale_levelÚsignal_scoreÚstrategyN)	Ú__name__Ú
__module__Ú__qualname__ÚpdÚ	TimestampÚ__annotations__ÚstrÚfloatÚint© r   r   úJ/var/www/html/HyperOracle/crypto_trader/martingale_degen/pure_math_edge.pyr      s   
 
r   c                       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 )
ÚPureMathStrategyu?   StratÃ©gie basÃ©e sur des rÃ¨gles mathÃ©matiques pures, sans TAÚrandomc                    s4   t ƒ jdi |¤Ž || _d| _d | _tj d¡ d S )Nr   é*   r   )ÚsuperÚ__init__Ú	math_ruleÚtrade_countÚ	last_sideÚnpr   Úseed)Úselfr"   Úkwargs©Ú	__class__r   r   r!   ,   s
   zPureMathStrategy.__init__ÚdfÚreturnc                 C   sH  |j d }| jdkrtj ¡ dkrdnd}|dfS | jdkr dS | jd	kr'd
S | jdkrMt|ƒdk r4dS |j d }|d |d  |d  }|dkrKd
S dS | jdkrst|ƒdk rZdS |j d }|d |d  |d  }|dkrqdS d
S | jdkr±t|ƒdk r€dS |d  ¡  d¡}| ¡ }|d |j d d  |j d d  }t|ƒ|d kr¯|dkr­dS d
S dS | jdkrát|ƒdk r¾dS |d  d¡}| 	d¡}	| 	d¡}
|d |	kr×dS |d |
krßd
S dS | jdk�r
|d j
}d|  kr÷dk rødS  d|  k�rdk �rd
S  dS dS | jdk�r!| jdk�rdnd}|| _|dfS | jd k�rDt|ƒdk �r0dS |j d }|d |d! k}|�rBd
S dS | jd"k�rV| jd# dk�rTdS dS | jd$k�r”t|ƒd#k �redS | d#¡}|d%  ¡ }|d&  ¡ }|| d }|d |d' k�r‡dS |d |d( k�r’d
S dS tj ¡ dk�r ddfS ddfS ))uz   
        GÃ©nÃ¨re un signal basÃ© UNIQUEMENT sur des rÃ¨gles mathÃ©matiques
        Pas d'indicateurs techniques!
        éÿÿÿÿr   g      à?ÚLONGÚSHORTç      ð?Úalways_long)r.   r0   Úalways_short)r/   r0   Úmean_reversioné   éþÿÿÿÚcloser   ÚmomentumÚvolatility_breakouté   g      ø?NÚprice_extremeséd   gš™™™™™¹?gÍÌÌÌÌÌì?Útime_of_dayr   é   é   é   é   ÚalternatingÚcandle_colorÚopenÚfixed_intervalé2   Úrange_boundÚlowÚhighgj¼t“ð?g+‡ÙÎ÷ï?)Úilocr"   r%   r   ÚlenÚ
pct_changeÚtailÚstdÚabsÚquantileÚhourr$   r#   ÚminÚmax)r'   r+   Úcurrentr	   ÚprevÚ	last_moveÚreturnsÚ
volatilityÚrecent_pricesÚp10Úp90rP   Úis_greenÚrecentÚsupportÚ
resistanceÚmidr   r   r   Úgenerate_base_signal3   s¨   








$



ÿÿ

 z%PureMathStrategy.generate_base_signal)r   )r   r   r   Ú__doc__r!   r   Ú	DataFramer   r   r   r   r`   Ú__classcell__r   r   r)   r   r   )   s    (r   zP================================================================================u1   ðŸŽ² RECHERCHE D'EDGE MATHÃ‰MATIQUE PUR - SANS TAg     @�@gü©ñÒMb@?é<   )Úinitial_capitalÚtrading_fee_pctÚtimeout_minutesu"   
ðŸ“¥ TÃ©lÃ©chargement donnÃ©es...ÚBTCUSDTÚ1miè  é   u   âœ… z	 bougies
g      &@é   r9   gú~j¼t“h?g      @g333333ã?)Úbase_position_sizeÚmax_martingale_levelÚbase_leverageÚmax_leverageÚstop_loss_pctÚtake_profit_ratioÚmin_signal_score)r   r1   r2   r3   r7   r8   r:   r<   rA   rB   rD   rF   Ú
u
   ðŸ§ª TEST ú/z: Ú_Ú r"   )	ÚruleÚroiÚwin_rateÚprofit_factorÚtradesÚmax_ddÚcapitalÚavg_winÚavg_loss)rw   rx   ry   rz   r{   r|   r}   zR

================================================================================u)   ðŸ�† CLASSEMENT EDGES MATHÃ‰MATIQUES PURSc                 C   s   | d S )Nrx   r   )Úxr   r   r   Ú<lambda>(  s    r�   T)ÚkeyÚreverseÚRANGz<5u   RÃˆGLE MATHÃ‰MATIQUEz<25zROI %z>10zWR %z>8ÚPFz>6ÚTradesz>7zDD %zCap $zZ------------------------------------------------------------------------------------------u   ðŸ¥‡r4   u   ðŸ¥ˆé   u   ðŸ¥‰Ú2rx   u   âœ…r5   u   âš ï¸�u   â�Œrw   z>9.2fz% ry   r;   z>7.1frz   z>5.2fr{   r|   z>7.2fr}   z

u%   ðŸ�† MEILLEURE RÃˆGLE MATHÃ‰MATIQUE: u   
ðŸ“Š PERFORMANCE:z   ROI:           z+.2fu   âœ… PROFITABLE!z   Capital final: $z.2fz   Gain:          $z   Win Rate:      z.1fú%z   Profit Factor: z   Max DD:        z   Trades:        u   
ðŸ’° TRADES:z   Gain moyen:    r~   z   Perte moyenne: r   u   
ðŸ“Š COMPARAISON AVEC TA:z*   TA (RSI/EMA/MACD): ROI +3.49%, WR 41.7%z   Math Pure (z): ROI z%, WR gìQ¸…ë@u    
ðŸŽ‰ MATH PURE EST MEILLEURE! +gã¥›Ä °Ú?u   
âœ¨ MEILLEUR WIN RATE! z
% vs 41.7%zpure_math_results.jsonÚw)Úindentu(   
ðŸ’¾ RÃ©sultats: pure_math_results.jsonr   )7ra   Úmartingale_backtesterr   Útrue_martingaler   Úpandasr   Únumpyr%   Útypingr   r   Údataclassesr   r   r   ÚprintÚ
backtesterÚfetch_binance_datar+   ÚexitrJ   ÚOPTIMAL_CONFIGÚmath_strategiesÚresultsÚ	enumerateÚirw   ÚupperÚreplaceÚcopyÚconfigr   Úrun_backtestÚresultÚappendÚtotal_return_pctry   rz   Útotal_tradesÚmax_drawdown_pctÚfinal_capitalÚavg_win_pctÚavg_loss_pctÚsortÚrankÚresÚemojiÚstatusÚbestÚimprovementÚjsonrC   ÚfÚdumpr   r   r   r   Ú<module>   sö    &ýù*
ÿþ
÷
ù,ÿÿÿ2(2ÿÿþþþ
,
0
ÿ