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

 
Almaz:

En la versión 5.0.29 se ha añadido symbols_total(), symbols_get([group="EURUSD, "USDGBP", *RU*"), requiere la última versión beta del terminal para funcionar.

También en todas las funciones orders_get(), positions_get(), history_orders_get(), history_deals_get() se ha añadido el filtrado por grupo - group="EURUSD, "USDGBP", *RU*".
Los métodos order_check(), order_send() devolverán la solicitud inicial de ejecución en el campo request.

Gracias.

 
Roman:

¿Qué quiere decir exactamente? ¿Copiar un array de mql5 a py y viceversa?
Al menos deberías leer con atención lo que estamos hablando.
Y lo que es necesario o no, no debes pensarlo sólo para ti. Si tú no lo necesitas, otros lo hacen.

Sólo por interés, ¿qué conjuntos de datos quiere transferir desde MT?

Los desarrolladores ya han dicho varias veces que no van a transferir nada a MT. Para ello hay que utilizar otras funciones.

 
Vladimir Perervenko:

Sólo por interés, ¿qué conjuntos de datos quiere transferir desde MT?

Los desarrolladores ya han dicho varias veces que no van a transferir nada a MT. Para ello hay que utilizar otras funciones.

Sí cualquiera, sus propias matrices calculadas.
Yo construyo exclusivamente sintéticos, y la capacidad de transferir matrices en ambos sentidos es una gran carencia.
Está claro que se puede usar PyAPI, pero de nuevo se vincula a la dll.
Y usando PyAPI, entonces no hay necesidad de esta biblioteca de integración en absoluto.

 
Roman:

Sí, cualquiera, sus propias matrices calculadas.
Yo construyo exclusivamente sintéticos, y la capacidad de transferir matrices en ambas direcciones es una gran carencia.
Está claro que se puede usar PyAPI, pero de nuevo se vincula a una dll.
Y usando PyAPI, entonces no hay necesidad de esta biblioteca de integración en absoluto.

No creas que quiero dar lecciones. Se calculan los sintéticos a partir de las cotizaciones de la terminal. Volcar las comillas en Python y hacer todos los cálculos en Python.

Pero tendrás que hacer gimnasia con la transferencia inversa de arrays. La forma más fácil es a través de la base de datos.

O usa esto. En algún lugar había un pequeño hilo con este proyecto. O esto.

En cualquier caso, esta integración no resolverá todos los deseos de los comerciantes. Pero resuelve dos problemas principales y los más importantes: la obtención de cotizaciones rápidas y la gestión comercial.

Todo el resto por su cuenta con su propia infraestructura.

Buena suerte

khramkov/MQL5-JSON-API
khramkov/MQL5-JSON-API
  • khramkov
  • github.com
<a href="#metaquotes-mql5
 
Vladimir Perervenko:

No creas que quiero dar lecciones. Se calculan los sintéticos a partir de las cotizaciones de la terminal. Volcar las comillas en Python y hacer todos los cálculos en Python.

Pero tendrás que hacer gimnasia con la transferencia inversa de arrays. La forma más fácil es a través de la base de datos.

O usa esto. En algún lugar había un pequeño hilo con este proyecto. O esto.

En cualquier caso, esta integración no resolverá todos los deseos de los comerciantes. Pero resuelve dos problemas básicos y muy importantes: cotizaciones rápidas y gestión comercial.

Todo el resto por su cuenta con su propia infraestructura.

Buena suerte

A esto me refiero, no importa la implementación, vía dll o base de datos, sockets o incluso archivos de texto, etc.
Pero, de nuevo, se trata de una muleta adicional no relacionada con la biblioteca.
La cuestión es que ahora estamos desarrollando activamente la integración de la biblioteca mt5, por lo que es deseable proporcionar todas las características necesarias para los usuarios en ella desde el principio.

 
Dmitry Prokopyev:

Gracias, este ejemplo que vi, funciona.

Estoy un poco sobre otra cosa.


positions_get - se me devolverá la lista de TradePosition. En principio, se puede echar a los pandas y funcionar bien.

Pero no todo se limita a una pandas, y si necesitas conseguir algo como:

tienes que componer de alguna manera, pandas o para... de alguna manera un montón de movimientos corporales adicionales.

Se ha vuelto mucho más conveniente con _asdict (), si el que escribe no es un prog de MQL5, sino digamos un pythonista ... o un datasynetist, entonces la lista / dict es

Los elementos básicos de python, muchos están construyendo una transferencia de datos en la lista / dict.

Las tuplas se utilizan mucho y muy a menudo, pero sólo si se necesita un control estricto de los tipos de datos que se mueven en ellas.

y también cuelga un manejador de errores, si no se usa o se asigna correctamente. Bueno, en algún lugar ... :) Podría estar equivocado.

En su lugar, podrías utilizar una simple comprensión de la lista al asignar tu variable.

positions = [p._asdict() for p in mt5.positions_get()]
 
nicholi shen:

En su lugar, podrías utilizar una simple comprensión de la lista al asignar tu variable.

esto no cambia la esencia ... este es un ciclo adicional

 

Señores, los chicos del siguiente hilo están haciendo preguntas sobre los liberales:

URL:https://www.mql5.com/en/forum/306742/page11#comment_15595095

¿Puede darnos un poco de apoyo?


La función symbols_get debe devolver un generador de tuplas SymbolInfo. Una llamada a symbols_get sin argumentos debería devolver todos los símbolos disponibles en el terminal. La función debería tomar una llamada de retorno que se pasaría en un SymbolInfo namedtuple para ser procesado usando la función de filtro. He aquí algunos ejemplos.

import MetaTrader5 as mt5
from contextlib import contextmanager
import re


@contextmanager
def metatrader_connection(**kw):
    try:
        if not mt5.initialize(**kw):
            print("Failed to initialize python MT5")
            raise Exception
        yield
    finally:
        mt5.shutdown()


def symbols_get(function=None):
    """
    No function passed in will result in all symbols returned to the caller.
    If a callable function is passed in then the function is passed a SymbolInfo tuple for filtering
    :param function: callback function to filter the symbols
    """
    all_symbols_in_terminal_info = map(
        mt5.symbol_info,
        ['EURUSD', 'USDJPY', 'GBPJPY', 'EURGBP'] # *example only* this would represent all symbols available to the terminal
    )
    if function is not None:
        return filter(function, all_symbols_in_terminal_info)
    return all_symbols_in_terminal_info


if __name__ == "__main__":
    with metatrader_connection():
        all_terminal_symbols = symbols_get()
        jpy_symbols = symbols_get(lambda s: "JPY" in s.name)
        jpy_symbols_using_re = symbols_get(lambda s: re.match(r'\w*JPY\w*', s.name))
        visible_symbols = symbols_get(lambda s: s.visible)
        selected_symbols = symbols_get(lambda s: s.select)


        def my_criteria(symbol_info):
            return 'USD' in symbol_info.name and symbol_info.session_deals > 0


        usd_symbols_with_session_deals = symbols_get(my_criteria)
 

Buenas noches, ¿podríais aconsejarme, entiendo que este conector no es capaz de tomar información de los indicadores conectados?

Ejemplo:

int  iMA(
   string              symbol,        // имя символа
   ENUM_TIMEFRAMES      period,        // период
   int                 ma_period,    // период усреднения
   int                 ma_shift,     // смещение индикатора по горизонтали
   ENUM_MA_METHOD       ma_method,    // тип сглаживания
   ENUM_APPLIED_PRICE   applied_price  // тип цены или handle
   );
 
9805244:

Buenas noches, ¿podríais aconsejarme, entiendo que este conector no es capaz de tomar información de los indicadores conectados?

Ejemplo:

¿Para qué lo necesitas? ¿No se puede calcular en Python? Me sorprendes.