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

 
Renat Fatkhullin:

Desde la versión 5.0.15 la librería python funciona en un nuevo formato que no es compatible con el antiguo y requiere la última beta del terminal.

Pronto publicaremos documentación y ejemplos actualizados

¿Es posible descargar temporalmente la versión antigua de la biblioteca?

 
Dmitri Custurov:

¿Es posible descargar temporalmente una versión antigua de la biblioteca?

https://pypi.org/project/MetaTrader5/5.0.11/#files

MetaTrader5
MetaTrader5
  • 2020.01.24
  • pypi.org
Download the file for your platform. If you're not sure which to choose, learn more about installing packages. Files for MetaTrader5, version 5.0.11 Filename, size File type Python version Upload date Hashes MetaTrader5-5.0.11-cp36-cp36m-win32.whl (31.7 kB) MetaTrader5-5.0.11-cp36-cp36m-win_amd64.whl (43.3 kB...
 

No puedo resistirme a expresar una opinión sobre las integraciones. Estoy a favor con las dos manos. Python, redes neuronales, IA, extensiones del compilador, etc...

Pero hay un PERO.

Por muy chulo que sea el entorno de desarrollo, debe ser masivo, ¿no? ¿Y cómo puede ser masivo si su conjunto de herramientas son las primitivas habituales? NO - no los primitivos habituales, sino los PRIMITIVOS GENÉTICOS. PRIMITIVOS SUPERCOMPLEJOS.

Tomemos la clase CCanvas - es un conjunto de primitivas gráficas. ¿Podemos reunir un montón de ellos? Mucho. Pero, ¿cuánto cerebro y trabajo se necesita para ello? - MUCHO. Un mar de cerebros y trabajo para crear la COSA. ¿Cuántos son capaces de hacerlo? - Sólo unos pocos.

Una vez más, la pregunta principal: ¿cómo podrían popularizarse las herramientas del entorno de desarrollo, si APRIORI supone la presencia de habilidades de diseño poco comunes en un hombre? La disponibilidad masiva, en tal caso, está fuera de lugar.

Voy a parafrasear brevemente:

Si una persona está familiarizada con Python, C++, MQL5, Algotrading y tiene una extraordinaria capacidad de diseño, ¿qué diferencia le supone el entorno profesional para crear su COSA? Utilizará el MÍNIMO de funciones y producirá el MÁXIMO de resultados. Otros intentarán utilizar todo y no crearán nada, debido al umbral de complejidad del conjunto de herramientas.

Entonces, ¿en quién y en qué debe centrarse?

 

Versión inferior a la más baja disponible 5.0.10

444

Al parecer, habrá que esperar a las actualizaciones.

 

¡Saludos a todos!

¿Por qué me sale este error a pesar de que he seguido los ejemplos correctamente?

¡Saludos a todos!

¿Por qué me sale este error a pesar de que he seguido los ejemplos correctamente?


 
Renat Fatkhullin:
¿Está python habilitado en visual studio?

Debido al zoológico de pitones desplegados indirecta o automáticamente por diferentes sistemas, es fácil que se instalen librerías en otra copia de python y luego se intente ejecutar otras copias.

Ordena los pitones, por favor. Los que se pasen a python deben estar preparados para pasar el resto de su vida luchando con bibliotecas, dependencias e incompatibilidades.

Este es el destino de un pythonista: construir un entorno de bibliotecas y rezar para que alguna actualización de bibliotecas no estropee otro número desconocido de bibliotecas.

No hay ningún zoológico de Python. Hay un entorno. Puede haber más de un entorno. El usuario elige qué entorno utilizar.

El entorno de Python debe ser inicializado antes de ejecutar un script.

He considerado esto en mi biblioteca . Aquí está el código de la función de inicialización del entorno.

MetaTrader 5 (MQL5) + Python 3 DLL для Forex, CFD и Futures
  • roffild.com
Использование MetaTrader с Python 3 на финансовых фондовых биржах, Forex, CFD и Futures. Из MetaTrader можно получать котировки в Python, но нет полноценной связи между ними. Пост одного из разработчиков. Главная идея и отличие этой обертки от остальных: обмен данными между MQL и Python через заранее созданные функции. Это самый быстрый и...
 

¿Quizás sea el momento de abandonar el MetaEditor? ¿Por qué introducir diferentes tecnologías en tu IDE cuando puedes conseguir una completa y ya preparada?

Todo el mundo está creando un módulo para el IDE en estos días:

código de microsoft visual studio

jetbrains intellij idea

 
Roffild:

No hay ningún zoológico de Python. Existe el concepto de Medio Ambiente. En un ordenador puede haber varios entornos. Es el usuario quien debe elegir qué entorno utilizar.

El entorno de Python debe ser inicializado antes de ejecutar un script.

He considerado esto en mi biblioteca . Aquí está el código de la función de inicialización del entorno.

Apoyamos fácilmente los entornos. Mira la configuración del compilador en el editor, por favor.

Me refería al zoo en el sentido de que el terminal puede seleccionar un entorno (por ejemplo, la ruta por defecto), y las bibliotecas serán puestas manualmente por el usuario en otro entorno.


Mañana publicaremos una nueva beta del terminal y una nueva biblioteca de python. Todos los métodos y ejemplos antiguos están rotos porque hemos reescrito la api y la biblioteca desde cero.

El nuevo conjunto de api es amplio y permite gestionar completamente las operaciones y tiene acceso a las posiciones abiertas y al historial de operaciones.

Ahora puede escribir robots Metatrader completos directamente en Python.

 

Nueva versión de MetaTrader 5 para Python 5.0.18 y MetaTrader 5 build 2319 beta:

  • Descarga de la versión beta de MT5 a través de la Ayuda -> Comprobar la versión beta
  • biblioteca python:
    pip install --upgrade metatrader5
    

Como todas las api han cambiado, los antiguos ejemplos ya no funcionan.

Aquí está el nuevo conjunto de características:

initialize(path=None)                              Establish connection with the MetaTrader 5 Terminal
wait()                                             Wait for the MetaTrader 5 Terminal to connect to a broker's server
shutdown()                                         Disconnect from the MetaTrader 5 Terminal

version()                                          Get the MetaTrader 5 Terminal version
terminal_info()                                    Get the parameters of the MetaTrader 5 terminal
account_info()                                     Returns information of current account

copy_ticks_from(symbol, from, count, flags)                Get ticks starting from the specific date
copy_ticks_range(symbol, from, to, flags)                  Get ticks from the specified period
copy_rates_from(symbol, timeframe, from, count)            Get bars starting from the specific date
copy_rates_from_pos(symbol, timeframe, start_pos, count)   Get bars starting from the specified position
copy_rates_range(symbol, timeframe, date_from, date_to)    Get bars from the specified period

positions_total()                                          Returns the number of open positions
positions_get([symbol=\"SYMBOL\"],[ticket=TICKET])         Returns all open positions, can be filtered by symbol or ticket

orders_total()                                             Returns the number of orders
orders_get([symbol=\"SYMBOL\"],[ticket=TICKET])            Returns all orders, can be filtered by symbol or ticket

history_orders_total(from, to)                             Returns the number of orders in selected range from the history
history_orders_get(from, to)                               Returns orders in selected range from the history or filtered by position id, ticket

history_deals_total(from, to)                              Returns the number of deals in selected range from the history
history_deals_get(from, to)                                Returns deals in selected range from the history or filtered by position id, ticket

order_check(request)                                                Checks if there are enough funds to execute the required trade operation
order_send(request)                                                 Sends trade requests to a server
order_calc_margin(action, symbol, volume, price)                    Calculates the margin required for the specified order
order_calc_profit(action, symbol, volume, price_open, price_close)  Calculates the profit for the current account, in the current market conditions, based on the parameters passed

symbol_info(symbol)                                        Returns full information for a specified symbol
symbol_info_tick(symbol)                                   Returns current prices of a specified symbol
symbol_select(symbol,[enable])                             Selects a symbol in the Market Watch window or removes a symbol from the window

Ejemplo:

import MetaTrader5 as mt5
import time

mt5.initialize()
mt5.wait()

dev = 0.00010;
symbol = "EURUSD"
buy_price = 0

mt5.symbol_select(symbol)

time.sleep(1)
p = mt5.symbol_info_tick(symbol)
prev_price = p.ask

while True:
    p = mt5.symbol_info_tick(symbol)
    print(p.bid,'/',p.ask)
    
    if p.ask > prev_price and buy_price == 0:
            print("Buy ", p.ask)
            r = mt5.Buy(symbol, 0.01)
            if r.retcode == mt5.TRADE_RETCODE_DONE:
                buy_price = p.ask;
    elif buy_price > 0 and p.ask + dev < buy_price:
        print("Buy(close) ", p.bid)
        mt5.Close(symbol)
        buy_price = 0

    prev_price = p.ask
    time.sleep(1)

mt5.shutdown()
 
Renat Fatkhullin:

Nueva versión de MetaTrader 5 para Python 5.0.18 y MetaTrader 5 build 2319 beta:

  • Descarga de la versión beta de MT5 a través de la Ayuda -> Comprobar la versión beta
  • biblioteca python:

Como todas las api han cambiado, los ejemplos antiguos ya no funcionan.

Todo está cambiando de forma dinámica.

No quiero verme envuelto en este lío.

Probablemente merezca la pena esperar a la implementación deWinML con ONNX. Y antes de eso profundizar en la teoría del ML. Afortunadamente, ahora hay mucha literatura disponible y varios cursos.

Razón de la queja: