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

 
Maxim Dmitrievsky:

y si, hipotéticamente, tomas el soporte ONNX, los modelos importados serán más lentos que el propio MQL?

Compruébelo usted mismo.

Pero no olvides que la verdadera envoltura sobre ONNX será definitivamente en C++ como una biblioteca/módulo para python, y luego el controlador/bibliotecas de la tarjeta de vídeo específica (si es adecuado).

Python no es más que un corredor entre las llamadas a bibliotecas eficientes, con las que hay que intercambiar en forma de conjuntos de datos bastante caros.

La gente no entiende lo suficiente que Python es realmente una envoltura sobre las llamadas a las bibliotecas y nada más. Creen que python es un lenguaje potente y moderno. Pero en realidad se trata de un bindings entre bibliotecas C++ ;)

Y cada librería tiene costos monstruosos para asegurar la compatibilidad con las estructuras dinámicas de python(incluso en numpy).

 
Renat Fatkhullin:

Compruébelo usted mismo.

Pero no olvides que la verdadera envoltura sobre ONNX será definitivamente en C++ en forma de una biblioteca/módulo para python, y luego el controlador/bibliotecas de la tarjeta de vídeo específica (si es adecuada).

Python no es más que un corredor entre las llamadas a bibliotecas eficientes, con las que hay que intercambiar en forma de conjuntos de datos bastante caros.

La gente no entiende lo suficiente que Python es realmente una envoltura sobre las llamadas a las bibliotecas y nada más. Piensan que python es un lenguaje potente y moderno. Pero en realidad es un enlace entre bibliotecas C++ ;)

Y cada librería tiene un coste monstruoso para asegurar la compatibilidad con las estructuras dinámicas de python(incluso en numpy).

Lo comprobaré... aún no he mirado los detalles

Está claro que python es sobre todo para la investigación.

Pero para sacar código de alguna red neuronal ya entrenada después (y que cambian cada vez durante la investigación), ya es irreal transferir algo a algún sitio :)

Tal vez no entiendo del todo lo que querías hacer. De todas formas, tienes bastantes posibilidades con la api de python. A no ser que no puedas introducirlo en el mercado.

 
Renat Fatkhullin:

Nein. Es ingenuo pensar que nos hemos creado una identidad propia y que hemos elegido una lengua que es la de un hombre de cien años, para que el probador pueda entenderla.

Para nosotros es muy rentable, nuestra idea de desarrollar, C ++ - Bibliotheken von Drittanbietern in MQL5-Module neu zu kompilieren. Para ello, hemos comenzado a integrar un compilador LLVM externo en el editor.

No sé si mi pregunta se ha traducido correctamente. La pregunta es ligeramente diferente.

¿Recibe el módulo Python comandos para el comprobador de estrategias? ¿Con el tiempo o definitivamente no?
 

Yo también aportaré mis cinco kopecks ))))

Me aficioné a Python precisamente porque es mucho más fácil (me parece) trabajar con redes. Hay muchos avances en ella. Sólo tienes que cogerlo y aplicarlo. Y no puedes deshacerte de las redes neuronales. En mi opinión, MQL sólo necesita bibliotecas para trabajar con esta entidad...

 
Almaz:

Dame un ejemplo de tu código Python que se ralentiza, no queda claro por las palabras qué hace y cómo obtienes los datos. ¿Y por qué escribe constantemente en el archivo? ¿No se puede hacer al final?

He cambiado un poco el código Python: he aumentado la solicitud de ticks de un día a 30, he organizado la escritura en el archivo no línea por línea, sino en bloques de 500 líneas. El tiempo de funcionamiento se redujo en un par de segundos. El indicador no tiene nada que ver.

He rediseñado mi indicador. Añadí búferes y escribí los datos en el archivo línea por línea. La solicitud de garrapatas sigue siendo la misma: un día.

He puesto el indicador en el gráfico.

2020.11.29 17:58:07.306 newCandles_F_1.01 (GBPUSD,H2)   00:01:01

El indicador ha renderizado y escrito todos los datos en el archivo en un minuto.

Python - 3 horas

MQL - 1 minuto

 

Saludos a todos.

¿Puede decirme por qué?

Leo un archivo csv en un marco de datos. Luego apilo algunas líneas en una y escribo en un nuevo archivo csv

....
csv_framе = pd.read_csv(flname, delimiter=',')
#  тут меняю имя файла
if os.path.isfile(flname):
    os.remove(flname)

rows, cols = csv_framе.shape
for i in range(candles_in_train, rows):
    lst = list()
    for k in range(candles_in_train):
        m = i - candles_in_train + k
        l = list(csv_framе.iloc[m])
        if m < i - 1:
            del l[-1]
        lst += l
    mf.write_csv_data(flname, 'a', lst)

Este código funciona durante 17 segundos.

Pero si lo pongo todo de una vez en un nuevo marco csv y luego lo vuelco en un archivo, entonces el tiempo de ejecución del código aumenta a 1 min. 44 seg.

...
new_frame = pd.DataFrame()

rows, cols = csv_framе.shape
for i in range(candles_in_train, rows):
    lst = list()
    for k in range(candles_in_train):
        m = i - candles_in_train + k
        l = list(csv_fraim.iloc[m])
        if m < i - 1:
            del l[-1]
        lst += l
    #mf.write_csv_data(flname, 'a', lst)
    r, c = new_frame.shape
    if r == 0:
        new_frame = pd.DataFrame([lst])
    else:
        new_frame.loc[r] = lst
new_frame.to_csv(flname, header=None, index=False)

¿Por qué?

 

¿problema de codificación? (Traductor de Google)


 

Hay una tabla (pandas DataFrame). ¿Cómo crear una nueva columna por condición: si la columna "1" < la columna "2" entonces escribe 145 en caso contrario escribe 874?


añadir:

En cualquier caso, resuelto por

import numpy as np
... np.where(
 
Buenas tardes, ¿se puede utilizar Python en MT5 para llegar a WinApi?

Concretamente quiero saber si funcionará...

keybd_event(VK_CONTROL,0,0,0);
 

¿Cómo se hace una compensación?

Esta es la tabla (Data Frame)

      time  
2020-11-25
2020-11-26
2020-11-27
2020-11-30 
2020-12-01        

Cómo hacerlo así:

      time             time_1
2020-11-25	   2020-11-26
2020-11-26         2020-11-27
2020-11-27         2020-11-30
2020-11-30         2020-12-01 
2020-12-01         ничего не писать