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

 
Rashid Umarov:

Compruebe si su tipo de cuenta es de compensación o de cobertura. Para la compensación, el ticket de una posición ya existente no cambiará, y no tiene sentido buscar una posición después de la acción por número de orden.

Sí, todo claro, mirado sí, en caso de abrir una posición en un ticket de red, corresponde a la posición que se abre. La cuestión está clara.

 
Almaz:
código de error 1, esto es éxito mt5.RES_S_OK, la siguiente construcción escribirá [1, 'Success']. Los códigos con valores negativos son errores mt5.RES_E_xxx.

Sí, gracias - el punto es claro en cuanto a por qué la línea en blanco estaba allí.

 
Hola, ¿hay alguna actualización en el post #517 sobre la obtención de una actualización del terminal sobre newbar?
 
fbrand:
Hola, ¿hay alguna actualización en el post #517 sobre la obtención de una actualización del terminal sobre newbar?

Hasta ahora he tenido que hacer un ciclo con la comprobación del tiempo:

if mt5.symbol_info_tick(symbol).time % (60 * timefr) == 0:
...

No es muy conveniente. Pero como opción temporal está bien.

 
Vladimir Perervenko:

Hasta ahora he tenido que hacer un ciclo con la comprobación del tiempo:

No es muy conveniente. Pero como opción temporal está bien.

No está previsto. Compruebe si hay nuevas barras en un temporizador o en un bucle.

 
Rashid Umarov :

No está previsto. Compruebe si hay nuevas barras en un temporizador o en un bucle.


Si se utiliza según Vladimir, no obtendremos entonces el volumen exacto, sino sólo el volumen de ese tick en el sondeo?


Y si luego utiliza las nuevas barras en EA para llamar al script de Python, y el script apunta a más de un símbolo, ¿se ejecutan todas las nuevas barras para todos los símbolos en la terminal al mismo tiempo, o debo crear un script de Python y un asesor para cada símbolo?


Gracias

ps: lo siento, he tenido que pasar al inglés porque el traductor se ha equivocado con las palabras
Обработчик события "новый бар"
Обработчик события "новый бар"
  • www.mql5.com
Для создателей индикаторов и экспертов всегда был актуален вопрос написания экономичного кода с точки зрения времени выполнения. Можно подойти к решению этой задачи с разных сторон. Из этой обширной темы в данной статье будет затронут, казалось бы уже решенный вопрос: проверка появления нового бара. Это достаточно популярный способ ограничения...
 

Usandohistory_orders_get().

En la documentación, se copia y se pega explícitamente :)(https://www.mql5.com/ru/docs/integration/python_metatrader5/mt5historyordersget_py)

Y hay una rareza en el uso:

    from_date = datetime(2020,1,1)
    to_date = datetime.now()
    if mt5.initialize(acc['path'], login=login, server=acc['server'], password=acc['pass']):
        orders = mt5.history_orders_get(from_date, to_date)    
        if len(orders) > 0:
            orders_frame = pd.DataFrame(orders)
            print(orders_frame.head())

Resultado:

 python.exe .\history-deal-mt-1.py
         0           1              2           3              4  5  6  7  8  9      10       11  12  13    14   15       16      17      18       19   20      21             22 23
0  4308935  1583603265  1583603265527  1583603267  1583603267535  0  0  0  0  4  234000  4308935   0   3  0.01  0.0     0.00     0.0     0.0  9128.00  0.0  BTCUSD  python script
1  4308936  1583603511  1583603511561  1583603511  1583603511561  0  1  0  1  4  234000  4308935   0   5  0.01  0.0  9128.01     0.0     0.0  9128.01  0.0  BTCUSD  [tp 9128.010]
2  4308937  1583603550  1583603550455  1583603552  1583603552460  0  1  0  0  4       0  4308937   0   0  0.01  0.0     0.00     0.0     0.0  9127.50  0.0  BTCUSD
3  4308938  1583603969  1583603969250  1583603971  1583603971253  0  0  0  0  4  234000  4308938   0   3  0.01  0.0     0.00  9135.5  9142.5  9139.00  0.0  BTCUSD  python script
4  4308939  1583603974  1583603974183  1583603974  1583603974188  0  1  0  1  4  234000  4308938   0   4  0.01  0.0  9135.50     0.0     0.0  9135.50  0.0  BTCUSD  [sl 9135.500]

Total, los datos se muestran, pero dónde, qué - uno sólo puede adivinar.

Amigos, por favor, añadan algo como _fields o as_dict() o __dict__ a TradeOrder (y similares).

    Point = collections.namedtuple('Point', ['x', 'y', 'val'])    
    print(Point._fields)
python.exe .\history-deal-mt-1.py
('x', 'y', 'val')

Realmente, no es conveniente ahora.

 
Дмитрий Прокопьев:

Utilizandohistory_orders_get().

En la documentación, se copia y se pega explícitamente :)(https://www.mql5.com/ru/docs/integration/python_metatrader5/mt5historyordersget_py)

Actualizar la ayuda o ir al enlace

 
Rashid Umarov:

No hay planes. Compruebe las nuevas barras en un temporizador o en un bucle.

¿Puede ser más específico sobre el temporizador?

 
Дмитрий Прокопьев:

Amigos, por favor, añadan algo como _fields o as_dict() o __dict__ a TradeOrder (y similares).

Realmente, no es conveniente ahora.

En la 5.0.27 ya lo es, toda la estructura secuencia (análoga a la tupla con nombre para la API de C) añadió el método _asdict()

sym = mt5.symbol_info("EURUSD")._asdict()
for i in sym:
   print(i, '=', sym[i])