Integración de las API de los brókers con los Asesores Expertos usando MQL5 y Python
Introducción
Hoy exploraremos cómo establecer una conexión perfecta entre nuestros asesores expertos de MetaTrader 5 y los brókers externos mediante la integración de API. El objetivo principal es abordar el problema de la insuficiencia de fondos en las cuentas de negociación, permitiendo recargas automáticas cuando los saldos caen por debajo de un umbral establecido. Este enfoque aborda de manera eficaz cuestiones críticas relacionadas con la gestión de fondos, mejorando tanto la eficiencia como la seguridad en las operaciones de negociación.
Por lo general, seguimos una rutina que consiste en iniciar sesión en el portal de nuestra cuenta de corredor para realizar diversas transacciones y operaciones. Aunque este es el enfoque tradicional, existe una potente función llamada API (Application Programming Interface) que nos permite hacer mucho más y optimizar nuestro enfoque. Para algunos de ustedes, este término puede resultarles familiar. Sin embargo, para los demás, lo desglosaré en secciones fáciles de entender para asegurarme de que todos estén en sintonía:
- ¿Qué es una API?
- Uso de las API
- Acceso a las API
- Documentación de la API
Exploremos estos aspectos en detalle:
1. ¿Qué es una API?
Una API (Application Programming Interface) permite interacciones externas con un sistema de software. En este contexto, nos brinda la posibilidad de realizar operaciones en nuestras cuentas de corredores directamente en el servidor, sin necesidad de iniciar sesión manualmente.
Curiosamente, las API existen desde la década de 1940, pero cobraron impulso en la década de 1970 y se generalizaron después del año 2000.
2. Uso de las API
Las API facilitan la comunicación entre aplicaciones de software y sistemas. Estas son algunas de las áreas de aplicación más comunes:
- Servidores web
- Aplicaciones móviles
Las API permiten un acceso fluido a los datos desde diversas fuentes, tales como:
- Plataformas de redes sociales
- Almacenamiento en la nube
- Pasarelas de pago
- Estaciones meteorológicas
- Acciones y mercados financieros

API como puente entre ordenadores externos y servidores en la nube.
3. Acceso a las API
Para utilizar una API, normalmente es necesario:
- Obtenga una clave API del proveedor.
- Estudia la documentación de la API para integrarla correctamente.
- Incluya la clave API como parámetro en sus solicitudes de autenticación y autorización.
4. Documentación de la API
Cada API viene con su propia guía de usuario y especificaciones. Aquí se explica cómo interactuar con la API de manera eficaz. Por ejemplo, la documentación de la API de Telegram difiere significativamente de la de la API de un bróker, como la API de Deriv Broker.
Al comprender y utilizar las API, podemos optimizar nuestras operaciones, automatizar procesos y mejorar la eficiencia en la gestión de nuestras cuentas de corredores. Profundicemos en cada aspecto y exploremos su aplicación práctica.
A continuación se incluye una lista de las secciones principales de nuestro debate:
- Resumen de este debate
- API de Deriv (bróker)
- Biblioteca Python para comunicaciones API Web Socket
- Script Python para establecer la comunicación entre MetaTrader 5 y la API del bróker
- Funds Manager EA
- Pruebas de demostración y resultados
- Conclusión
Resumen de este debate
En este artículo, exploraremos el uso de MQL5 con la API de un bróker para facilitar operaciones fluidas en la gestión de fondos. Nuestro objetivo es descubrir el enorme potencial que ofrecen los asesores expertos en MQL5. Dado que MQL5 por sí solo no puede interactuar directamente con servidores web, utilizaremos bibliotecas de lenguajes externos, como Python o Node.js, dependiendo de las capacidades de la API del bróker. Para este debate, nos centraremos en Deriv.com como nuestro bróker elegido.
Ventajas de este enfoque
- Transferencias automáticas de fondos: El EA automatizará la transferencia de las ganancias obtenidas en la cuenta de operaciones a una cuenta segura.
- Recarga de la cuenta de operaciones: Recargará el saldo de la cuenta de operaciones si el capital cae por debajo de un umbral predefinido.
- Operaciones continuas: Al alojar el EA en un servidor virtual, el sistema puede funcionar las 24 horas del día, los 7 días de la semana, con capacidades de gestión de fondos prácticamente ilimitadas.
Retos y consideraciones
- Riesgo de agotamiento de los fondos: Los fondos reservados pueden agotarse si el EA continúa recargándose sin generar beneficios constantes.
- Necesidad de una gestión sólida de los fondos: Debe implementarse un sistema sofisticado de gestión de fondos para detener las operaciones si se superan determinados umbrales de pérdidas o capital.
En las siguientes secciones, profundizaremos en las características de la API del bróker Deriv, desarrollaremos código Python para permitir una interacción fluida con la API e integraremos esta solución con un EA MQL5 diseñado para una gestión de fondos eficiente y fiable, todo ello presentado en instrucciones sencillas y paso a paso para facilitar su comprensión y aplicación.

Flujo bidireccional entre MQL5 y el bróker
API de Deriv (bróker)
Deriv.com es un popular bróker que admite MetaTrader 5 y ofrece acceso a la API para operaciones automatizadas. Puede encontrar información detallada en la documentación de la API de Deriv. Para empezar, sigue los pasos que se indican en su sitio web para registrarte y obtener acceso a la API.
Con fines educativos, deberá crear una aplicación en el Panel de control de la API de Deriv. Durante este proceso, seleccione una cuenta de demostración y genere un token de API con el nivel de acceso adecuado. Para esta presentación, recomiendo elegir el nivel de acceso Trade API, ya que permite realizar operaciones como recargar los fondos de su cuenta demo. Evita seleccionar el nivel de acceso de administrador a menos que estés seguro de que puedes gestionarlo de forma segura, ya que este nivel otorga control total sobre tu cuenta. Mantenga siempre su token API privado y seguro para evitar el acceso no autorizado.
Una vez creado el token API, los siguientes pasos consisten en configurar un cliente WebSocket de Python e integrarlo con MQL5 para desarrollar un programa capaz de gestionar las operaciones de la cuenta.
Operaciones clave
Las funciones principales que pretendemos alcanzar con nuestro programa son:
- Depositar fondos desde su cuenta Deriv a su cuenta Deriv en MetaTrader 5.
- Interconexión con la API de Deriv para una gestión fluida de los fondos.
La documentación de la API de Deriv proporciona instrucciones detalladas para realizar estas operaciones en la sección API de MetaTrader 5. Como parte de este proceso, obtendrá dos valores críticos:
- ID de la aplicación: Identifica su aplicación en la plataforma Deriv.
- Token API: Concede acceso para realizar las acciones especificadas.
Con estos valores, podemos proceder a desarrollar el cliente WebSocket de Python e integrarlo con MQL5 para implementar nuestro sistema de gestión de fondos.
Usted y la seguridad de su API
La seguridad es un tema fundamental que no se puede pasar por alto. Del mismo modo que proteges tu teléfono contra el acceso no autorizado, es igualmente esencial proteger tus claves API de otras personas. Del mismo modo que proteges tu teléfono contra el acceso no autorizado, es igualmente esencial proteger tus claves API de otras personas. Podrían explotar su cuenta y llevar a cabo acciones no autorizadas sin su conocimiento.
En el contexto de Deriv, la plataforma proporciona niveles de acceso a tokens API, lo que le permite elegir los permisos que se otorgan al token. Se recomienda encarecidamente utilizar las funciones de acceso de demostración y evitar seleccionar el acceso de administrador a menos que sea absolutamente necesario. El nivel de acceso de administrador otorga control total sobre tu cuenta, lo que supone un riesgo significativo si cae en manos equivocadas.
Este consejo no se limita a Deriv, sino que se aplica a los tokens API de cualquier servicio. Trata siempre las claves API como contraseñas: mantén su confidencialidad, guárdalas en un lugar seguro y nunca las compartas con personas en las que no confíes. Al hacerlo, minimizas el riesgo de acceso no autorizado y garantizas que tu cuenta permanezca protegida.
Biblioteca Python para comunicaciones API Web Socket
En primer lugar, necesitamos tener Python instalado en nuestro ordenador para poder continuar con este proyecto. A continuación, debemos instalar la biblioteca Python WebSocket para habilitar la comunicación web con la API del bróker. La API Deriv utiliza WebSocket para la comunicación de alta velocidad, por lo que es esencial configurar nuestros ordenadores en consecuencia. A continuación se muestra el comando para instalar la biblioteca Python en Windows utilizando el símbolo del sistema.
pip install websocket-client
Para instalar la biblioteca, abra el Símbolo del sistema en Windows e introduzca el comando anterior. Una vez completada la instalación, estará listo para comenzar a ejecutar y probar. Sin embargo, antes de continuar, daremos los siguientes pasos para desarrollar el script de Python que gestionará la comunicación entre MetaTrader 5 y la API del bróker (la API de Deriv como ejemplo).
Script Python para establecer la comunicación entre MetaTrader 5 y la API del bróker
1. Configuración inicial y configuración
import json import websocket import time import os # Configuration API_URL = "wss://ws.binaryws.com/websockets/v3?app_id= Your app ID" #Replace with your App ID created in Deriv API dashboard API_TOKEN = "Your API token" #Replace with your actual token # File paths (Replace YourComputerName with the actual name of your computer) MQL5_TO_PYTHON = "C:/Users/YourComputerName/AppData/Roaming/MetaQuotes/Terminal/Common/Files/mql5_to_python.txt" PYTHON_TO_MQL5 = "C:/Users/YourComputerName/AppData/Roaming/MetaQuotes/Terminal/Common/Files/python_to_mql5.txt"
- A continuación, definimos nuestra URL y token de API, ya que son las claves necesarias para autorizar nuestra conexión WebSocket con el servidor Deriv. Esta URL apunta al punto final WebSocket, y el token de la API es lo que prueba nuestra identidad ante el servidor.
- Por último, especificamos las rutas de los archivos para interactuar con MQL5. Estos archivos actuarán como puente entre nuestro script Python y MQL5, permitiendo el intercambio de comandos y respuestas. Debemos tener cuidado al elegir rutas que sepamos que son accesibles para ambos sistemas (MQL5 y Python).
2. Conexión WebSocket
En esta sección del código de nuestro script establecemos una conexión segura con la API WebSocket de Deriv y autorizamos al script para que realice solicitudes.
def connect_to_deriv(): """Connects to Deriv's WebSocket API.""" try: ws.connect(API_URL) ws.send(json.dumps({"authorize": API_TOKEN})) response = json.loads(ws.recv()) print(f"Authorization Response: {response}") if response.get("error"): print("Authorization failed:", response["error"]["message"]) return False return True except Exception as e: print(f"Error during authorization: {e}") return False
- Definimos una función para gestionar la conexión WebSocket. Primero, intentamos conectarnos a la API utilizando la URL que hemos configurado anteriormente. Iniciamos la conexión con ws.connect(API_URL) y, a continuación, enviamos el mensaje de autorización que contiene nuestro token API. Esto es necesario para autenticar nuestro script con el servidor Deriv.
- Inmediatamente, el script espera una respuesta del servidor. El servidor devolverá un objeto JSON que confirma si la conexión se ha realizado correctamente. Si contiene un error, significa que el token no era válido o que se produjo otro problema. Este manejo de errores es esencial para garantizar que el script falle correctamente.
- Nuestra decisión de utilizar bloques try-except garantiza que el script no se bloquee si surge algún problema con la conexión o el intercambio de mensajes. Es una medida de seguridad que proporciona flexibilidad al programa para depurar y gestionar problemas sin interrumpir todo el proceso.
3. Procesamiento de comandos
- En la función process_command , el script intenta primero analizar el comando en un diccionario Python. Esto le permite acceder fácilmente a diferentes campos del comando (como el importe del depósito). A continuación, comprueba si hay claves específicas en el JSON analizado (como «mt5_deposit»), que indican qué tipo de acción solicita MQL5 que se realice.
- Si el comando solicita un depósito («mt5_deposit»), se llama a una función independiente mt5_deposit para gestionarlo. Este enfoque modular hace que el script sea flexible y fácil de mantener, ya que podemos añadir fácilmente otros tipos de comandos en el futuro.
- Si el comando es desconocido o está mal formateado, devuelve un mensaje de error, lo que ayuda al sistema MQL5 a comprender qué ha fallado.
def process_command(command): """Processes a command from MQL5.""" try: command_data = json.loads(command) # Parse the JSON command if "mt5_deposit" in command_data: return mt5_deposit( command_data["amount"], command_data["from_binary"], command_data["to_mt5"] ) else: return {"error": "Unknown command"} except json.JSONDecodeError: return {"error": "Invalid command format"} except Exception as e: return {"error": f"Unexpected error: {e}"}
4. Operación de depósito
- Dentro de esta función, se crea un mensaje JSON que indica a Deriv que ejecute un depósito. Este mensaje incluye todos los detalles necesarios, como el importe, la cuenta de origen y la cuenta MT5 de destino. Enviar los datos correctos en el formato adecuado es fundamental para garantizar que la transacción se procese correctamente.
- Después de enviar la solicitud de depósito, espera una respuesta del servidor. Una vez recibida la respuesta, se analiza en JSON y se devuelve. Esto permite al sistema MQL5 saber si la operación se ha realizado correctamente o ha fallado.
- Las excepciones se gestionan en caso de que se produzca un error en la comunicación o en la operación de depósito, lo que garantiza que los errores se detecten y se notifiquen a MQL5.
def mt5_deposit(amount, from_binary, to_mt5): """Performs a deposit operation to the MT5 account.""" try: ws.send(json.dumps({ "mt5_deposit": 1, "amount": amount, "from_binary": from_binary, "to_mt5": to_mt5 })) response = ws.recv() return json.loads(response) except Exception as e: return {"error": f"Error during deposit operation: {e}"}
5. Lectura de comandos desde MQL5
- Una vez leído el comando, se imprime con fines de depuración, para poder verificar que el contenido se ha recuperado según lo esperado. Después de leer el comando, elimina el archivo, asegurándose de que el mismo comando no se vuelva a procesar en el futuro.
- Si el archivo no existe, devuelve None, lo que indica que no hay ningún comando que procesar. Esto ayuda a evitar comprobaciones innecesarias si no hay ningún comando disponible.
def read_command(): """Reads a command from the MQL5 file and deletes the file after reading.""" print(f"Checking for command file at: {MQL5_TO_PYTHON}") if os.path.exists(MQL5_TO_PYTHON): print(f"Command file found: {MQL5_TO_PYTHON}") with open(MQL5_TO_PYTHON, "r", encoding="utf-8") as file: command = file.read().strip() print(f"Raw Command read: {repr(command)}") # Strip potential BOM and whitespace if command.startswith("\ufeff"): command = command[1:] print(f"Processed Command: {repr(command)}") os.remove(MQL5_TO_PYTHON) # Remove file after reading return command print(f"Command file not found at: {MQL5_TO_PYTHON}") return None
6. Escribir respuestas a MQL5
- Para garantizar que la respuesta tenga el formato adecuado, el diccionario Python se convierte en una cadena JSON utilizando json.dumps(). Escribir esta cadena JSON en el archivo garantiza que el sistema MQL5 pueda interpretar correctamente la respuesta.
- Este paso es fundamental porque completa el ciclo de comunicación entre Python y MQL5, lo que permite a MQL5 saber si la operación se ha realizado correctamente o ha fallado y tomar las medidas adecuadas.
def write_response(response): """Writes a response to the MQL5 file.""" with open(PYTHON_TO_MQL5, "w", encoding="utf-8") as file: file.write(json.dumps(response))
7. Bucle principal
- Si se encuentra un comando, se procesa y el resultado se escribe de nuevo en MQL5. Si el archivo de comando no existe o se produce un error, se gestiona correctamente mostrando un mensaje de error y saliendo del bucle.
- El bucle es crucial para mantener un sistema receptivo. Nos aseguramos de que el script no se ejecute indefinidamente ni falle sin proporcionar información útil. Al implementar bloques try-except, protegemos el bucle de errores inesperados y nos aseguramos de que no se bloquee el script, sino que se cierre correctamente.
if __name__ == "__main__": if not connect_to_deriv(): print("Failed to authorize. Exiting.") exit(1) print("Connected and authorized. Waiting for commands...") while True: try: command = read_command() if command: print(f"Processing command: {command}") response = process_command(command) print(f"Response: {response}") write_response(response) print("Response written. Exiting loop.") break # Exit the loop after processing one command else: print("No command file found. Exiting.") break # Exit the loop if the command file is not found except Exception as e: print(f"Error in main loop: {e}") break # Exit the loop on unexpected error
Funds Manager EA
En esta etapa, continuaremos explorando el proceso de desarrollo del EA del gestor de fondos (Fund Manager EA). Diseñaremos este EA para supervisar el saldo de la cuenta y proponer una recarga si el saldo cae por debajo de un umbral específico. La operación de recarga se activará mediante el script de Python que hemos desarrollado anteriormente. Aunque este EA no abarca todas las funcionalidades de un asesor experto de trading completo, nos centraremos en el segmento de código específico que integra las interacciones de la API del bróker. El objetivo del debate es demostrar el potencial de integración de las API de los brókeres con cualquier EA.
Resumen del plan de desarrollo:
Uno de los componentes clave de este EA es la implementación de la función ShellExecuteW, que se utilizará para ejecutar el script deriv_api_handler.py desde el código EA. El EA supervisará el saldo de la cuenta corriente y, si detecta que el saldo está por debajo del umbral definido, emitirá una orden para iniciar un depósito.
Normalmente, estas operaciones se gestionan en la función OnTimer() para permitir comprobaciones periódicas y automatización durante un periodo prolongado. Sin embargo, con fines de prueba y retroalimentación inmediata, he optado por colocar estas operaciones dentro de la función OnInit(). Este enfoque garantiza que la API se pruebe inmediatamente después del lanzamiento del EA. A largo plazo, la función OnTimer() será más adecuada para supervisar continuamente el saldo de la cuenta y solicitar una recarga cuando sea necesario.
1. Metainformación e importación de bibliotecas
Esta sección configura los metadatos para el Asesor Experto (EA) e importa una biblioteca del sistema para ejecutar comandos externos. La función ShellExecuteW de la biblioteca shell32.dll se utiliza para ejecutar aplicaciones externas, como un script de Python, lo que permite la comunicación con sistemas externos o API.
//+------------------------------------------------------------------+ //| Fund Manager EA.mq5 | //| Copyright 2024, Clemence Benjamin | //| https://www.mql5.com/en/users/billionaire2024/seller | //+------------------------------------------------------------------+ #property copyright "Copyright 2024, Clemence Benjamin" #property link "https://www.mql5.com/en/users/billionaire2024/seller" #property version "1.01" #property description "Deposit and Withdraw funds between broker and trading account within the EA" #import "shell32.dll" int ShellExecuteW(int hwnd, string lpOperation, string lpFile, string lpParameters, string lpDirectory, int nShowCmd); #import
2. Parámetros de entrada para la personalización
Aquí, los parámetros de entrada personalizables permiten a los usuarios adaptar el EA a sus necesidades específicas sin modificar el código central. Los parámetros incluyen el umbral de saldo, el importe de recarga, los ID de cuenta para transferencias de fondos y las rutas para el script y el ejecutable de Python.
input double balance_threshold = 100000.0; // Threshold balance for top-up input double top_up_amount = 100000.0; // Amount to top-up if balance is below threshold input string from_binary = "CR0000000"; // Binary account ID to withdraw funds from. Replace zero with real one input string to_mt5 = "MTRReplace"; // MT5 account ID to deposit funds into. Replace with your MT5 acc from Deriv Broker input string python_script_path = "C:\\Users\\YourComputerName\\PathTo\\deriv_api_handler.py"; // Python script path input string python_exe = "python"; // Python executable command (ensure Python is in PATH)
3. Inicialización: Verificación del saldo y depósito
La función OnInit es el punto de entrada del EA. Primero recupera el saldo actual de la cuenta utilizando AccountInfoDouble(ACCOUNT_BALANCE). Si el saldo está por debajo del umbral especificado, el EA procede a iniciar un depósito.
int OnInit() { double current_balance = AccountInfoDouble(ACCOUNT_BALANCE); Print("Current Account Balance: ", current_balance); if(current_balance < balance_threshold) { Print("Balance is below the threshold. Attempting a deposit...");
4. Escribir un comando de depósito en un archivo
El EA crea un archivo para comunicarse con el script de Python. El archivo contiene una cadena con formato JSON que especifica el comando de depósito, incluyendo el importe, el origen y los datos de la cuenta de destino. Este archivo actúa como interfaz entre MQL5 y el sistema Python.
string command_file = "mql5_to_python.txt"; string command_path = TerminalInfoString(TERMINAL_COMMONDATA_PATH) + "\\Files\\" + command_file; int handle = FileOpen(command_file, FILE_WRITE | FILE_COMMON | FILE_TXT | FILE_ANSI); string deposit_command = StringFormat("{\"mt5_deposit\": 1, \"amount\": %.2f, \"from_binary\": \"%s\", \"req_id\": 1, \"to_mt5\": \"%s\"}", top_up_amount, from_binary, to_mt5); FileWrite(handle, deposit_command); FileClose(handle); Print("Deposit command written to file: ", command_path);
5. Ejecutar el script Python
Mediante la función ShellExecuteW, el EA ejecuta el script Python especificado en los parámetros de entrada. El script procesa la solicitud de depósito e interactúa con sistemas externos.
int result = ShellExecuteW(0, "open", python_exe, python_script_path, NULL, 1); if(result <= 32) { Print("Failed to launch Python script. Error code: ", result); return(INIT_FAILED); } else { Print("Python script launched successfully."); }
6. Comprobación de la respuesta de Python
Después de ejecutar el script de Python, el EA comprueba si hay un archivo de respuesta. Si el archivo existe, el EA lo lee para confirmar si el depósito se ha realizado correctamente. El archivo de respuesta debe contener un mensaje de éxito para que el EA proceda en consecuencia.
string response_file = "python_to_mql5.txt"; if(FileIsExist(response_file, FILE_COMMON)) { handle = FileOpen(response_file, FILE_READ | FILE_COMMON | FILE_TXT | FILE_ANSI); string response = FileReadString(handle); FileClose(handle); Print("Response from Python: ", response); if(StringFind(response, "\"status\":\"success\"") >= 0) { Print("Deposit was successful."); } else { Print("Deposit failed. Response: ", response); } } else { Print("Response file not found. Ensure the Python script is running and processing the command."); }
7. Finalización de la inicialización
Si el saldo supera el umbral, el EA omite el proceso de depósito. La inicialización finaliza con éxito y el EA entra en su fase operativa.
else { Print("Balance is above the threshold. No deposit attempt needed."); } return(INIT_SUCCEEDED);
8. Desinicialización
The OnDeinit function logs when the EA is removed or deinitialized.
void OnDeinit(const int reason) { Print("Expert deinitialized."); }
Pruebas de demostración y resultados
Aquí analizaremos dos pruebas:
- Probando el script Python (deriv_api_handler.py) en el símbolo del sistema.
- Prueba del EA de gestor de fondos (Fund Manager EA).
Entremos en detalles:
1. Probando el script Python (deriv_api_handler.py)
Trabajé en mi script de Python utilizando una herramienta gratuita llamada Notepad++. A continuación se muestra un clip animado que muestra cómo iniciar el símbolo del sistema directamente desde el editor. Este enfoque es esencial, ya que garantiza que el símbolo del sistema se dirija a la carpeta que contiene el script, lo que facilita su ejecución directamente desde su ubicación.

Iniciar cmd desde Notepad++
Una vez abierta la ventana del símbolo del sistema, puede escribir el comando para ejecutar el script. El objetivo es verificar que la autorización y el acceso a la API de Deriv se hayan realizado correctamente.
Introduzca el siguiente comando en el símbolo del sistema y pulse Intro:
python deriv_api_handler.py
Respuesta con credenciales API predeterminadas:
Con el script predeterminado que carece de credenciales válidas, recibirá la respuesta que se muestra a continuación. Es esencial que proporcione sus credenciales de trabajo (token API e ID de aplicación) para establecer la autorización y funcionalidad adecuadas.
Error during authorization: Handshake status 401 Unauthorized -+-+- {'date': 'Thu, 15 Jan 2025 08:43:53 GMT', 'content-type': 'application/json;charset=UTF-8', 'content-length': '24', 'connection': 'keep-alive', 'content-language': 'en', 'upgrade': 'websocket', 'sec-websocket-accept': 'yfwlFELh2d3KczdgV3OT8Nolp0Q=', 'cf-cache-status': 'DYNAMIC', 'server': 'cloudflare', 'cf-ray': '902cd20129b638df-HRE', 'alt-svc': 'h3=":443"; ma=86400'} -+-+- b'{"error":"InvalidAppID"}' Failed to authorize. Exiting.
Respuesta con credenciales correctas:
Connected and authorized. Waiting for commands... Checking for command file at: C:/Users/YourComputerName/AppData/Roaming/MetaQuotes/Terminal/Common/Files/mql5_to_python.txt Command file found: C:/Users/YourComputerName/AppData/Roaming/MetaQuotes/Terminal/Common/Files/mql5_to_python.txt Raw Command read: '{"mt5_deposit": 1, "amount": 100000.00, "from_binary": "CR4000128", "req_id": 1, "to_mt5": "MTR130002534"}' Processed Command: '{"mt5_deposit": 1, "amount": 100000.00, "from_binary": "CR4000128", "req_id": 1, "to_mt5": "MTR130002534"}' Processing command: {"mt5_deposit": 1, "amount": 100000.00, "from_binary": "CR4000128", "req_id": 1, "to_mt5": "MTR130002534"} Response: {'echo_req': {'amount': 100000, 'from_binary': 'CR4000128', 'mt5_deposit': 1, 'to_mt5': 'MTR130002534'}, 'error': {'code': 'PermissionDenied', 'message': 'Permission denied, requires payments scope(s).'}, 'msg_type': 'mt5_deposit'} Response written. Exiting loop.
2. Prueba del EA de gestor de fondos (Fund Manager EA).
Para probar nuestro Asesor Experto (EA), lo lanzamos en MetaTrader 5. Como se mencionó anteriormente, lo diseñamos para intentar realizar un depósito durante la inicialización. Dado que estamos trabajando con una cuenta demo que tiene un capital de 10.000, he establecido el umbral de saldo en 100.000 para activar un intento de depósito si el saldo actual es inferior a este valor. A continuación se muestra una captura de pantalla animada que muestra el lanzamiento, junto con los ajustes de entrada que permiten personalizar estos valores.

Lanzamiento del EA gestor de fondos (Fund Manager EA)
En la pestaña Expertos de la ventana Caja de herramientas de MetaTrader 5, puede ver el registro de todas las operaciones realizadas por el EA. A continuación, encontrará los resultados del registro.
2025.01.14 11:49:56.012 Fund Manager EA1 (EURUSD,M1) Current Account Balance: 10000.22 2025.01.14 11:49:56.012 Fund Manager EA1 (EURUSD,M1) Balance is below the threshold. Attempting a deposit... 2025.01.14 11:49:56.013 Fund Manager EA1 (EURUSD,M1) Deposit command written to file: C:\Users\BTA24\AppData\Roaming\MetaQuotes\Terminal\Common\Files\mql5_to_python.txt 2025.01.14 11:49:56.097 Fund Manager EA1 (EURUSD,M1) Python script launched successfully. 2025.01.14 11:50:01.132 Fund Manager EA1 (EURUSD,M1) Response file path: C:\Users\BTA24\AppData\Roaming\MetaQuotes\Terminal\Common\Files\python_to_mql5.txt 2025.01.14 11:50:01.133 Fund Manager EA1 (EURUSD,M1) Response from Python: {"echo_req": {"amount": 100000, "from_binary": "CR4000128", "mt5_deposit": 1, "to_mt5": "MTR130002534"}, "error": {"code": "PermissionDenied", "message": "Permission denied, requires payments scope(s)."}, "msg_type": "mt5_deposit"} 2025.01.14 11:50:01.133 Fund Manager EA1 (EURUSD,M1) Deposit failed. Response: {"echo_req": {"amount": 100000, "from_binary": "CR4000128", "mt5_deposit": 1, "to_mt5": "MTR130002534"}, "error": {"code": "PermissionDenied", "message": "Permission denied, requires payments scope(s)."}, "msg_type": "mt5_deposit"}
El resultado anterior demuestra una interacción satisfactoria entre el EA gestor de fondos (Fund Manager EA), el script Python y la API de Deriv. En privado, he realizado con éxito operaciones de recarga utilizando esta configuración. En este ejemplo, sin embargo, nos encontramos con un error de «Permiso denegado» porque se utilizaron credenciales aleatorias para proteger mis credenciales API personales.
Conclusión
Hemos integrado con éxito MQL5 y Python para interactuar con un servidor de bróker externo a través de su API. Esta solución aborda el problema de quedarse sin fondos durante el trading automatizado, especialmente en cuentas alojadas en un VPS. El EA repone automáticamente la cuenta cuando su saldo cae por debajo de un umbral establecido. Aunque nos hemos centrado en la API de Deriv, se pueden lograr integraciones similares con otras API de brókers, muchas de las cuales ofrecen funciones avanzadas y distintos niveles de acceso. A efectos de demostración, probamos el EA utilizando una cuenta vacía y verificamos su funcionalidad a través de las respuestas de la API. Puede ampliar este sistema para incluir funciones de retirada y otras características avanzadas.
La aplicación de la API de Deriv es sencilla y facilita principalmente la gestión de los tokens API necesarios para la comunicación EA. Puedes explorar más a fondo la API para descubrir nuevas posibilidades. Se adjuntan el script de Python y los archivos del EA Fund Manager para su prueba y ampliación. No dude en compartir sus opiniones o hacer preguntas en la sección de comentarios a continuación para mantener vivo el debate.
Traducción del inglés realizada por MetaQuotes Ltd.
Artículo original: https://www.mql5.com/en/articles/16012
Advertencia: todos los derechos de estos materiales pertenecen a MetaQuotes Ltd. Queda totalmente prohibido el copiado total o parcial.
Este artículo ha sido escrito por un usuario del sitio web y refleja su punto de vista personal. MetaQuotes Ltd. no se responsabiliza de la exactitud de la información ofrecida, ni de las posibles consecuencias del uso de las soluciones, estrategias o recomendaciones descritas.
Cómo publicar código en CodeBase: Guía práctica
Fibonacci en Forex (Parte I): Comprobamos la relación tiempo-precio
Algoritmo de búsqueda circular — Circle Search Algorithm (CSA)
Analizamos el código binario de los precios en bolsa (Parte II): Convirtiendo a BIP39 y escribiendo un modelo GPT
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso
Es cierto que se puede lanzar un script Python desde el terminal a través del Navigator, pero no es cierto que operen "sobre el gráfico". Se ejecutan externamente y pueden utilizar la API de Python, pero no interactuarán directamente de ninguna manera con el gráfico ni con ningún otro componente visual del terminal MetaTrader 5.
Es cierto que se puede lanzar un script Python desde el terminal a través del Navegador, pero no es cierto que operen "sobre el gráfico". Se ejecutan externamente y pueden utilizar la API de Python, pero no interactuarán directamente de ninguna manera con el gráfico ni con ningún otro componente visual del terminal MetaTrader 5.
Estoy de acuerdo con usted, estimado señor.
Sin embargo, ¿por qué necesita la interfaz "Python" para manejar la API del broker?
En el caso de que un corredor no ofrece MetaTrader 5, entonces usted puede utilizar MQL5 para comunicarse directamente con la API del corredor. No hay necesidad de la interfaz de Python en absoluto.
MQL5 incluso tiene sockets de red, y puede implementar fácilmente web sockets. También puede implementar fácilmente la llamada a la API REST. Y si es necesario, también puede hacer uso de llamadas DLL.
Por no hablar de que MQL5 es mucho más rápido que Python. En esencia, no hay necesidad de utilizar Python para acceder a la API.
Sin embargo, ¿por qué necesitas la interfaz "Python" para manejar la API del broker?
En el caso de que un corredor no ofrece MetaTrader 5, entonces usted puede utilizar MQL5 para comunicarse directamente con la API del corredor. No hay necesidad de la interfaz de Python en absoluto.
MQL5 incluso tiene sockets de red, y puede implementar fácilmente web sockets. También puede implementar fácilmente la llamada a la API REST. Y si es necesario, también puede hacer uso de llamadas DLL.
Por no hablar de que MQL5 es mucho más rápido que Python. En esencia, no hay necesidad de utilizar Python para acceder a la API.
Sí, señor. Aprecio que destaques enfoques directos y eficaces, ¡gracias por ello!
Aunque yo no destacaría necesariamente Python como una necesidad acuciante, creo que todo se reduce a explorar cómo pueden colaborar estos lenguajes en la materia.
En algún momento, la necesidad de integración podría surgir de forma natural
Hola a todos,
Necesito hacer trabsacciones RISE/FALL en DERIV a través de MQL5 con conexión websocket....
He encontrado este https://www.mql5.com/es/articles/10275 para recuperar los ticks del histórico pero NO para hacer el CALL/PUT (colocar orden)
¿Alguien me puede ayudar en esto?
Gracias y saludos,
Herman