o
    å]iÁG  ã                   @   sð   d Z ddlZddlZddlmZmZmZ ddl	m
Z
 ddlmZ e
G dd„ dƒƒZG dd	„ d	ƒZG d
d„ dƒZG dd„ dƒZG dd„ dƒZG dd„ dƒZedkrvedƒ edƒ edƒ edƒ edƒ edƒ edƒ edƒ edƒ dS dS )uj   
ULTRA PROBABILISTIC STRATEGIES - Acharnement total
Toutes les approches possibles testÃ©es en parallÃ¨le
é    N)ÚOptionalÚDictÚList)Ú	dataclass)Ústatsc                   @   sb   e Zd ZU dZ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
< eed< dS )ÚUltraSignalu   Signal ultra-optimisÃ©ÚsymbolÚsideÚentry_priceÚ	stop_lossÚtake_profitÚleverageÚ
confidenceÚprobabilityÚstrategy_nameÚreasonN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚstrÚ__annotations__ÚfloatÚint© r   r   úZ/var/www/html/HyperOracle/crypto_trader/apollo_degen_bot/ultra_probabilistic_strategies.pyr      s   
 r   c                   @   ó<   e Zd ZdZddefdd„Zdedejde	e
 fd	d
„ZdS )ÚProbabilisticTAu*   Combine probabilitÃ©s + RSI/MACD/Bollingeré2   r   c                 C   ó   || _ d| _d S )NzProbabilistic+TA©r   Úname©Úselfr   r   r   r   Ú__init__$   ó   
zProbabilisticTA.__init__r   ÚdfÚreturnc                 C   s$  t |ƒdk rd S |d jd }|d  ¡ }| |dkd¡jdd� ¡ }| |dk d¡ jdd� ¡ }|| }ddd|   }|jd }	|d jd	d
d� ¡ }
|d jdd
d� ¡ }|
| }|jdd
d� ¡ }|| }|jd }|d jdd� ¡ }|d jdd� ¡ }||d  }||d  }||jd  |jd |jd   }|d jdd� ¡ }|d jd |jd  }|	dk r½d}n	|	dkrÄd}nd}|dk rÍd}n	|dkrÔd}nd}t|ƒdkrÞdnd}|d |d  |d  }|	dk �r@|dk �r@|dk�r@|dk�r@d}d}t	dd|	 d d| d   ƒ}t
|d!||d|d   |d|d   | j||| jd"|	d#›d$|d%›d&|d%›d'|d(›d)�	d*�
S |	d+k�r�|dk�r�|dk �r�|dk�r�d}d}t	d|	d |d   ƒ}t
|d,||d|d   |d|d   | j||| jd"|	d#›d$|d%›d-|d%›d'|d(›d)�	d*�
S d S ).NéÈ   Úcloseéÿÿÿÿr   é   ©Úwindowéd   é   é   F©ÚspanÚadjusté   é	   é   é   Úvolumeé   çÍÌÌÌÌÌä?éF   g      à?çš™™™™™É?gffffffæ?gš™™™™™é?ç333333ã?gš™™™™™Ù?é#   ç333333Ó?g333333ó?ç{®Gáz¤?g{®Gáz´?ç      ø?r   ÚLONGzRSI:ú.0fz BB:ú.2fz MACD+:ú Vol:ú.1fÚx©
r   r	   r
   r   r   r   r   r   r   r   éA   ÚSHORTz MACD-:)ÚlenÚilocÚdiffÚwhereÚrollingÚmeanÚewmÚstdÚabsÚminr   r   r!   )r#   r   r&   Úcurrent_priceÚdeltaÚgainÚlossÚrsÚrsiÚcurrent_rsiÚema_12Úema_26ÚmacdÚsignal_lineÚ	macd_histÚcurrent_macd_histÚsma_20Ústd_20Úbb_upperÚbb_lowerÚbb_positionÚvol_maÚ	vol_spikeÚprob_rsiÚprob_bbÚ	prob_macdÚcombined_probÚsl_pctÚtp_pctr   r   r   r   Úanalyze(   s†   

"($ö($özProbabilisticTA.analyzeN)r   ©r   r   r   r   r   r$   r   ÚpdÚ	DataFramer   r   ro   r   r   r   r   r   !   ó     r   c                   @   r   )ÚMomentumProbabilisticu2   ProbabilitÃ©s de CONTINUATION au lieu de REVERSIONéK   r   c                 C   r   )NzMomentum Probr    r"   r   r   r   r$   ™   r%   zMomentumProbabilistic.__init__r   r&   r'   c                 C   sB  t |ƒdk rd S |d jd }|d jddd� ¡ jd }|d jddd� ¡ jd }|d jddd� ¡ jd }|| | d }||d jd	  |d jd	  d }|d
 jdd� ¡ jd }	|d
 jd }
|
|	 }t|ƒdkrx|dkrxd}nt|ƒdkr…|dkr…d}nd S |dkrÑ||  kr•|krÑn n:|dkrÑd}d}tdt|ƒd |d  ƒ}t|d||d|d   |d|d   | j||| j	d|d›d|d›d�d�
S |dk �r||  k rá|k �rn d S |dk �rd}d}tdt|ƒd |d  ƒ}t|d||d|d   |d|d   | j||| j	d |d›d!|d›d�d�
S d S )"Nr.   r)   r*   é   Fr1   é
   r6   iöÿÿÿr8   r,   r?   gÍÌÌÌÌÌô?gÃõ(\�Âå?r<   gš™™™™™ñ?r=   çš™™™™™¹?g¸…ëQ¸®?g333333Ã?rB   r/   u   MOMâ†‘:rD   z% EMA5>10>20 Vol:rF   rG   rH   gš™™™™™É¿gš™™™™™¹¿rJ   u   MOMâ†“:z% EMA5<10<20 Vol:)
rK   rL   rQ   rP   rO   rS   rT   r   r   r!   )r#   r   r&   rU   Úema_5Úema_10Úema_20ÚmomentumÚrecent_changerg   Úcurrent_volÚ	vol_ratioÚprob_continuationrm   rn   r   r   r   r   ro   �   sf   $(ö"
ìözMomentumProbabilistic.analyzeN)ru   rp   r   r   r   r   rt   –   rs   rt   c                   @   r   )ÚEmpiricalProbabilitiesuB   ProbabilitÃ©s calculÃ©es sur historique rÃ©el (pas de scipy.stats)é<   r   c                 C   s   || _ d| _d| _d S )NzEmpirical Probr(   )r   r!   Úlookbackr"   r   r   r   r$   õ   s   
zEmpiricalProbabilities.__init__r   r&   r'   c                 C   s2  t |ƒ| jd k rd S |d jd }|j| j d … }|d  ¡ }|d  ¡ }|| | }d}d}	tdt |ƒd ƒD ]W}
|d jd |
…  ¡ }|d jd |
…  ¡ }|d j|
 }|| | }t|| ƒdk r‘|	d7 }	|d j|
d |
d … }|dk r‡t||kƒr†|d7 }q:t||k ƒr‘|d7 }q:|	d	kr›||	 }nd S |d
k r£d S |dk rÜ|d
krÜd}d}td|d ƒ}t	|d||d|d   |d|d   | j
||| jd|d d›d|	› d�d�
S |dk�r|d
k�rd}d}td|d ƒ}t	|d||d|d   |d|d   | j
||| jd|d d›d|	› d�d�
S d S )Nr   r)   r*   r   rw   r?   r/   é   rv   gš™™™™™á?g      ø¿çš™™™™™©?rx   r.   rB   zEmpirical P(reversal):rC   z% (samples:ú)rH   rA   rJ   )rK   rƒ   rL   rP   rR   ÚrangerS   ÚanyrT   r   r   r!   )r#   r   r&   rU   r-   rP   rR   Ú	deviationÚ	reversalsÚtotal_samplesÚiÚ	past_meanÚpast_stdÚ
past_priceÚpast_devÚfuture_pricesÚempirical_probrm   rn   r   r   r   r   ro   ú   s|   €€
öözEmpiricalProbabilities.analyzeN)r‚   rp   r   r   r   r   r�   ò   s     r�   c                   @   r   )ÚUltraScalpingz0Leverage 20x, TP 0.03%, SL 0.02%, high frequencyr6   r   c                 C   r   )NzUltra Scalpingr    r"   r   r   r   r$   e  r%   zUltraScalping.__init__r   r&   r'   c                 C   sv  t |ƒdk rd S |d jd }|d jddd� ¡ jd }|d jddd� ¡ jd }||d jd  |d jd  d	 }|d
 jd }|d
 jdd� ¡ jd }d}	||kr†|dkr†||kr†d}
d}d}t|d||d|
d	   |d|d	   | j||	| jd|d›d�d�
S ||k r¹|dk r¹||kr¹d}
d}d}t|d||d|
d	   |d|d	   | j||	| jd|d›d�d�
S d S )Nr   r)   r*   é   Fr1   é   éüÿÿÿr.   r8   rw   r,   g¤p=
×£à?g{®Gáz”?g¸…ëQ¸ž?é7   rB   r/   u   Microâ†‘ EMA3>7 Last3:z.3fú%rH   g{®Gáz”¿rJ   u   Microâ†“ EMA3<7 Last3:)rK   rL   rQ   rP   rO   r   r   r!   )r#   r   r&   rU   Úema_3Úema_7Úlast_3_changeÚvol_nowÚvol_avgÚprobrm   rn   r   r   r   r   ro   i  sT   $öözUltraScalping.analyzeN)r6   rp   r   r   r   r   r“   b  rs   r“   c                   @   r   )ÚBreakoutProbabilisticu3   Breakout de range avec probabilitÃ© de continuationéP   r   c                 C   r   )NzBreakout Probr    r"   r   r   r   r$   ·  r%   zBreakoutProbabilistic.__init__r   r&   r'   c                 C   sê  t |ƒdk rd S |d jd }|d jdd …  ¡ }|d jdd …  ¡ }|| | d }|| | d }|| | d }|d jdd	� ¡ jd }	|d jd }
|
|	 }|d
k r`|dkr`d}n|d
k rk|dkrkd}nd S |d
k r°|dkr°||d jd kr°d}d}td|d d ƒ}t|d||d|d   |d|d   | j||| jd|d›d|d›d�d�
S |d
k ró|dkró||d jd k ród}d}td|d d ƒ}t|d||d|d   |d|d   | j||| jd|d›d|d›d�d�
S d S )Nr.   r)   r*   ÚhighiÎÿÿÿÚlowr8   r6   r,   r…   rA   r:   éþÿÿÿr@   g¸…ëQ¸¾?r9   r   rB   r/   u   Breakoutâ†‘ High:rD   rE   rF   rG   rH   rJ   u   Breakdownâ†“ Low:)	rK   rL   ÚmaxrT   rO   rP   r   r   r!   )r#   r   r&   rU   Úhigh_50Úlow_50Ú
range_sizeÚdistance_to_highÚdistance_to_lowrg   r~   rh   Úprob_breakoutrm   rn   r   r   r   r   ro   »  sb   "ö"özBreakoutProbabilistic.analyzeN)r    rp   r   r   r   r   rŸ   ´  rs   rŸ   Ú__main__u#   ðŸ”¥ ULTRA PROBABILISTIC STRATEGIESzP================================================================================u   
5 STRATÃ‰GIES DÃ‰VELOPPÃ‰ES:u=     1. Probabilistic+TA: RSI + MACD + Bollinger + probabilitÃ©sz5  2. Momentum Prob: Continuation au lieu de reversionu7     3. Empirical Prob: ProbabilitÃ©s sur historique rÃ©elu8     4. Ultra Scalping: Lev 20x, TP 0.03%, haute frÃ©quencez.  5. Breakout Prob: Breakout de range + volumez+
Chacune avec approche probabiliste unique!)r   Úpandasrq   ÚnumpyÚnpÚtypingr   r   r   Údataclassesr   Úscipyr   Úscipy_statsr   r   rt   r�   r“   rŸ   r   Úprintr   r   r   r   Ú<module>   s0   u\pRV÷