I used this signal_generator code: def signal_generator(df):
    # Calculate EMA and MA lines
    df['EMA5'] = df['Close'].ewm(span=5, adjust=False).mean()
    df['EMA10'] = df['Close'].ewm(span=10, adjust=False).mean()
    df['EMA20'] = df['Close'].ewm(span=20, adjust=False).mean()
    df['EMA50'] = df['Close'].ewm(span=50, adjust=False).mean()
    df['EMA100'] = df['Close'].ewm(span=100, adjust=False).mean()
    df['EMA200'] = df['Close'].ewm(span=200, adjust=False).mean()
    df['MA10'] = df['Close'].rolling(window=10).mean()
    df['MA20'] = df['Close'].rolling(window=20).mean()
    df['MA50'] = df['Close'].rolling(window=50).mean()
    df['MA100'] = df['Close'].rolling(window=100).mean()
    open = df.Open.iloc[-1]
    close = df.Close.iloc[-1]
    previous_open = df.Open.iloc[-2]
    previous_close = df.Close.iloc[-2]
    # Calculate the last candlestick
    # Calculate EMA and MA lines
    last_candle = df.iloc[-1]
    current_price = df.Close.iloc[-1]

    ema_analysis = ''
    candle_analysis = ''

    # EMA crossover - buy signal
    if df.EMA10.iloc[-1] > df.EMA50.iloc[-1] and current_price > last_candle[['EMA10', 'EMA50']].iloc[-1].min():
        ema_analysis = 'buy'

    # EMA crossover - sell signal
    elif df.EMA10.iloc[-1] < df.EMA50.iloc[-1] and current_price < last_candle[['EMA10', 'EMA50']].iloc[-1].max():
        ema_analysis = 'sell'

    # EMA crossover - buy signal
    if df.EMA20.iloc[-1] > df.EMA200.iloc[-1] and current_price > last_candle[['EMA20', 'EMA200']].iloc[-1].min():
        ema_analysis = 'buy'

    # EMA crossover - sell signal
    elif df.EMA20.iloc[-1] < df.EMA200.iloc[-1] and current_price < last_candle[['EMA20', 'EMA200']].iloc[-1].max():
        ema_analysis = 'sell'

    # Check for bullish trends
    elif current_price > last_candle[['EMA5', 'EMA20', 'EMA50', 'EMA100', 'EMA200']].iloc[-1].max():
        ema_analysis = 'buy'

    # Check for bearish trends
    elif current_price < last_candle[['EMA5', 'EMA20', 'EMA50', 'EMA100', 'EMA200']].iloc[-1].min():
        ema_analysis = 'sell'

    # Check for bullish candlestick pattern
    if (open<close and
    previous_open>previous_close and
    close>previous_open and
    open<=previous_close):
        candle_analysis = 'buy'

    # Check for bearish candlestick pattern
    elif (open>close and
    previous_open<previous_close and
    close<previous_open and
    open>=previous_close):
        candle_analysis = 'sell'

    # Check if both analyses are the same
    if ema_analysis == candle_analysis and ema_analysis != '':
        if ema_analysis == 'buy':
            return 'buy'
        elif ema_analysis == 'sell':
            return 'sell'

    # If no signal is found, check for EMA only
    if ema_analysis != '':
        if ema_analysis == 'buy':
            return 'buy'
        elif ema_analysis == 'sell':
            return 'sell'

    # If EMA analysis is empty, check for candlestick analysis only
    if candle_analysis != '':
        if candle_analysis == 'buy':
            return 'buy'
        elif candle_analysis == 'sell':
            return 'sell'

    # If no signal is found, return an empty string
    return ''
But it returns me signal to buy every time , please to solve this problem change those lines:     # Check if both analyses are the same
    if ema_analysis == candle_analysis and ema_analysis != '':
        if ema_analysis == 'buy':
            return 'buy'
        elif ema_analysis == 'sell':
            return 'sell'

    # If no signal is found, check for EMA only
    if ema_analysis != '':
        if ema_analysis == 'buy':
            return 'buy'
        elif ema_analysis == 'sell':
            return 'sell'

    # If EMA analysis is empty, check for candlestick analysis only
    if candle_analysis != '':
        if candle_analysis == 'buy':
            return 'buy'
        elif candle_analysis == 'sell':
            return 'sell'

    # If no signal is found, return an empty string
    return ''