Как подключиться к MetaTrader 5 с помощью Python
MetaTrader - одна из самых популярных платформ для розничного инвестирования на планете. Многие брокеры используют его, включая IC Markets и Blueberry Markets.
Долгое время программирование в MetaTrader было ограничено торговым языком MetaQuotes — производным от C++. Хотя это было здорово с точки зрения скорости выполнения, это резко повысило барьеры для входа.
MetaTrader 5 (MT5) изменил это. В рамках разработки была представлена торговая библиотека Python на базе Cython, позволяющая повседневным скриптерам получать доступ ко многим внутренним функциям, которые развивались с годами.
Если вы хотите использовать MT5 в своем алгоритмическом торговом боте, вам нужно знать, как успешно подключиться к MT5.
Я предполагаю, что вы уже нашли способ безопасного импорта необходимых вам учетных данных и переменных, включая:
- Имя пользователя (
username
): это будет 8-значное целое число - Пароль (
password
): случайная буквенно-цифровая строка, обычно длиной 8 символов - Сервер (
server
): предоставляется вам вашим брокером - Путь (
pathway
): расположение программыterminal64.exe
на вашей конечной точке (по умолчанию хранится вC:\Program Files\<broker name>\terminal64.exe
).
Двухэтапный процесс
Успешное подключение к MetaTrader 5 на самом деле состоит из двух шагов:
- Инициализация MetaTrader 5
- Вход в MetaTrader 5
Если вы не выполните второй шаг (вход в систему), вы обнаружите, что будут случаи, когда ваш скрипт внезапно не сможет извлечь данные без видимой причины.
Вот полная функция (включая импорт библиотеки MetaTrader5 python.
import MetaTrader5
# Function to start Meta Trader 5 (MT5)
def start_mt5(username, password, server, path):
# Ensure that all variables are the correct type
uname = int(username) # Username must be an int
pword = str(password) # Password must be a string
trading_server = str(server) # Server must be a string
filepath = str(path) # Filepath must be a string
# Attempt to start MT5
if MetaTrader5.initialize(login=uname, password=pword, server=trading_server, path=filepath):
# Login to MT5
if MetaTrader5.login(login=uname, password=pword, server=trading_server):
return True
else:
print("Login Fail")
quit()
return PermissionError
else:
print("MT5 Initialization Failed")
quit()
return ConnectionAbortedError