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

 
Renat Fatkhullin:

新版本的MetaTrader 5 for Python 5.0.18和MetaTrader 5 build 2319 beta。

  • 通过帮助->检查测试版下载MT5测试版
  • python库。

由于所有的api都发生了变化,旧的例子已不再适用。

以下是新的功能设置。

例子。

是否有计划增加运行测试/优化的 功能并获得其结果?

 

Python程序将只作为脚本在终端运行,不以任何方式参与,也不参与交易策略测试器

这是为那些在Python中进行深入研究并想要的人提供的解决方案。

  1. 从MT5获取市场信息
  2. 查阅交易历史和未结头寸
  3. 贸易

策略测试仪仅适用于MQL5程序。

以后我们将扩展这个库,并提供从终端访问内置和自定义指标的可能性。

 

总之,目前的情况是这样的:我在3台机器上安装了windows 7。

一句话。333

把它放在windows server 2012上--中途启动了。甚至在Python 3.8.1上也是如此

 
Dmitri Custurov:

总之,目前的情况是这样的:我在3台机器上安装了windows 7。

一句话。

把它放在windows server 2012上--开始了一半的工作。甚至在python 3.8.1上也是如此。

十是不在手边,但我认为有并开始。

 
为了以防万一,我在7楼安装了visual studio 和与之配套的libs。它无法启动。去了烟袋。非常酷的东西。我已经在java上开始了。
 

到了10号,就恢复正常了。

from MetaTrader5 import *
#import MetaTrader5 as mt5
import time

initialize()
wait()

# mt5.initialize()
# mt5.wait()

dev = 0.00010;
symbol = "EURUSD"
buy_price = 0

symbol_select(symbol)

Acc = account_info()
Term = terminal_info()
vr = version()

Acc.server
Acc.login
Term.build

'MetaQuotes-Demo'
18192632
2319

1.以前的问题仍然存在。在初始化过程中,终端以一个任意的经纪人和账户开始。不是承诺要解决这个问题吗?

2) 订单被执行。我还没有进一步检查。

我不明白为什么"metatrader5 5.0.18 pypi_0 pypi " 模块只作为"MetaTrader5 " 导入

我们将努力。

祝好运

 
Renat Fatkhullin:

Python程序将只作为脚本在终端运行,不以任何方式参与,也不参与交易策略测试器

这是为那些在Python中进行深入研究并想要的人提供的解决方案。

  1. 从MT5获取市场信息
  2. 查阅交易历史和未结头寸
  3. 贸易

策略测试仪仅适用于MQL5程序。

以后我们将扩展这个库,允许从终端访问内置和自定义指标。

启动Python脚本本身进行优化并不那么有趣。

通过Python脚本自动优化mql5-advisors的可能性是有趣的。类似于"优化管理"一文中所描述的那种情况。

Управление оптимизацией (Часть 2): Создание ключевых объектов и логики приложения
Управление оптимизацией (Часть 2): Создание ключевых объектов и логики приложения
  • www.mql5.com
В текущей статье мы продолжаем процесс создания удобного графического интерфейса для управления оптимизациями в нескольких терминалах одновременно. В прошлой статье мы рассмотрели способ, позволяющий нам запустить терминал из консоли, а также структуру конфигурационного файла. В данной статье мы рассмотрим создание обертки для терминала на...
 
Renat Fatkhullin:

Python程序将只作为脚本在终端运行,不以任何方式参与,也不参与交易策略测试器

这是为那些在Python中进行深入研究并想要的人提供的解决方案。

  1. 从MT5获取市场信息
  2. 查阅交易历史和未结头寸
  3. 贸易

策略测试仪仅适用于MQL5程序。

以后我们将扩展这个库,并提供从终端访问内置和自定义指标的可能性。

我正确的理解是,对于从Py到mt5的计算值和数组的传输,不会有这样的功能?
它仍然使用 - 网络解决方案,或看到模块通过内存传输?

正如我注意到的,现在对象的结构已经改变了
它曾经是

Time  = [x.time for x in ticks]

现在成为

Time  = [x[0] for x in ticks]

你能描述一下 copy_ticks 和 copy_rates 的结构吗?
哪些x[]的索引,对应于什么。

或者是相同的序列? 如

struct MqlTick 
{ 
   datetime     time;          // Время последнего обновления цен 
   double       bid;           // Текущая цена Bid 
   double       ask;           // Текущая цена Ask 
   double       last;          // Текущая цена последней сделки (Last) 
   ulong        volume;        // Объем для текущей цены Last 
   long         time_msc;      // Время последнего обновления цен в миллисекундах 
   uint         flags;         // Флаги тиков 
   double       volume_real;   // Объем для текущей цены Last c повышенной точностью 
};
 

Roman:

正如我所注意到的,对象的结构现在已经改变了

曾经是

现在是。

你能描述一下 copy_ticks 和 copy_rates 的结构吗?
哪些x[]的索引,对应于什么。

或者是相同的序列? 如

现在它是一个numpy数组,而不是以前的元组(即有效的直接映射到内存的数据本身),它的格式可以通过简单的显示看到。

>>> ticks1 = mt5.copy_ticks_from("EURAUD", datetime(2020,2,13,13), 20, mt5.COPY_TICKS_ALL)
>>> ticks1
array([(1581591600, 1.61633, 1.61657, 0., 0, 1581591600170, 134, 0.),
       (1581591600, 1.61633, 1.61658, 0., 0, 1581591600362,   4, 0.),
       (1581591600, 1.61633, 1.61659, 0., 0, 1581591600569,   4, 0.),
       (1581591600, 1.61636, 1.61659, 0., 0, 1581591600759, 130, 0.),
       (1581591601, 1.61633, 1.61659, 0., 0, 1581591601964, 130, 0.),
       (1581591602, 1.61634, 1.61658, 0., 0, 1581591602261, 134, 0.),
       (1581591606, 1.61635, 1.61658, 0., 0, 1581591606276, 130, 0.),
       (1581591607, 1.61637, 1.61661, 0., 0, 1581591607795, 134, 0.),
       (1581591607, 1.61643, 1.61664, 0., 0, 1581591607880, 134, 0.),
       (1581591608, 1.61642, 1.61665, 0., 0, 1581591608184, 134, 0.),
       (1581591608, 1.61643, 1.61667, 0., 0, 1581591608791, 134, 0.),
       (1581591608, 1.61642, 1.61667, 0., 0, 1581591608992, 130, 0.),
       (1581591609, 1.61642, 1.61665, 0., 0, 1581591609192,   4, 0.),
       (1581591609, 1.61642, 1.61667, 0., 0, 1581591609584,   4, 0.),
       (1581591611, 1.61642, 1.61666, 0., 0, 1581591611397,   4, 0.),
       (1581591611, 1.61642, 1.61667, 0., 0, 1581591611694,   4, 0.),
       (1581591612, 1.61643, 1.61667, 0., 0, 1581591612091, 130, 0.),
       (1581591612, 1.61643, 1.61665, 0., 0, 1581591612881,   4, 0.),
       (1581591613, 1.61644, 1.61665, 0., 0, 1581591613300, 130, 0.),
       (1581591613, 1.61648, 1.6167 , 0., 0, 1581591613498, 134, 0.)],
      dtype=[('time', '<i8'), ('bid', '<f8'), ('ask', '<f8'), ('last', '<f8'), ('volume', '<u8'), ('time_msc', '<i8'), ('flags', '<u4'), ('volume_real', '<f8')])

你现在可以立即把它们作为独立的向量(乘法、减法),并画出图形。

rates2 = mt5.copy_rates_from_pos("EURGBP", mt5.TIMEFRAME_M1, 0, 1000)

import matplotlib.pyplot as plt

plt.plot(rates2['time'], rates2['low'], 'g-')
plt.plot(rates2['time'], rates2['high'], 'r-')

plt.show()
 
Almaz:

现在它是一个numpy数组,而不是以前的元组(即有效地直接映射到内存中的数据本身),它的格式可以通过简单地显示出来。

你现在可以立即把它们作为独立的向量(乘、减),并画出图形。

谢谢你Almaz,现在我明白了。

仍然有一个开放的问题。
我的理解是否正确,对于从Py到mt5的计算值和数组的传输,将没有这样的功能?
它仍然使用 - 网络解决方案,或看到模块通过内存传输?