В платформу встроена система автоматического обновления. Она позволяет своевременно получать и устанавливать новые версии программы. Эту систему отключить нельзя. Порядок обновления При подключении к торговому серверу происходит проверка наличия обновлений платформы. Если найдено обновление какого-либо из компонентов торговой платформы...
from datetime import datetime
import MetaTrader5 as mt5
# выведем данные о пакете MetaTrader5
print("MetaTrader5 package author: ",mt5.__author__)
print("MetaTrader5 package version: ",mt5.__version__)
# импортируем модуль pandas для вывода полученных данных в табличной форме
import pandas as pd
pd.set_option('display.max_columns', 500) # сколько столбцов показываем
pd.set_option('display.width', 1500) # макс. ширина таблицы для показа
# импортируем модуль pytz для работы с таймзоной
import pytz
# установим подключение к терминалу MetaTrader 5if not mt5.initialize():
print("initialize() failed")
mt5.shutdown()
# установим таймзону в UTC
timezone = pytz.timezone("Etc/UTC")
# создадим объект datetime в таймзоне UTC, чтобы не применялось смещение локальной таймзоны
utc_from = datetime(2020, 1, 10, tzinfo=timezone)
# получим 10 баров с EURUSD H4 начиная с 01.10.2020 в таймзоне UTC
rates = mt5.copy_rates_from("EURUSD", mt5.TIMEFRAME_H4, utc_from, 10)
# завершим подключение к терминалу MetaTrader 5
mt5.shutdown()
# выведем каждый элемент полученных данных на новой строке
print("Выведем полученные данные как есть")
for rate in rates:
print(rate)
# создадим из полученных данных DataFrame
rates_frame = pd.DataFrame(rates)
# выведем пять первых строк (метод 'head' pandas)
print("\nВыведем пять первых строк")
rates_frame.head()
rates_frame['time']=pd.to_datetime(rates_frame['time'], unit='s')
# выведем данные
print("\nВыведем датафрейм с данными")
print(rates_frame)
rates_frame['time']=pd.to_datetime(rates_frame['time'], unit='s')
# выведем данные
print("\nВыведем датафрейм с данными")
print(rates_frame)
而该方法并没有输出任何东西。
(1578614400, 1.11051, 1.11093, 1.11017, 1.11041, 2448, 1, 0)
Выведем пять первых строк
Выведем датафрейм с данными
# выведем пять первых строк (метод 'head' pandas)
print("\nВыведем пять первых строк")
print( rates_frame.head())
结果
Выведем пять первых строк
time open high low close tick_volume spread real_volume
015784848001.113841.113861.111101.112001210100115784992001.112001.113081.110871.111801324300215785136001.111801.111801.110181.11041570900315785280001.110531.111941.110331.11174440900415785424001.111741.111901.111261.11183296400
Renat,对ONNX的支持是否有任何更新?
没有。
目前还没有需求,也没有准备好的观众。
过去一年中发生了很多变化,旧的脚本不再起作用。
有一个终端MT5 build 2361,32bit在Windows 7上。终端本身可以工作,但连接Python脚本的工作却停止了(尽管在年初时它还在工作)。
很明显,由于终端的更新,其他方面都没有变化。对于测试,运行一个简单的脚本
问题是我应该安装什么版本的MetaTrader5 python模块来使其重新工作?(或如何回滚终端的更新?)
我试过不同版本的模块--都有错误。那些较新的设备会发出-10003,"IPC初始化失败,未找到MetaTrader 5 x64"。
其中一些初始化并运行终端,但它们返回RuntimeError: IPC recv failed in 'py_test.py'。
最早的5.0.10有其他的命令,但它们也不起作用。
终端无法更新到较新的版本,以前有一些工作版本的Python模块,但我现在找不到了。
64位版本的终端需要操作系统的更新和很多其他的更新,再加上64位操作系统吃的内存和磁盘空间要多很多倍,不好选择。一般来说,自动更新任何东西的政策是不好的。如果它起作用,不要碰它。
一般来说,你应该在文档中设置一个表格,说明哪些版本与哪些版本兼容,如果你不支持与旧版本的兼容,就会强制更新。
对32位操作系统的支持在许多构建之前就已经被禁用。从那时起,终端已经发生了很大的变化。因此,你的问题的可能解决方案是:你必须使用64位的Windows 10。
但有一个兼容的终端和模块的构建,你可以直接安装它们,没有任何新功能。
而要求Windows 10 64位对于像终端这样的程序来说是太多了。它太重,太贪婪,不可靠,无法运行任何需要长期运行的东西。自动更新也有问题。很遗憾,MT被捆绑在这个系统上。
你必须使用64位Windows 10。
Windows 7 x64有什么问题?我是不是又错过了一次更新?
Windows 7 x64有什么问题?我又错过了一条新闻吗?
在我看来,7比10好。在移动系统上没有定位。
对我来说,7比10好。没有对移动系统的定位。
我同意,我在10号文件上工作了将近一年,回家后对7号文件很满意。
没有。
只要没有需求,没有准备好的观众。
我在MetaEditor和jupyter笔记本中都以脚本的形式运行它。
我不能打印DataFrame对象的前五行。
我从'data文件夹'\Scripts\Python\copy_rates_from.py'中取出脚本,并添加了这几行。
而该方法并没有输出任何东西。
为什么'head()'方法不起作用,而这个手法 却起作用。
关于交易、自动交易系统和策略测试的论坛
新版MetaTrader 5 build 2650:图表的背景加载和MQL5分析器的改进
Rashid Umarov, 2020.11.10 14:03
试试吧
结果
有用吗?
为什么'head()'方法没有起作用,而这个演习。
有用吗?
因为head()方法(https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.head.html) 返回一个对象,而不是输出到日志。为了看到内容,你需要明确地将对象发送到print()。
为了方便起见,这条蟒蛇 会像调用print()一样输出对象。