
    ^iF                     f    d dl mZmZmZ d dlmZ d dlmZ d dl	m
c mc mZ  G d de          ZdS )    )	IStrategyIntParameterDecimalParameter)	DataFrameNc                       e Zd ZdZdZdZdddddZd	Zd
ZdZ	dZ
d
ZdddddZed             Z edddd          Z edddd          ZdededefdZdededefdZdededefdZded ed!ed"ed#ed$edefd%Zd&S )'CiccioStrategya5  
    CiccioStrategy - Strategia multi-indicatore conservativa

    Logica:
    - Entry: RSI oversold + MACD bullish crossover + prezzo sotto BB lower
    - Exit: RSI overbought + MACD bearish + prezzo sopra BB upper

    Risk Management:
    - Stop loss: 5%
    - Take profit: 10%
    - Trailing stop: 3%
       1hg?g?gQ?g{Gz?)03060120gTlimitmarketF)entryexitstoplossstoploss_on_exchangec                 *    ddddddddd	d
dddddgS )NCooldownPeriodr	   )methodstop_duration_candlesMaxDrawdown   0      g?)r   trade_limitlookback_period_candlesr   max_allowed_drawdownStoplossGuard      F)r   r   r   r   only_per_pair )selfs    X/var/www/html/cicciotrading.cuttalo.com/freqtrade/user_data/strategies/CiccioStrategy.pyprotectionszCiccioStrategy.protections8   sT     +)* 
 (!+-)+(+  *+- )+!& 
 	
    r   (      buy)defaultspace<   P   F   sell	dataframemetadatareturnc                    t          j        |d          |d<   t          j        |          }|d         |d<   |d         |d<   |d         |d<   t          j        t          j        |          dd	          }|d
         |d<   |d         |d<   |d         |d<   |d         |d         z
  |d         |d         z
  z  |d<   |d         |d         z
  |d         z  |d<   t          j        |d          |d<   t          j        |d          |d<   t          j        |d          |d<   t          j        |d          |d<   t          j        |d          |d<   t          j        |d          |d<   |d         	                    d          
                                |d <   t          j        |d          |d!<   t          j        |          }|d"         |d"<   |d#         |d#<   |S )$z6
        Calcola tutti gli indicatori tecnici
           )
timeperiodrsimacd
macdsignalmacdhistr      )windowstdslowerbb_lowerbandmidbb_middlebandupperbb_upperbandclose
bb_percentbb_width	   ema9   ema212   ema50   ema200sma20atrvolumer*   )r=   volume_meanadxslowkslowd)taRSIMACDqtpylibbollinger_bandstypical_priceEMASMAATRrollingmeanADXSTOCH)r%   r2   r3   r9   	bollingerstochs         r&   populate_indicatorsz"CiccioStrategy.populate_indicatorsS   s"   
 6);;;	% wy!! L	&"&|"4	, $Z 0	* +G,A),L,LUW^_```	$-g$6	.!%.u%5	/"$-g$6	.!w)N";;~&>)BBD 	,
 ~&>)BBiP_F`` 	*
 F9;;;	&VI"===	'VI"===	' fY3???	(  VI"===	' 6);;;	% $-X#6#>#>b#>#I#I#N#N#P#P	-  6);;;	% ##"7^	'"7^	'r(   c                     d|j         |d         | j        j        k     |d         |d         k    z  |d         |d         k     z  |d         |d         k    z  |d	         |d
         dz  k    z  |d	         dk    z  df<   |S )a&  
        Condizioni per entrare in un trade (BUY)

        Condizioni:
        1. RSI sotto soglia (oversold)
        2. MACD bullish crossover (macd > signal)
        3. Prezzo vicino/sotto BB lower
        4. EMA9 > EMA21 (trend rialzista breve termine)
        5. Volume sopra media
           r8   r9   r:   rE   rB   rI   rK   rR   rS   g      ?r   
enter_long)locbuy_rsivaluer%   r2   r3   s      r&   populate_entry_trendz#CiccioStrategy.populate_entry_trend   s    > ) 	 5!DL$66 6"Y|%<<> 7#i&@@B 6"Yw%77	9 8$y'?#'EEG 8$q(*" '	, r(   c                     d|j         |d         | j        j        k    |d         |d         k     z  |d         |d         k    z  |d         dk    z  d	f<   |S )
z
        Condizioni per uscire da un trade (SELL)

        Condizioni:
        1. RSI sopra soglia (overbought)
        2. MACD bearish (macd < signal)
        3. Prezzo sopra BB upper
        rh   r8   r9   r:   rE   rB   rR   r   	exit_long)rj   sell_rsirl   rm   s      r&   populate_exit_trendz"CiccioStrategy.populate_exit_trend   s    .  	 5!DM$77 6"Y|%<<> 7#i&@@B 8$q(	* 	  r(   paircurrent_rateproposed_leveragemax_leverage	entry_tagsidec                     dS )z5
        Leverage per futures (se abilitato)
        g      ?r$   )	r%   rs   current_timert   ru   rv   rw   rx   kwargss	            r&   leveragezCiccioStrategy.leverage   s	     sr(   N)__name__
__module____qualname____doc__INTERFACE_VERSION	timeframeminimal_roir   trailing_stoptrailing_stop_positivetrailing_stop_positive_offsettrailing_only_offset_is_reachedorder_typespropertyr'   r   rk   rq   r   dictrf   rn   rr   strfloatr|   r$   r(   r&   r   r   
   s          I 	 K H M!$(!&*#  %	 K 
 
 X
. l2r2U;;;G|BBf===H1Y 1$ 19 1 1 1 1f!i !4 !I ! ! ! !FY $ 9    6S e $)9>KN).     r(   r   )freqtrade.strategyr   r   r   pandasr   talib.abstractabstractrW   #freqtrade.vendor.qtpylib.indicatorsvendorrZ   
indicatorsr   r$   r(   r&   <module>r      s    I H H H H H H H H H             5 5 5 5 5 5 5 5 5 5 5 5@ @ @ @ @Y @ @ @ @ @r(   