You gave me this order_execution code : 
# Initialize MEXC client
mexc_futures = ccxt.mexc({
‘apiKey’: API_KEY,
‘secret’: API_SECRET,
‘enableRateLimit’: True,
‘options’: {
‘defaultType’: ‘future’,
}
})

def execute_order(symbol, order_type, side, quantity):
try:
order_params = {
‘symbol’: symbol,
‘side’: side,
‘type’: order_type,
‘quantity’: quantity,
‘stopPrice’: None
}
order = mexc_futures.create_order(**order_params)
return order
except Exception as e:
print(f"Error executing order: {e}“)
return None

def set_stop_loss(symbol, side, quantity):
try:
order_params = {
‘symbol’: symbol,
‘side’: “SELL” if side == “BUY” else “BUY”,
‘type’: “STOP_MARKET”,
‘quantity’: quantity,
‘stopPrice’: None
}
order = mexc_futures.create_order(**order_params)
return order
except Exception as e:
print(f"Error setting stop loss: {e}”)
return None

def cancel_order(symbol, order_id):
try:
mexc_futures.cancel_orders([order_id], symbol)
print(“Order cancelled successfully.”)
except Exception as e:
print(f"Error cancelling order: {e}“)

def get_open_orders(symbol):
try:
orders = mexc_futures.fetch_open_orders(symbol)
return orders
except Exception as e:
print(f"Error getting open orders: {e}”)
return []

def close_position(symbol, stop_loss_order_id):
cancel_order(symbol, stop_loss_order_id)

# Rest of the code…

signal = signal_generator(df)
stop_loss_order_id = None

while True:
df = get_klines(symbol, ‘1m’, 44640)
if df is not None:
signal = signal_generator(df)

if signal == ‘buy’:
open_orders = get_open_orders(symbol)

if not open_orders:
# Open Long position
quantity = 1 # Set your desired quantity here
order = execute_order(symbol, ‘MARKET’, ‘BUY’, quantity)
if order:
print(f"Opened Long position. Order ID: {order[‘id’]}“)
# Set Stop Loss at -50%
stop_loss_order = set_stop_loss(symbol, ‘BUY’, quantity)
if stop_loss_order:
stop_loss_order_id = stop_loss_order[‘id’]
print(f"Stop Loss order set. Order ID: {stop_loss_order_id}”)

elif stop_loss_order_id is not None:
# Check if Stop Loss order has been triggered
stop_loss_order = [order for order in open_orders if order[‘id’] == stop_loss_order_id][0]
if stop_loss_order[‘status’] == ‘closed’:
print(“Stop Loss order triggered. Closing Long position…”)
# Close Long position
close_position(symbol, stop_loss_order_id)
stop_loss_order_id = None

elif signal == ‘sell’:
open_orders = get_open_orders(symbol)

if not open_orders:
# Open Short position
quantity = 1 # Set your desired quantity here
order = execute_order(symbol, ‘MARKET’, ‘SELL’, quantity)
if order:
print(f"Opened Short position. Order ID: {order[‘id’]}“)
# Set Stop Loss at -50%
stop_loss_order = set_stop_loss(symbol, ‘SELL’, quantity)
if stop_loss_order:
stop_loss_order_id = stop_loss_order[‘id’]
print(f"Stop Loss order set. Order ID: {stop_loss_order_id}”)

elif stop_loss_order_id is not None:
# Check if Stop Loss order has been triggered
stop_loss_order = [order for order in open_orders if order[‘id’] == stop_loss_order_id][0]
if stop_loss_order[‘status’] == ‘closed’:
print(“Stop Loss order triggered. Closing Short position…”)
# Close Short position
close_position(symbol, stop_loss_order_id)
stop_loss_order_id = None

else:
print(“No signal”)

time.sleep(1)
But you didn't add my code, please add this code: import time
from binance.client import Client
from binance.exceptions import BinanceAPIException
from binance.helpers import round_step_size
import pandas as pd
import json
import numpy as np
import pytz
import datetime as dt
import ccxt
from decimal import Decimal
import requests
import hmac
import hashlib
import ntplib
import os
import ta
import ta.volatility
API_KEY = ''
API_SECRET = ''

client = Client(API_KEY, API_SECRET)

def sync_time():
    server_time = requests.get('https://api.binance.com/api/v3/time').json()['serverTime']
    local_time = int(time.time() * 1000)
    time_difference = server_time - local_time
    # Set the system clock to the new time
    os.system(f'sudo date -s @{int(server_time/1000)}')
    print(f'New time: {dt.datetime.now()}')

# Sync your local time with the server time
sync_time()

# Set the endpoint and parameters for the request
url = "https://fapi.binance.com/fapi/v1/klines"
symbol = 'BCH/USDT'
interval = '1m'
lookback = 44640
timestamp = int(time.time() * 1000) - 500 # subtract 500ms from local time to account for clock-drift
recv_window = 60000 # increased recv_window value
params = {
    "symbol": symbol.replace("/", ""),
    "interval": interval,
    "startTime": int((time.time() - lookback * 60) * 1000),
    "endTime": int(time.time() * 1000),
    "timestamp": timestamp,
    "recvWindow": recv_window
}

# Sign the message using the Client’s secret key
message = "&".join([f"{k}={v}" for k, v in params.items()])
signature = hmac.new(API_SECRET.encode(), message.encode(), hashlib.sha256).hexdigest()
params[signature] = signature

# Send the request using the requests library
response = requests.get(url, params=params, headers={'X-MBX-APIKEY': API_KEY})

# Check for errors in the response
response.raise_for_status()
API_KEY_MEXC = ''
API_SECRET_MEXC = ''

# Initialize MEXC client
mexc_futures = ccxt.mexc({
    'apiKey': API_KEY_MEXC,
    'secret': API_SECRET_MEXC,
    'enableRateLimit': True,
    'options': {
    'defaultType': 'future',
}
})
time.sleep(1)
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
df = get_klines(symbol, interval, lookback)

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_engulfing' in candle_analysis) or 'lower_band_breakout' in candle_analysis:
        return 'sell'
    else:
        return ''
end_time = int(time.time() * 1000)
start_time = end_time - lookback * 60 * 1000

signal = signal_generator(df)
while True:
    df = get_klines(symbol, '1m', 44640) # await the coroutine function here
    if df is not None:
        signal = signal_generator(df)
    if signal is not None:
        print(f"The signal time is: {dt.datetime.now().strftime('%Y-%m-%d %H:%M:%S')}:{signal}")
        time.sleep(1)