import pandas as pd import numpy as np import MetaTrader4 as mt4 mt4.initialize() symbol = "EURUSD" timeframe = mt4.TIMEFRAME_M15 start_time = "2021-01-01 00:00:00" end_time = "2022-01-01 00:00:00" ohlcv = mt4.copy_rates_range(symbol, timeframe, pd.Timestamp(start_time), pd.Timestamp(end_time)) df = pd.DataFrame(ohlcv) df['time'] = pd.to_datetime(df['time'], unit='s') df.set_index('time', inplace=True) import talib # Calculate RSI rsi_period = 14 df['rsi'] = talib.RSI(df['close'], rsi_period) # Set up trading rules long_entry = (df['rsi'] < 30) & (df['close'] > df['open']) long_exit = df['rsi'] > 70 short_entry = (df['rsi'] > 70) & (df['close'] < df['open']) short_exit = df['rsi'] < 30 # Place trades if long_entry: mt4.order_send(symbol=symbol, cmd=mt4.ORDER_TYPE_BUY, volume=1, price=mt4.symbol_info_tick(symbol).ask, slippage=2, magic=123456) elif long_exit: mt4.order_send(symbol=symbol, cmd=mt4.ORDER_TYPE_SELL, volume=1, price=mt4.symbol_info_tick(symbol).bid, slippage=2, magic=123456) if short_entry: mt4.order_send(symbol=symbol, cmd=mt4.ORDER_TYPE_SELL, volume=1, price=mt4.symbol_info_tick(symbol).bid, slippage=2, magic=123456) elif short_exit: mt4.order_send(symbol=symbol, cmd=mt4.ORDER_TYPE_BUY, volume=1, price=mt4.symbol_info_tick(symbol).ask, slippage=2, magic=123456)