MetaTrader 5 Python用户组 - 如何在Metatrader中使用Python - 页 31

 

在编辑器中对Python脚本进行编译意味着在编辑器中运行它们来执行。

看一下错误窗口和日志中的输出。日志显示主输出,错误窗口显示stderr输出。

 
Renat Fatkhullin:

在编辑器中对Python脚本进行编译意味着在编辑器中运行它们来执行。

看一下错误窗口和日志中的输出。日志显示主输出,错误窗口显示stderr输出。

我明白了,错误窗口中没有错误。

没有错误

但在日志窗口中,该脚本可能正在等待我的行动。

脚本正在等待我的行动

根据我的理解,只是没有反馈(可能还没有)。


然后我尝试运行帖子#1中的例子(https://www.mql5.com/ru/forum/306688 )--安装了matplotlib软件包和MetaTrader5。

试图运行第一个帖子中的例子

在错误中

test.py started test.py 1       1
Traceback (most recent call last):      test.py 1       1
    MT5Initialize()     test.py 1       1
NameError: name 'MT5Initialize' is not defined  test.py 1       1
test.py finished in 389 ms              1       1

在日志中

2020.01.27 10:08:12.899 Python  "E:\Programs\Python37\python.exe" "C:\Users\barab\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\Scripts\Python\test.py"

而什么也没有发生(终端同时在运行)。

 
Renat Fatkhullin:

在编辑器中对Python脚本进行编译意味着在编辑器中运行它们来执行。

看一下错误窗口和日志中的输出。日志显示主输出,错误窗口显示stderr输出。

所以.py脚本不会编译成.ex5?
并从导航仪上运行它。

 
Vladimir Karputov:

我明白了,"错误 "窗口中没有错误。


但在 "日志 "窗口中,该脚本可能正在等待我的行动。

根据我的理解,只是没有反馈(可能还没有)。


然后我尝试运行帖子#1中的例子(https://www.mql5.com/ru/forum/306688 )--安装了matplotlib软件包和MetaTrader5。

试图运行第一个帖子中的例子

在错误中

在日志中

并没有发生任何事情(终端正在运行)。

没有安装MetaTrader5库,请安装。

pip install --upgrade metatrader5

一切顺利。


 
Roman:

那么,.py脚本将不会被编译成.ex5?
并从导航仪上运行它。

当然,它不会被编译,但会作为一个*.py程序在导航器中可见,并在一个单独的终端线程中隐藏运行。

通过MetaTrader 5 Python库与终端通信。

 
Renat Fatkhullin:

不提供MetaTrader5库,做吧。

一切顺利。


该库已安装。


(被立即放进了matplotlib)


新增: 并不在python中运行。


 
Renat Fatkhullin:

当然,它不会被编译,但会在导航器中以*.py程序的形式出现,并在终端的一个独立线程中隐藏运行。

通过Python的内置MetaTrader 5库与终端通信。

现在我明白了,它将像Python的可视化笔记本一样,只是整个代码被运行。
我一直在为汇编的事努力工作,而汇编本来是很好的。
问题是,在标准的.py到.exe的编译中,对逆向工程的保护非常少。你可以说它是无用的。
如果.py编译为.ex5,它将真正提升mql5的水平,哇,mql5编译为一个受.ex5保护的可执行文件。
Python有这个全球问题,想想吧。特别是由于Python编译为.exe,使用类似C或C++的编译器。
而mql5使用LLVM。

 

卸载了python。安装了3.8.1 x64。

在Python中运行时,现在有这些错误。


Python 3.8.1 (tags/v3.8.1:1 b293b6, Dec 18 2019, 23:11:46) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>> 
= RESTART: C:\Users\barab\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\Scripts\Python\metatrader5-test.py
Traceback (most recent call last):
  File "C:\Users\barab\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\Scripts\Python\metatrader5-test.py", line 2, in <module>
    from MetaTrader5 import *
  File "E:\Programs\Python\Python38\lib\site-packages\MetaTrader5\__init__.py", line 35, in <module>
    from .C import *
ImportError: DLL load failed while importing C: Не найден указанный модуль.
>>> 
 
Vladimir Karputov:

图书馆矗立在那里。


(与matplotlib 一起被立即提供)


新增: 并不在python中运行。


你有Python 3.8,最好是3.7.6,因为许多库还没有准备好用于3.8。

1) 在命令行中,检查脚本。

2) 检查PATH中是否有python路径。

3) 确保只有一个Python副本,并且与其他版本没有冲突。

4) 确保编辑器中Python单一副本的路径是正确的。


很有可能你有一群来自不同环境的间接安装的Pythons,比如Visual Studio

 
Vladimir Karputov:

然后我尝试运行帖子#1中的例子(https://www.mql5.com/ru/forum/306688 )--安装了matplotlib软件包和MetaTrader5。

试着运行第一个帖子中的例子

在错误中

在日志中

而什么也没有发生(终端同时在运行)。

我们需要等待一下 - 脚本要求从2019年1月28日起的数据 - 这需要时间。

第二个可能的原因--在终端中指定了"窗口中最大条数"的有限值。

ticks1 = MT5CopyTicksFrom("EURAUD", datetime(2019,1,28,13), 10000, MT5_COPY_TICKS_ALL)
ticks2 = MT5CopyTicksRange("AUDUSD", datetime(2019,1,27,13), datetime(2019,1,28,13,1), MT5_COPY_TICKS_ALL)

rates1 = MT5CopyRatesFrom("EURUSD", MT5_TIMEFRAME_M1, datetime(2019,1,28,13), 1000)
rates2 = MT5CopyRatesFromPos("EURGBP", MT5_TIMEFRAME_M1, 0, 1000)
rates3 = MT5CopyRatesRange("EURCAD", MT5_TIMEFRAME_M1, datetime(2019,1,27,13), datetime(2019,1,28,13))

帮助中明确指出https://www.mql5.com/ru/docs/integration/python_metatrader5/mt5copyratesfrom_py

MetaTrader 5终端只在图表上向用户提供的历史记录内给出条形图。用户可以使用的条数在设置中由 "窗口中最大条数"参数设定。


如果这真的是关于条数的问题,你可以改变限制,或者将脚本固定为取最接近的分钟数,例如对于2020年--这应该是有效的

Настройки платформы - Начало работы - Справка по MetaTrader 5
Настройки платформы - Начало работы - Справка по MetaTrader 5
  • www.metatrader5.com
Торговая платформа обладает множеством настроек, что позволяет организовать работу в ней так, как это удобно именно вам. Выполните команду " Настройки" меню "Сервис" или нажмите "Ctrl+O". Графики — общая настройка отображения ценовых графиков, а также настройка параметров управления объектами: выделение объектов после их создания, немедленная...