Grupo de usuarios de MetaTrader 5 Python - cómo utilizar Python en Metatrader - página 38

 
Renat Fatkhullin:

Nueva versión de MetaTrader 5 para Python 5.0.18 y MetaTrader 5 build 2319 beta:

  • Descarga de la versión beta de MT5 a través de la Ayuda -> Comprobar la versión beta
  • biblioteca python:

Como todas las api han cambiado, los antiguos ejemplos ya no funcionan.

Aquí está el nuevo conjunto de características:

Ejemplo:

¿Hay algún plan para añadir funciones para ejecutar pruebas/optimización y obtener sus resultados?

 

Los programas de Python se ejecutarán en el terminal sólo como scripts y no intervendrán de ninguna manera y no participarán en el probador de estrategias comerciales.

Esta es una solución para aquellos que están haciendo una investigación profunda en Python y quieren:

  1. acceso a la información de mercado de MT5
  2. acceso al historial de operaciones y a las posiciones abiertas
  3. comercio

Probador de estrategias sólo para programas MQL5.

Más adelante ampliaremos la biblioteca y daremos la posibilidad de acceder a indicadores incorporados y personalizados desde el terminal.

 

En fin, la situación de momento es la siguiente: he instalado windows 7 en 3 máquinas.

El resultado final:333

Ponerlo en windows server 2012 - arrancó a mitad de camino. E incluso en python 3.8.1

 
Dmitri Custurov:

En fin, la situación de momento es la siguiente: he instalado windows 7 en 3 máquinas.

El resultado final:

Póngalo en windows server 2012 - comenzó a mitad de camino. E incluso en python 3.8.1.

Diez no está a la mano, pero creo que allí y empezar.

 
Por si acaso, he instalado visual studio y las librerías con él en el siete. No arranca. Se ha ido a las tomas de humo. Es un material muy bueno. Ya lo empecé en java.
 

El 10, vuelve a la normalidad.

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.El problema anterior se mantiene. Durante la inicialización, el terminal comienza con un corredor y una cuenta arbitrarios. ¿No se prometió arreglarlo?

2) Las órdenes se ejecutan. No lo he comprobado más.

No entiendo por qué el módulo "metatrader5 5.0.18 pypi_0 pypi" se importa sólo como "MetaTrader5".

Lo intentaremos.

Buena suerte

 
Renat Fatkhullin:

Los programas de Python se ejecutarán en el terminal sólo como scripts y no intervendrán de ninguna manera y no participarán en el probador de estrategias comerciales.

Esta es una solución para aquellos que están haciendo una investigación profunda en Python y quieren:

  1. acceso a la información de mercado de MT5
  2. acceso al historial de operaciones y a las posiciones abiertas
  3. comercio

Probador de estrategias sólo para programas MQL5.

Más adelante ampliaremos la biblioteca para permitir el acceso a indicadores incorporados y personalizados desde el terminal.

El lanzamiento de los propios scripts de Python para su optimización no es tan interesante.

Es interesante la posibilidad de automatizar la optimización de los asesores de mql5 mediante scripts de Python. Algo como lo descrito en el artículo"Gestión de la optimización".

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

Los programas de Python se ejecutarán en el terminal sólo como scripts y no intervendrán de ninguna manera y no participarán en el probador de estrategias comerciales.

Esta es una solución para aquellos que están haciendo una investigación profunda en Python y quieren:

  1. acceso a la información de mercado de MT5
  2. acceso al historial de operaciones y a las posiciones abiertas
  3. comercio

Probador de estrategias sólo para programas MQL5.

Más adelante ampliaremos la biblioteca y daremos la posibilidad de acceder a indicadores incorporados y personalizados desde el terminal.

¿Entiendo correctamente que para transferir valores calculados y matrices de Py a mt5, no habrá tales funciones?
¿Y queda por utilizar - soluciones de red, o serrar el módulo sobre la transferencia a través de la memoria?

Como he observado, ahora la estructura de los objetos ha cambiado
solía ser

Time  = [x.time for x in ticks]

ahora se convierten en

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

¿Podría describir las estructuras de copy_ticks y copy_rates?
Qué índices x[], corresponden a qué.

¿O es la misma secuencia? como en

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:

Como he observado, la estructura de los objetos ha cambiado

solía ser

ahora sí.

¿Podría describir las estructuras de copy_ticks y copy_rates?
Qué índices x[], corresponden a qué.

¿O es la misma secuencia? como en

Ahora es un array de numpy, no una tupla como era antes (es decir, mapeo directo efectivo en memoria de los propios datos), su formato se puede ver simplemente visualizándolo:

>>> 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')])

ahora puedes obtenerlos inmediatamente como vectores separados (multiplicar, restar) y dibujar gráficos:

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:

Ahora es un array de numpy, no una tupla como era antes (es decir, mapeo directo efectivo en memoria de los propios datos), su formato se puede ver simplemente visualizándolo:

ahora puedes obtenerlos inmediatamente de como vectores separados(multiplicar, restar) y dibujar gráficos:

Gracias Almaz, ahora lo entiendo.

Todavía hay una pregunta abierta:
¿Entiendo correctamente que para transferir valores calculados y matrices de Py a mt5, no habrá tales funciones?
¿Y queda por utilizar - soluciones de red, o serrar el módulo sobre la transferencia a través de la memoria?