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

 
Maxim Dmitrievsky:

Renat, ¿hay alguna actualización sobre el soporte de ONNX?

No.

Todavía no hay demanda ni público preparado.

 

Se han hecho muchos cambios en el último año, los antiguos guiones ya no funcionan.

Hay un terminal MT5 build 2361, 32bit en Windows 7. El terminal en sí funciona, pero la conexión de los scripts de python ha dejado de funcionar (aunque funcionaba a principios de año).

Obviamente, debido a las actualizaciones del terminal, nada más ha cambiado. Para la prueba, ejecute un sencillo script

import MetaTrader5 as mt5
from time import sleep

mt5.initialize()
print('start')
print(mt5.terminal_info())
sleep(10) 

mt5.shutdown()
print('end')

Pregunta ¿qué versión del módulo python de MetaTrader5 debo instalar para que vuelva a funcionar? (¿O cómo revertir las actualizaciones del terminal?)

He probado diferentes versiones del módulo - todas tienen errores. Los que son más nuevos dan -10003, 'IPC initialize failed, MetaTrader 5 x64 not found',

Algunos pasan la inicialización, lanzan la terminal, pero cuando solicito algo, devuelven RuntimeError: IPC recv failed in 'py_test.py'.

El más antiguo 5.0.10 tiene otros comandos, pero tampoco funcionan.

La terminal no puede actualizarse a versiones más nuevas, había alguna versión de módulo de python que funcionaba, pero ahora no la encuentro.

La versión de 64 bits del terminal requiere actualizaciones del sistema operativo y un montón de otras actualizaciones, además el sistema operativo de 64 bits come muchas veces más memoria y espacio en disco, mala elección. En general, la política de auto-actualización de cualquier cosa es mala. Si funciona, no lo toques.

En general, se debería tener una tabla en la documentación de qué versiones son compatibles con cuáles, si no se admite la compatibilidad con versiones anteriores y se fuerzan las actualizaciones.

Автоматическое обновление - Для продвинутых пользователей - Справка по MetaTrader 5
Автоматическое обновление - Для продвинутых пользователей - Справка по MetaTrader 5
  • www.metatrader5.com
В платформу встроена система автоматического обновления. Она позволяет своевременно получать и устанавливать новые версии программы. Эту систему отключить нельзя. Порядок обновления При подключении к торговому серверу происходит проверка наличия обновлений платформы. Если найдено обновление какого-либо из компонентов торговой платформы...
 
Lyuk:


La compatibilidad con el sistema operativo de 32 bits se desactivó hace muchas construcciones. La terminal ha cambiado mucho desde entonces. De ahí la probable solución a tu problema: DEBES usar Windows 10 de 64 bits.

 

Pero había una compilación compatible del terminal y del módulo, puedes simplemente instalarlos, sin ninguna característica nueva.

Y exigir Windows 10 de 64 bits es demasiado para un programa como el terminal. Es demasiado pesado, codicioso y poco fiable para hacer funcionar cualquier cosa que requiera un funcionamiento a largo plazo. También hay problemas con las actualizaciones automáticas. Es una pena que MT esté atada a este sistema.

 
Vladimir Karputov:

Necesitas usar Windows 10 de 64 bits.

¿Qué pasa con Windows 7 x64? ¿Me he perdido otra actualización?

 
Aleksey Vyazmikin:

¿Qué pasa con Windows 7 x64? ¿Me he perdido otra noticia?

Me parece que el 7 es mejor que el 10. No hay orientación en los sistemas móviles.

 
Valeriy Yastremskiy:

Para mí el 7 es mejor que el 10. No hay orientación a los sistemas móviles.

¡Estoy de acuerdo, trabajé en el 10 durante casi un año y volví a casa feliz con el 7!

 
Renat Fatkhullin:

No.

Mientras no haya demanda y público preparado.

4 personas han expresado su demanda hasta ahora, en el tema de machine learning :) me parece que si hay una oportunidad y un par de artículos sobre el tema, los pythonistas empezarán a portar modelos. Especialmente los de habla inglesa.
 
2020.11.09 09:43:31.509 Terminal        MetaTrader 5 x64 build 2670 started for MetaQuotes Software Corp.
2020.11.09 09:43:31.510 Terminal        Windows 10 build 19042, Intel Core i7-9750 H  @ 2.60 GHz, 23 / 31 Gb memory, 1665 / 1861 Gb disk, IE 11, UAC, GMT+2
2020.11.09 09:43:31.510 Terminal        C:\Users\barab\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075


Lo ejecuto tanto como un script en MetaEditor como en jupyter notebook.

Python version:  sys.version_info(major=3, minor=7, micro=6, releaselevel='final', serial=0)
Scikit-Learn version:  0.23.1


No puedo imprimir las cinco primeras líneas del objeto DataFrame.

Tomo el script de la 'carpeta de datos'\NScripts\Python\copy_rates_from.py' y añado las líneas:

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 5
if 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)

y el método no produce nada:

(1578614400, 1.11051, 1.11093, 1.11017, 1.11041, 2448, 1, 0)

Выведем пять первых строк

Выведем датафрейм с данными



Por qué el método 'head()' no funcionó, pero esta maniobra:

Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias

Nueva versión de MetaTrader 5 build 2650: Carga de gráficos en segundo plano y mejoras en el MQL5 Profiler

Rashid Umarov, 2020.11.10 14:03

Pruébalo

# выведем пять первых строк (метод 'head' pandas)
print("\nВыведем пять первых строк")
print( rates_frame.head())

Resultado

Выведем пять первых строк
         time     open     high      low    close  tick_volume  spread  real_volume
0  1578484800  1.11384  1.11386  1.11110  1.11200        12101       0            0
1  1578499200  1.11200  1.11308  1.11087  1.11180        13243       0            0
2  1578513600  1.11180  1.11180  1.11018  1.11041         5709       0            0
3  1578528000  1.11053  1.11194  1.11033  1.11174         4409       0            0
4  1578542400  1.11174  1.11190  1.11126  1.11183         2964       0            0



¿funcionó?

 
Vladimir Karputov:

Por qué no funcionó el método 'head()', sino esta maniobra:


¿funcionó?

Porque el método head()(https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.head.html) devuelve un objeto, no la salida al registro. Para ver el contenido, es necesario enviar explícitamente el objeto a print()

Esta anaconda, por conveniencia, muestra los objetos como si se hubiera llamado a print().

Razón de la queja: