My trading bot code doesn't give m eany signals , but you didn't finish your updated code to solve my problem : Here’s an updated version of your code with the suggested changes:

import time
from binance.client import Client
import pandas as pd
import datetime as dt
import requests
import hmac
import hashlib
import ccxt

API_KEY = ‘’
API_SECRET = ‘’

client = Client(API_KEY, API_SECRET)

def get_klines(symbol, interval, lookback):
    url = “https://fapi.binance.com/fapi/v1/klines”
    end_time = int(time.time() * 1000) # end time is now
    start_time = end_time - (lookback * 60 * 1000) # start time is lookback minutes ago
    symbol = symbol.replace(“/”, “”) # remove slash from symbol
    query_params = f"?symbol={symbol}&interval={interval}&startTime={start_time}&endTime={end_time}"
    headers = {
        ‘User-Agent’: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36’
    }
    response = requests.get(url + query_params, headers=headers)
    response.raise_for_status()
    data = response.json()
    if not data: # if data is empty, return None
        print(‘No data found for the given timeframe and symbol’)
        return None
    ohlcv = []
    for d in data:
        timestamp = dt.datetime.fromtimestamp(d[0]/1000).strftime(‘%Y-%m-%d %H:%M:%S’)
        ohlcv.append({
            ‘Open time’: timestamp,
            ‘Open’: float(d[1]),
            ‘High’: float(d[2]),
            ‘Low’: float(d[3]),
            ‘Close’: float(d[4]),
            ‘Volume’: float(d[5])
        })
    df = pd.DataFrame(ohlcv)
    df.set_index(‘Open time’, inplace=True)
    return df

def signal_generator(df):
    if df is None:
        return ‘’
    ema_analysis = []
    candle_analysis = []

    df[‘EMA5’] = df[‘Close’].ewm(span=5, adjust=False).mean()
    df[‘EMA20’] = df[‘Close’].ewm(span=20, adjust=False).mean()
    df[‘EMA100’] = df[‘Close’].ewm(span=100, adjust=False).mean()
    df[‘EMA200’] = df[‘Close’].ewm(span=200, adjust=False).mean()

    if (
        df[‘EMA5’].iloc[-1] > df[‘EMA20’].iloc[-1] and
        df[‘EMA20’].iloc[-1] > df[‘EMA100’].iloc[-1] and
        df[‘EMA100’].iloc[-1] > df[‘EMA200’].iloc[-1] and
        df[‘EMA5’].iloc[-2] < df[‘EMA20’].iloc[-2] and
        df[‘EMA20’].iloc[-2] < df[‘EMA100’].iloc[-2] and
        df[‘EMA100’].iloc[-2] < df[‘EMA200’].iloc[-2]
    ):
        ema_analysis.append(‘golden_cross’)
        
    elif (
        df[‘EMA5’].iloc[-1] < df[‘EMA20’].iloc[-1] and
        df[‘EMA20’].iloc[-1] < df[‘EMA100’].iloc[-1] and
        df[‘EMA100’].iloc[-1] < df[‘EMA200’].iloc[-1] and
        df[‘EMA5’].iloc[-2] > df[‘EMA20’].iloc[-2] and
        df[‘EMA20’].iloc[-2] > df[‘EMA100’].iloc[-2] and
        df[‘EMA100’].iloc[-2] > df[‘EMA200’].iloc[-2]
    ):
        ema_analysis.append(‘death_cross’)

    if (
        df[‘Close’].iloc[-1] > df[‘Open’].iloc[-1] and
        df[‘Open’].iloc[-1] > df[‘Low’].iloc[-1] and
        df[‘High’].iloc[-1] > df[‘Close’].iloc[-1]
    ):
        candle_analysis.append(‘bullish_engulfing’)
    elif (
        df[‘Close’].iloc[-1] < df[‘Open’].iloc[-1] and
        df[‘Open’].iloc[-1] < df[‘High’].iloc[-1] and
        df[‘Low’].iloc[-1] > df[‘Close’].iloc[-1]
    ):
        candle_analysis.append(‘bearish_engulfing’)

    bollinger_std = df[‘Close’].rolling(window=20).std()
    df[‘UpperBand’] = df[‘EMA20’] + (bollinger_std * 2)
    df[‘LowerBand’] = df[‘EMA20’] - (bollinger_std * 2)

    if (
        df[‘Close’].iloc[-1] > df[‘UpperBand’].iloc[-1] and
        df[‘Close’].iloc[-2] < df[‘UpperBand’].iloc[-2]
    ):
        candle_analysis.append(‘upper_band_breakout’)
    elif (
        df[‘Close’].iloc[-1] < df[‘LowerBand’].iloc[-1] and
        df[‘Close’].iloc[-2] > df[‘LowerBand’].iloc[-2]
    ):
        candle_analysis.append(‘lower_band_breakout’)

    if (‘golden_cross’ in ema_analysis and ‘bullish_engulfing’ in candle_analysis) or ‘upper_band_breakout’ in candle_analysis:
        return ‘buy’
    elif (‘death_cross’ in ema_analysis and 'bearish_engulf