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

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

¿Han cambiado también las constantes?

En la salida:

sí las constantes tienen el prefijo MT5_ eliminado, aquí hay un ejemplo de uso:

from datetime import datetime
import MetaTrader5 as mt5

mt5.initialize()
mt5.wait()

print(mt5.terminal_info())
print(mt5.version())

ticks1 = mt5.copy_ticks_from("EURAUD", datetime(2020,1,28,13), 10000, mt5.COPY_TICKS_ALL)
ticks2 = mt5.copy_ticks_range("AUDUSD", datetime(2020,1,27,13), datetime(2020,1,28,13,1), mt5.COPY_TICKS_ALL)

rates1 = mt5.copy_rates_from("EURUSD", mt5.TIMEFRAME_M1, datetime(2020,1,28,13), 1000)
rates2 = mt5.copy_rates_from_pos("EURGBP", mt5.TIMEFRAME_M1, 0, 1000)
rates3 = mt5.copy_rates_range("EURCAD", mt5.TIMEFRAME_M1, datetime(2020,1,27,13), datetime(2020,1,28,13))

mt5.shutdown()

print('ticks1(', len(ticks1), ')')
print('ticks2(', len(ticks2), ')')
print('rates1(', len(rates1), ')')
print('rates2(', len(rates2), ')')
print('rates3(', len(rates3), ')')

import matplotlib.pyplot as plt

plt.plot(rates2['time'], rates2['low'], 'g-')
plt.plot(rates2['time'], rates2['high'], 'r-')

plt.show()

ejemplo más complejo - Asesor Experto con el comercio en dos medias móviles sin utilizar la historia:

import MetaTrader5 as mt5
import time

mt5.initialize()
mt5.wait()

info = mt5.terminal_info()
if info.trade_allowed == False:
    print("Auto-trading disabled in Terminal, enable it")
    quit()

symbol = "EURUSD" #  currency
lot = 0.01;       #  buy lot
interval = 5      #  price requesting interval in sec
long_len = 11     # long moving average length
short_len = 7     # short moving average length
long_ma = []      # long ma list
short_ma = []     # short ma list
ticket = 0        #  ticket for sell

mt5.symbol_select(symbol)

#  wait some time
time.sleep(1)

print("\nPreparing...")
for i in range(long_len):
    p = mt5.symbol_info_tick(symbol)
    print(p.bid,'/',p.ask)
    avg = (p.ask + p.bid) / 2

    long_ma.append(avg)
    if i >= long_len - short_len:
        short_ma.append(avg)
    time.sleep(interval)

print("\nWorking...")
while True:
    p = mt5.symbol_info_tick(symbol)
    print(p.bid,'/',p.ask)
    avg = (p.ask + p.bid) / 2
    
    # short values
    prev_short = sum(short_ma) / short_len
    short_ma.pop(0)
    short_ma.append(avg)
    short = sum(short_ma) / short_len
    
    # long values
    prev_long = sum(long_ma) / long_len
    long_ma.pop(0)
    long_ma.append(avg)
    long = sum(long_ma) / long_len

    #  buy signal
    if prev_short < prev_long and short > long:
        print("BUY: ([-1]:",prev_short,"/",prev_long,", [0]:",short,"/",long,")")
        r = mt5.Buy(symbol, lot)
        if r.retcode != mt5.TRADE_RETCODE_DONE:
            print("Buy failed: ", r)
        else:
            ticket = r.order
    elif prev_short > prev_long and short < long and ticket>0:
        print("CLOSE: ([-1]:",prev_short,"/",prev_long,", [0]:",short,"/",long,")")
        r = mt5.Sell(symbol, lot, ticket=ticket)
        if r.retcode != mt5.TRADE_RETCODE_DONE:
            print("Sell failed: ", r)
        else:
            ticket = 0
           
    time.sleep(interval)

mt5.shutdown()
 
Almaz:

Sí, las constantes tienen el prefijo MT5_ eliminado, aquí hay un ejemplo de uso:

Un ejemplo más complejo es el de un EA con operaciones sobre dos medias móviles sin utilizar el historial:

Gracias.

La evolución de la lib es buena. Pregunta a los desarrolladores: ¿dónde está la hoja de ruta de la librería pinova?

¿Qué innovaciones podemos esperar todavía, qué no debemos esperar?

 
Me gustaría una actualización de la documentación, sí
 

En el servidor de pruebas (servidor MetaQuotes-Beta, dirección 78.140.180.203:443) está disponible una versión beta del terminal 2323 con nuevas características. La beta pública se lanzará mañana.

También hemos lanzado la nueva versión de MetaTrader 5.0.20 para Python (pip install --upgrade metatrader5) con una nueva sintaxis para el cambio de cuenta:

import MetaTrader5 as mt5

mt5.initialize(timeout=10000)
mt5.initialize(login=25035662, password="oxeb7lpb", server="MetaQuotes-Demo")
mt5.login(25035662)
mt5.login(25035662, timeout=10000)
mt5.login(25035662, "oxeb7lpb")
mt5.login(25035662, password="oxeb7lpb")
mt5.login(25035662, password="oxeb7lpb", server="MetaQuotes-Demo")

Ahora es posible especificar la autorización directamente en la inicialización, tanto de forma completa como abreviada.

Se suprime la función de espera y ahora el ciclo completo de inicialización con espera se realiza directamente en inicializar, donde se puede especificar el tiempo de espera en milisegundos.

Ahora se garantiza que la biblioteca de Python encuentre la última copia activa del terminal, incluso si se ha instalado en modo portátil (tecla /portable).


Los programas de Python ya se muestran directamente en el navegador:


La versión de este viernes permitirá ejecutarlos como scripts MQL5 habituales y estarán vinculados a los gráficos.


Más adelante añadiremos el acceso a todos los indicadores (incluidos los personalizados) en modo de lectura a la biblioteca de Python. Esto hará que el trabajo en python sea más productivo. Pero esto no es una prioridad todavía, lo haremos mucho más tarde.

 
Renat Fatkhullin:

También se ha lanzado una nueva versión de MetaTrader 5.0.20 para Python (pip install --upgrade metatrader5) con una nueva sintaxis para el cambio de cuenta

Hay más funciones que MQL5.

 

Paralelamente, estamos ampliando las capacidades del editor y en la próxima versión (que no llegará este viernes) será totalmente posible utilizar Clang/LLVM y Microsoft Visual Studio para compilar programas C++:


Tal vez incluyamos también C#.


Amplio trabajo para utilizar plenamente las bases de datos SQLite: SQLite: trabajo nativo con bases de datos SQL en MQL5

Esto le permite operar e intercambiar fácilmente grandes cantidades de datos entre diferentes sistemas y dentro del terminal.

 
fxsaber:

Más funciones que MQL5.

¿Lo estamos consiguiendo?

 
Renat Fatkhullin:

Paralelamente, estamos ampliando las capacidades del editor y en la próxima versión (que no llegará este viernes)
será totalmente capaz de utilizar Clang/LLVM y Microsoft Visual Studio para compilar programas C++:

¿Se añadirá un enlazador para enlazar archivos .lib en los proyectos de
?

 
Roman:

Para enlazar los archivos .lib en los proyectos
¿se añadirá un enlazador?

Se pueden especificar múltiples variantes de destino dentro de los proyectos:



Los archivos DLL/EXE tienen definiciones personalizadas, bibliotecas y parámetros adicionales para el compilador:

El enlazador se utiliza automáticamente desde Clang o Visual Studio. No es necesario especificarlo explícitamente.

 
fxsaber:

Hay más funciones que MQL5.

Por ello, la plataforma MetaTrader 5 tiene más funciones.

Por sí mismo, cualquier lenguaje es inútil sin una plataforma de información y negociación (una plataforma no es un terminal, sino todo un complejo de servidores con una infraestructura y un ecosistema) que lo alimente con datos y proporcione la ejecución de las operaciones.

Nuestro objetivo es presentar una plataforma sin fisuras con un amplio conjunto de herramientas para el algotrading, que cubra diferentes segmentos de consumidores.

Python es un claro ganador en ML y un lenguaje muy eficaz para hacer investigación. Aunque no se puede meter en un probador, también es bueno en modo de integración directa.


Por cierto, a diferencia de otras librerías de Python (a menudo escritas de frente y mal optimizadas), nosotros hemos optimizado fuertemente el rendimiento de los datos masivos de los gráficos. Esto significa que puede obtener un historial profundo de manera eficiente y rápida en la memoria.