Три способа запуска скрипта Python: редактор MetaEditor, терминал MetaTrader 5 и Jupyter Notebook
Подготовка скрипта - со страницы Модуль MetaTrader для интеграции с Python берём скрипт и добавляем обработки ошибок ( #164 ). Сам скрипт:
# Copyright 2021, MetaQuotes Ltd. from datetime import datetime import matplotlib.pyplot as plt import pandas as pd from pandas.plotting import register_matplotlib_converters register_matplotlib_converters() import MetaTrader5 as mt5 # подключимся к MetaTrader 5 if not mt5.initialize(): print("initialize() failed") mt5.shutdown() # запросим статус и параметры подключения print(mt5.terminal_info()) # получим информацию о версии MetaTrader 5 print(mt5.version()) # запросим 1000 тиков с EURAUD euraud_ticks = mt5.copy_ticks_from("EURAUD", datetime(2020,1,28,13), 1000, mt5.COPY_TICKS_ALL) # запросим тики с AUDUSD в интервале 2019.04.01 13:00 - 2019.04.02 13:00 audusd_ticks = mt5.copy_ticks_range("AUDUSD", datetime(2020,1,27,13), datetime(2020,1,28,13), mt5.COPY_TICKS_ALL) # получим бары с разных инструментов разными способами eurusd_rates = mt5.copy_rates_from("EURUSD", mt5.TIMEFRAME_M1, datetime(2020,1,28,13), 1000) print('type(eurusd_rates)=',type(eurusd_rates)) if eurusd_rates is None: print('mt5.copy_rates_from(EURUSD) failed. error=',mt5.last_error()) eurgbp_rates = mt5.copy_rates_from_pos("EURGBP", mt5.TIMEFRAME_M1, 0, 1000) if eurgbp_rates is None: print('mt5.copy_rates_from(EURGBP) failed. error=',mt5.last_error()) eurcad_rates = mt5.copy_rates_range("EURCAD", mt5.TIMEFRAME_M1, datetime(2020,1,27,13), datetime(2020,1,28,13)) if eurcad_rates is None: print('mt5.copy_rates_from(EURCAD) failed. error=',mt5.last_error()) # завершим подключение к MetaTrader 5 mt5.shutdown() #DATA if euraud_ticks is not None: print('euraud_ticks(', len(euraud_ticks), ')') for val in euraud_ticks[:10]: print(val) else: print("No data in euraud_ticks") if audusd_ticks is not None: print('audusd_ticks(', len(audusd_ticks), ')') for val in audusd_ticks[:10]: print(val) else: print("No data in audusd_ticks") if eurusd_rates is not None: print('eurusd_rates(', len(eurusd_rates), ')') for val in eurusd_rates[:10]: print(val) else: print("No data in eurusd_rates") if eurgbp_rates is not None: print('eurgbp_rates(', len(eurgbp_rates), ')') for val in eurgbp_rates[:10]: print(val) if eurcad_rates is not None: print('eurcad_rates(', len(eurcad_rates), ')') for val in eurcad_rates[:10]: print(val) else: print("No data in eurcad_rates") #PLOT # создадим из полученных данных DataFrame ticks_frame = pd.DataFrame(euraud_ticks) # сделаем отрисовку тиков на графике plt.plot(ticks_frame['time'], ticks_frame['ask'], 'r-', label='ask') plt.plot(ticks_frame['time'], ticks_frame['bid'], 'b-', label='bid') # выведем легенды plt.legend(loc='upper left') # добавим заголовок plt.title('EURAUD ticks') # покажем график plt.show()
Редактор MetaEditor
Запуск Python скрипта осуществляется через кнопку 'Скомпилировать'
Терминал MetaTrader
В терминале в окне 'Навигатор' находим скрипт и перетаскиваем его на график. Например у меня он расположен здесь:
Jupyter Notebook
Запуск скрипта по кнопке 'Запуск'
Получить справку (которая встроена в дополнительный модуль) можно так - пример скрипта Python для модуля 'MetaTrader5'
help('MetaTrader5')
Результат (привожу только первые несколько строк ... )
2021.07.21 11:16:35.105 Python "C:\Users\barab\AppData\Local\Programs\Python\Python38\python.exe" -u "C:\Users\barab\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\Scripts\Python\MyScr\Script 1.py" AUDUSD 1 2021.07.21 11:16:35.325 Python Help on package MetaTrader5: 2021.07.21 11:16:35.325 Python 2021.07.21 11:16:35.325 Python NAME 2021.07.21 11:16:35.325 Python MetaTrader5 2021.07.21 11:16:35.325 Python 2021.07.21 11:16:35.325 Python PACKAGE CONTENTS 2021.07.21 11:16:35.325 Python _core 2021.07.21 11:16:35.325 Python 2021.07.21 11:16:35.325 Python FUNCTIONS 2021.07.21 11:16:35.325 Python Buy(symbol, volume, price=None, *, comment=None, ticket=None) 2021.07.21 11:16:35.325 Python # Buy order 2021.07.21 11:16:35.325 Python 2021.07.21 11:16:35.325 Python Close(symbol, *, comment=None, ticket=None) 2021.07.21 11:16:35.325 Python # Close all specific orders 2021.07.21 11:16:35.325 Python 2021.07.21 11:16:35.325 Python Sell(symbol, volume, price=None, *, comment=None, ticket=None) 2021.07.21 11:16:35.325 Python # Sell order
import os
path_module=os.getcwd()
print ("Start path os,getcwd():",path_module)
ddir=path_module.split("\\")
print (ddir)
#===============
print ('end')
ожидалось получить путь к исполняемому модулю. но если запускать из-под метаэдитора:
2021.07.22 18:11:00.665 Python "C:\Program Files\Python37\python.exe" -u "C:\Users\Alex\AppData\Roaming\MetaQuotes\Terminal\BD115B570DAF19795DD0BA0C4463675D\MQL5\Scripts\Python\py\testPathBug.py" ETHRUB 15
2021.07.22 18:11:00.919 Python Start path os,getcwd(): C:\Program Files\Swissquote Bank MT5 Client Terminal
2021.07.22 18:11:00.919 Python ['C:', 'Program Files', 'Swissquote Bank MT5 Client Terminal']
2021.07.22 18:11:00.919 Python end
под MS VCode все ок:
Microsoft Windows [Version 10.0.19043.1110]
(c) Корпорация Майкрософт (Microsoft Corporation). Все права защищены.
C:\Users\Alex\AppData\Roaming\MetaQuotes\Terminal\BD115B570DAF19795DD0BA0C4463675D\MQL5\Scripts\Python\py> cmd /C ""C:\Program Files\Python37\python.exe" c:\Users\Alex\.vscode\extensions\ms-python.python-2021.7.1053846006\pythonFiles\lib\python\debugpy\launcher 6875 -- c:\Users\Alex\AppData\Roaming\MetaQuotes\Terminal\BD115B570DAF19795DD0BA0C4463675D\MQL5\Scripts\Python\py\testPathBug.py "
Start path os,getcwd(): C:\Users\Alex\AppData\Roaming\MetaQuotes\Terminal\BD115B570DAF19795DD0BA0C4463675D\MQL5\Scripts\Python\py
['C:', 'Users', 'Alex', 'AppData', 'Roaming', 'MetaQuotes', 'Terminal', 'BD115B570DAF19795DD0BA0C4463675D', 'MQL5', 'Scripts', 'Python', 'py']
end
C:\Users\Alex\AppData\Roaming\MetaQuotes\Terminal\BD115B570DAF19795DD0BA0C4463675D\MQL5\Scripts\Python\py>
У меня так:
MetaEditor |
---|
2021.07.22 18:34:54.249 Python Start path os,getcwd(): C:\Windows\system32 2021.07.22 18:34:54.249 Python ['C:', 'Windows', 'system32'] 2021.07.22 18:34:54.249 Python end |
MetaTrader 5 |
---|
2021.07.22 18:38:29.152 os_getcwd (EURUSD,Daily) Start path os,getcwd(): C:\Windows\system32 2021.07.22 18:38:29.152 os_getcwd (EURUSD,Daily) ['C:', 'Windows', 'system32'] 2021.07.22 18:38:29.152 os_getcwd (EURUSD,Daily) end |
jupyter notebook |
---|
Start path os,getcwd(): C:\Users\barab\OneDrive\Jupyter Examples ['C:', 'Users', 'barab', 'OneDrive', 'Jupyter Examples'] end |
Python |
---|
== RESTART: C:/Users/barab/AppData/Local/Programs/Python/Python38/os_getcwd.py = Start path os,getcwd(): C:\Users\barab\AppData\Local\Programs\Python\Python38 ['C:', 'Users', 'barab', 'AppData', 'Local', 'Programs', 'Python', 'Python38'] end |
Терминал:
2021.07.22 07:58:29.207 Terminal MetaTrader 5 x64 build 3001 started for MetaQuotes Software Corp. 2021.07.22 07:58:29.207 Terminal Windows 10 build 19043, Intel Core i7-9750H @ 2.60GHz, 25 / 31 Gb memory, 816 / 947 Gb disk, IE 11, UAC, GMT+2 2021.07.22 07:58:29.207 Terminal C:\Users\barab\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075
У меня так:
Дело в том, что я новичек в пайтоне, но модуль питона у меня в одном и том же месте.
os.getcwd() - текущая рабочая директория. так пишут...
Но не в Windows или Program Files же
2021.07.22 19:05:18.056 Terminal Swissquote Bank MT5 Client Terminal x64 build 3003 started for Swissquote Bank SA
2021.07.22 19:05:18.058 Terminal Windows 10 build 19043, Intel Core i5-4200U @ 1.60GHz, 2 / 7 Gb memory, 78 / 913 Gb disk, IE 11, UAC, GMT+2
2021.07.22 19:05:18.058 Terminal C:\Users\Alex\AppData\Roaming\MetaQuotes\Terminal\BD115B570DAF19795DD0BA0C4463675D
Дело в том, что я новичек в пайтоне, но модуль питона у меня в одном и том же месте.
os.getcwd() - текущая рабочая директория. так пишут...
Но не в Windows или Program Files же
2021.07.22 19:05:18.056 Terminal Swissquote Bank MT5 Client Terminal x64 build 3003 started for Swissquote Bank SA
2021.07.22 19:05:18.058 Terminal Windows 10 build 19043, Intel Core i5-4200U @ 1.60GHz, 2 / 7 Gb memory, 78 / 913 Gb disk, IE 11, UAC, GMT+2
2021.07.22 19:05:18.058 Terminal C:\Users\Alex\AppData\Roaming\MetaQuotes\Terminal\BD115B570DAF19795DD0BA0C4463675D
Я такой же как и Вы :). Поэтому создал тему где новички могут общаться: "Интеграция MetaTrader 5 с Python для начинающих". Хотите вынесу посты туда - может кто другой что-то подскажет ...?

- 2021.07.18
- www.mql5.com
Я такой же как и Вы :). Поэтому создал тему где новички могут общаться: "Интеграция MetaTrader 5 с Python для начинающих". Хотите вынесу посты туда - может кто другой что-то подскажет ...?
Согласен. Но все дело видимо в ланчере Соde - он дает верную директорию модуля. А все остальные - рабочуюдиректорию главного модуля.( терминала или юпитера)
Но сам Пайтон ведет себя аналогично и ожидаемо:
Согласен. Но все дело видимо в ланчере Соde - он дает верную директорию модуля. А все остальные - рабочуюдиректорию главного модуля.( терминала или юпитера)
Но сам Пайтон ведет себя аналогично и ожидаемо:
А Ваш терминал MetaTrader 5 случайно не с флагом 'Portable' запускается?
Не.
Ho Python 3.7, a у Вас 3.8

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Минимум, который необходим: