English Русский 中文 Deutsch 日本語
preview
MetaTrader se une a Google Sheets con Pythonanywhere: guía para un flujo de datos seguro

MetaTrader se une a Google Sheets con Pythonanywhere: guía para un flujo de datos seguro

MetaTrader 5 — Integración |
22 2
Ramesh Maharjan
Ramesh Maharjan

Introducción

Acceder a los datos de operaciones y analizarlos es muy importante para los traders de MetaTrader, ya que les permite evitar errores y tomar mejores decisiones en el futuro. Existen herramientas y funciones integradas para exportar datos, pero no permiten exportarlos a servicios en la nube. La exportación automática de gráficos, historiales y datos de registro a servicios en la nube puede constituir un recurso importante para el proceso de toma de decisiones de los traders.

Existen diferentes formas y herramientas para transferir datos desde MetaTrader a soluciones en la nube, como Google Sheets; algunas son gratuitas, pero menos seguras, y otras son seguras, pero no son gratuitas o tienen un acceso limitado. Encontrar una forma adecuada de realizar exportaciones a la nube que resulte más económica puede suponer un quebradero de cabeza para los traders que buscan sacar partido del análisis de los datos de sus operaciones en futuras operaciones.

Los traders suelen perder el registro de operaciones importantes y otra información útil, ya que MetaTrader carece de un sistema de copias de seguridad automáticas en servicios en la nube. A los traders les cuesta sacar partido de las herramientas de visualización y análisis de datos que están fácilmente disponibles en la nube. El objetivo de este artículo es mostrar cómo se puede automatizar la transferencia de datos de MetaTrader a Google Sheets sin costes adicionales y con un alto nivel de seguridad, así como aprovechar soluciones fácilmente accesibles para realizar operaciones rentables en el futuro.

Este artículo está pensado para ayudar a aquellos traders y desarrolladores que buscan formas de transferir sus datos a soluciones en la nube o a servicios de almacenamiento. En este artículo voy a explicar cómo podemos utilizar herramientas seguras y disponibles de forma gratuita, como las claves de cuenta de servicio de Google y un servidor proxy alojado en una plataforma en la nube segura, gratuita y basada en la web llamada PythonAnywhere.



¿Por qué usar Google Sheets y una clave de cuenta de servicio?

Google Sheets es la solución más valiosa, ya que está basada en la nube y se puede acceder a los datos guardados en ella en cualquier momento y desde cualquier lugar. De este modo, los traders pueden acceder a los datos de operaciones y a otros datos relacionados exportados a una hoja de cálculo de Google, y realizar análisis adicionales para futuras operaciones en cualquier momento y desde cualquier lugar en el que se encuentren. Podemos utilizar las herramientas de análisis de datos de Google Sheets e incluso integrarlas con otras herramientas como Google Data Studio o TradingView. Además, otros traders y personas de apoyo pueden colaborar en las hojas de cálculo para aportar sus análisis y puntos de vista.

He publicado una aplicación utilidad Info Exporter MT5 en MQL5 Market, que se puede descargar y utilizar de forma gratuita y que utiliza la herramienta Apps Script de Google para transferir datos desde MetaTrader a una hoja de cálculo de Google.

Aunque Apps Script es gratuito y fácil de usar, no es lo bastante seguro, ya que la URL publicada queda accesible públicamente; esto permite que cualquier persona que disponga de dicha URL pueda leer y escribir en el script para acceder a los datos de las hojas de cálculo. Existen muchos otros enfoques, como la federación de identidades de cargas de trabajo y la API de Google Sheets, que son complejos de usar, no son gratuitos o solo son gratuitos de forma limitada.

La clave de cuenta de servicio es más segura, gratuita y requiere menos conocimientos para configurarla.

Puede consultar el vídeo «Acceder a Google Sheets mediante una clave de cuenta de servicio en un servidor proxy» para obtener más detalles sobre cómo configurar la clave de cuenta de servicio de Google y utilizarla en su aplicación.



¿Por qué utilizar un servidor proxy en pythonanywhere.com?

MetaTrader no cuenta con integración directa con Google Sheets ni con sus API. Por lo tanto, un servidor proxy es la mejor opción para transferir datos a Google Sheets. El uso de una solución basada en la nube como PythonAnywhere nos ofrece disponibilidad, escalabilidad, seguridad y fiabilidad. Disponibilidad, porque sigue accesible incluso cuando nuestras máquinas están desconectadas. Escalabilidad, en el sentido de que cualquiera que tenga el enlace puede usarlo, siempre que proporcione un ID de hoja de cálculo válido. Seguridad, ya que está bien probado y gestionado por ingenieros cualificados. Fiabilidad, ya que siempre podemos confiar en sus servicios (incluso en la versión gratuita).

PythonAnywhere.com ofrece a los usuarios un plan gratuito razonable para crear un servidor proxy sencillo destinado a este tipo de aplicaciones. La URL del servidor proxy de la versión gratuita tiene una vigencia de tres meses, pero puede prorrogarse indefinidamente siempre que se renueve antes de que caduque cada período de tres meses.

Prórroga de la fecha de caducidad en PythonAnywhere.com

Al tratarse de un servicio gratuito, obtenemos una URL accesible que se utiliza como servicio de API en el servidor proxy; este se emplea para acceder a Google Sheets y realizar otras tareas necesarias, como leer datos de las hojas, mostrar páginas estáticas con información y muchas otras funciones. Tenemos acceso a consolas para ejecutar comandos de terminal, lo cual se utiliza principalmente para instalar las bibliotecas necesarias y realizar otras tareas relacionadas con archivos y redes, como editar archivos de errores, etc.

También tenemos acceso a una base de datos MySQL que se utilizará con nuestro servicio de API para almacenar información o usarla como caché. También disponemos de funciones para programar tareas, con las que podemos crear tareas cron que se repitan a la hora del día especificada, de modo que no tengamos que ejecutarlas manualmente. Tenemos acceso a herramientas para crear, editar y eliminar archivos, a una interfaz web para consultar los archivos de registro de errores, para proteger el sitio, para crear entornos virtuales (virtualenvs) y a muchas otras herramientas.

He intentado incluir toda la información necesaria para crear, editar y alojar un servidor proxy en un vídeo sobre pythonanywhere.com, en el que creo un servidor proxy idéntico al que se utiliza en este artículo.



Diagrama de flujo de datos

El concepto de flujo de datos en este proceso de transferencia es bastante sencillo de entender. MetaTrader actúa como fuente de datos: allí se encuentran los datos necesarios para realizar un análisis minucioso que permita tomar decisiones de trading rentables, y desde allí se transfieren a un servidor proxy alojado en la plataforma en la nube pythonanywhere.com. El servidor proxy escribe los datos recibidos en la hoja de cálculo de Google autorizada, utilizando los paquetes de autenticación de Google y las credenciales creadas a partir de la clave de cuenta de servicio de Google. Este proceso queda más claro en el siguiente diagrama.

Flujo de datos de MetaTrader al proxy y de este a las hojas de cálculo

Este es uno de los métodos gratuitos y seguros para transferir datos de MetaTrader a Hojas de cálculo de Google. Solo se accede a las hojas autorizadas desde un servidor proxy, ya sea alojado localmente o en una plataforma en la nube probada y segura como PythonAnywhere.



Proceso para crear una clave de cuenta de servicio

La consola de Google Cloud cuenta con numerosas funciones avanzadas que son gratuitas y muy útiles. Google Service Accounts es una de esas funciones. La opción «Cuentas de servicio» se encuentra en la sección «IAM y administración», tal y como se muestra a continuación:

Cuentas de servicio de IAM y administración

Antes de gestionar las cuentas de servicio, asegúrese de crear un proyecto o de seleccionar uno de los proyectos existentes. La página de cuentas de servicio tiene el aspecto que se muestra a continuación, donde el botón «Crear cuenta de servicio» se encuentra en la fila superior.

Página de la cuenta de servicio con el botón «Crear»

Complete los campos necesarios en la sección «Crear cuenta de servicio»; se creará un correo electrónico de cuenta de servicio que se utilizará en el paso de compartir la hoja de cálculo que se describe a continuación. El campo «ID de clave» estará vacío; para crearlo, debe ir a la página de detalles de la cuenta de servicio creada, que se muestra a continuación:

Creación del ID de clave de la cuenta de servicio

El botón «Añadir clave» le dará la opción de crear una clave y descargar las credenciales en formato JSON o P12. Elija el formato JSON y el archivo se descargará automáticamente; este se utiliza en el servidor proxy para la autenticación.

El siguiente paso es habilitar la API de Hojas de cálculo de Google para el proyecto; se encuentra en «APIs y servicios», como se muestra a continuación, donde debemos localizar la API de Hojas de cálculo de Google y habilitarla.

habilitar API de Hojas de cálculo

Habilitar la API de Hojas de cálculo de Google: página de selección

El último paso consiste en añadir el correo electrónico de la cuenta de servicio creada anteriormente a la lista de uso compartido de la hoja de cálculo que se va a utilizar en el servidor proxy para transferir datos.

He enlazado un vídeo detallado sobre este proceso en la sección anterior «Por qué usar Hojas de cálculo de Google y una clave de cuenta de servicio».



Programa del servidor proxy

Si ha visto los vídeos que compartí en la sección anterior, «Por qué usar un servidor proxy en pythonanywhere.com», debería comprender mejor el código que voy a explicar a continuación. Vamos a escribir una aplicación sencilla con Flask que actualizará la hoja de cálculo de Google utilizando las funciones del paquete «google-auth» y las credenciales de la clave de cuenta de servicio.

En primer lugar, vamos a importar las funciones de biblioteca necesarias en nuestro programa.

from flask import Flask, request, jsonify
from google.oauth2 import service_account
from googleapiclient.discovery import build

Las bibliotecas anteriores deben instalarse mediante pip si no están presentes en su sistema o en su entorno virtual. También las he explicado en mis vídeos.

A continuación, debemos instanciar el framework Flask para poder crear endpoints de API (GET, POST, PUT, DELETE), routers y muchas otras cosas más adelante en nuestros programas. La siguiente línea hace precisamente eso.

app = Flask(__name__)

El siguiente paso consiste en indicar la ubicación del archivo JSON de credenciales que se descargó al crear la clave de la cuenta de servicio. También podemos definir el alcance para que se limite únicamente a los elementos especificados, es decir, las hojas. A continuación, utilizando las credenciales y el alcance, se crea un objeto de credenciales que se utilizará al iniciar el cliente de la API de Google.

SERVICE_ACCOUNT_FILE = 'service_account.json'
SCOPES = ['https://www.googleapis.com/auth/spreadsheets']
credentials = service_account.Credentials.from_service_account_file(
    SERVICE_ACCOUNT_FILE, scopes=SCOPES
)

El siguiente paso es definir una API POST llamada «update-sheet».

@app.route('/update-sheet', methods=['POST'])
def update_sheet():

Normalmente utilizamos una API POST para enviar datos al servidor. Además, también enviamos encabezados que incluyen información sobre los datos para que el servidor pueda extraerlos fácilmente.

data = request.json
sheet_id = data['sheet_id']
data_range = data['range']
values = data['values'] 

En el código anterior, «request» es un objeto de Flask que contiene la información enviada por el cliente en su solicitud POST, que también incluye datos JSON. El código anterior extrae el identificador de la hoja de cálculo, el rango de la hoja y los valores que se van a escribir en la hoja de cálculo.

A continuación, vamos a inicializar el paquete del cliente de la API de Google pasando el objeto de credenciales creado anteriormente.

service = build('sheets', 'v4', credentials=credentials)

Este objeto de servicio se utiliza para actualizar la hoja de cálculo identificada por el «sheet_id» extraído anteriormente.

result = service.spreadsheets().values().update(spreadsheetId=sheet_id, range=data_range, valueInputOption='RAW', body={'values': values}).execute()

El código anterior indica al servicio del cliente de la API de Google que ejecute la actualización de la hoja de cálculo con los valores proporcionados en el rango indicado. Se adjunta el código completo con la API de «append» para que pueda profundizar en el tema; en él encontrará la API de «append» adicional y el código para comprobar el nombre de la hoja y, si no existe, crearla. Si lo prefiere, puede añadir más endpoints de API, como «delete» y otros.


Programa MetaTrader

El programa mq5 en sí incluye la exportación de información del terminal, información de la cuenta, historial de operaciones e historial de órdenes, así como una sección de configuración en la que los usuarios pueden seleccionar qué información desean transferir. Voy a explicar únicamente el código correspondiente a la información de la cuenta. A continuación se muestra la función en la que utilizamos el archivo de cabecera AccountInfo.mqh para extraer los datos de la cuenta y darles formato en un array de cadenas, con el fin de utilizarlos en la función StringToCharArray y crear así un array de caracteres, tal y como requiere la función de red WebRequest.

#include <Trade\AccountInfo.mqh>
string GetAccountInfo() {
   CAccountInfo accountInfo;
   string account_info = "[\"symbol\", \"name\", \"currency\", \"company\", \"balance\", \"credit\", " +
      "\"profit\", \"equity\", \"margin\", \"login\", \"trade_mode\", \"leverage\", \"limit_orders\", \"margin_mode\"]";
   StringAdd(account_info, StringFormat(
      ", [\"%s\", \"%s\", \"%s\", \"%s\", \"%f\", \"%f\", \"%f\", \"%f\", \"%f\", \"%d\", \"%d\", \"%d\", \"%d\", \"%d\"]",
      Symbol(),
      accountInfo.Name(), accountInfo.Currency(), accountInfo.Company(),
      accountInfo.Balance(), accountInfo.Credit(), accountInfo.Profit(), accountInfo.Equity(), accountInfo.Margin(),
      accountInfo.Login(), accountInfo.TradeMode(), accountInfo.Leverage(), accountInfo.LimitOrders(),
      accountInfo.MarginMode()
   ));
   return account_info;
}

La función indicada anteriormente prepara únicamente los datos relativos a la información de la cuenta. El código completo adjunto en el archivo ProxyExport.mq5 contiene tres funciones más para preparar datos de información del terminal, historial de operaciones e historial de órdenes. Tras preparar los datos, los enviamos a la siguiente función `WriteToGoogleSheet`, donde se realizan manipulaciones adicionales de cadenas y se invoca a `SheetExporter`.

void WriteToGoogleSheet(string terminalInfos, string historicalDeals, string historicalOrders, string accountInfos) {
   if(terminalInfos != NULL) {
      StringReplace(terminalInfos, "\\", "/");
      SheetExporter(terminalInfoName, terminalInfos);
   }
   if(historicalDeals != NULL) {
      SheetExporter(historyDealsName, historicalDeals);
   }
   if(historicalOrders != NULL) {
      SheetExporter(historyOrdersName, historicalOrders);
   }
   if(accountInfos != NULL) {
      SheetExporter(accountInfoName, accountInfos);
   } 
}

void SheetExporter(string sheetName, string data) {
   string headers = "Content-Type: application/json\r\n";
   char postData[], result[];
   string responseHeaders;
   string jsonDataWithSheetName = StringFormat("{\"spreadSheetId\": \"%s\", \"sheetName\": \"%s\", \"data\": [%s]}", spreadSheetId, sheetName, data);
  
   // Convert to char array
   StringToCharArray(jsonDataWithSheetName, postData, 0, StringLen(jsonDataWithSheetName), CP_UTF8);
   
   // Send POST request
   int res = WebRequest("POST", proxyServerUrl, headers, 5000, postData, result, responseHeaders);
   
   // Check response
   if(res != 200) {
     Alert("Account Infos not exported to Google Sheets returned error ", res, " and get last error is ", GetLastError());
   }
}

La función `SheetExporter` añade `spreadSheetId` y `sheetName`, además de los datos, a la cadena JSON que se enviará al servidor proxy. Hay que tener en cuenta que debemos introducir la URL del servidor proxy en la sección «Permitir WebRequest para las URL indicadas:», que se encuentra en el menú Herramientas → Opciones. Debe pegar la misma URL del servidor proxy en el siguiente campo de entrada.

Opciones disponibles al ejecutar un script en MetaTrader

 

Demostración del flujo de datos

Siga el proceso que he explicado en la sección «Proceso para crear la clave de cuenta de servicio» anterior para crear su clave de cuenta de servicio y descargue el archivo JSON necesario para autorizar al servidor proxy a acceder a la hoja de cálculo a la que desea exportar los datos de MetaTrader. A continuación, puede alojar su propio servidor proxy o utilizar pythonanywhere.com, o cualquier otra plataforma con la que se sienta cómodo, para ejecutar el código `service_accounts_proxy.py` y tener alojada la API de actualización. Recuerde que puede modificar el código según sus necesidades.

El último paso consistiría en compilar el código `ProxyExport.mq5` y ejecutar el archivo `.ex5` en su gráfico. Dispondrá de opciones para elegir qué datos exportar y de campos para introducir su API y el ID de la hoja de cálculo; sin ellos, la exportación no funcionará.

He intentado mostrar todo lo necesario para crear las credenciales de la clave de cuenta de servicio, habilitar Hojas de cálculo de Google para la cuenta de servicio y compartir la hoja de cálculo de Google con la dirección de correo electrónico de la cuenta de servicio.

Cuentas de servicio de la consola y uso compartido en Hojas de cálculo de Google

He intentado recopilar en el siguiente GIF todos los pasos necesarios que hay que seguir en pythonanywhere.com.

Pasos que se deben seguir en PythonAnywhere

También he intentado recopilar todos los pasos que hay que realizar en MetaEditor y MetaTrader para que la exportación funcione. Además, he grabado en el siguiente GIF la transferencia automática de la información de MetaTrader a una hoja de cálculo de Google en tiempo real.

Exportación desde MetaTrader al servidor proxy y a la hoja de cálculo


Análisis de trading con Hojas de cálculo de Google

He exportado los siguientes datos históricos de operaciones a una hoja de cálculo de Google. Solo he incluido 9 filas.

tabla del historial de operaciones

El valor en pips se calcula como (precio de salida - precio de entrada) * multiplicador, donde el multiplicador es 100 para los pares con JPY y 10 000 en los demás casos; el valor del beneficio se calcula como pips * tamaño del lote * 10, y el beneficio acumulado se calcula como (beneficio acumulado anterior + beneficio actual).

El nombre de la hoja anterior es «History_Deals», según la forma en que lo he codificado. Puede adaptarlo a sus necesidades. A continuación, podemos crear otra hoja, llamarla «métricas» e introducir las etiquetas y fórmulas que se muestran a continuación.

Etiquetas Fórmulas
Total de operaciones
=COUNTA(History_Deals!A2:A)
Operaciones ganadoras
=COUNTIF(History_Deals!K2:K,">0")
Operaciones perdedoras =COUNTIF(History_Deals!K2:K,"<0")
Tasa de acierto (%)
=FIXED(B2/A2 * 100, 2)
Tasa de pérdidas (%)
=FIXED(C2/A2 * 100, 2)
Ganancia media
=FIXED(AVERAGEIF(History_Deals!K2:K,">0"), 2)
Pérdida media =FIXED(AVERAGEIF(History_Deals!K2:K,"<0"), 2)
Relación riesgo-recompensa
=FIXED(F2/ABS(G2), 2)
Expectativa
=FIXED((D2/100*F2)-(E2/100*G2), 2)
Beneficio total
=SUM(History_Deals!K2:K)
Factor de beneficio
=SUMIF(History_Deals!K2:K,">0")/ABS(SUMIF(History_Deals!K2:K,"<0"))
Drawdown máximo
=MIN(History_Deals!L2:L)-MAX(FILTER(History_Deals!L2:L,History_Deals!L2:L<MIN(History_Deals!L2:L)))

Permítame explicar brevemente las métricas utilizadas en la tabla anterior.

  • «Total de operaciones» es el número total de operaciones realizadas con éxito. Un mayor total de operaciones se traduce en estadísticas fiables y precisas.
  • «Operaciones ganadoras» es el número de operaciones que cerraron con beneficio. Este número indica cuántas decisiones acertadas ha tomado.
  • «Operaciones perdedoras» es el número de operaciones que cerraron con pérdidas. Esta cifra indica cuántas decisiones erróneas ha tomado.
  • «Tasa de acierto %» es el porcentaje de operaciones rentables, y «Tasa de pérdidas %» es el porcentaje de operaciones que cerraron con pérdidas. Es importante tener en cuenta que una tasa de acierto más alta no siempre significa ser rentable. Los traders pueden obtener beneficios con una relación riesgo-recompensa adecuada, incluso con una tasa de acierto del 30 al 40 %.
  • «Ganancia media» y «pérdida media» son las cifras que indican cuánto gana cuando acierta y cuánto pierde cuando se equivoca. Hemos diseñado una estrategia para que la pérdida media se mantenga siempre baja.
  • «Relación riesgo-recompensa» es la relación entre la ganancia media y la pérdida media. El lema de los traders debería ser conseguir que este valor sea siempre superior a 1. La regla de oro es mantenerla entre 1,5:1 y 2:1.
  • «Expectativa» es el beneficio medio por operación. Por ejemplo, si este valor es 20, entonces, por cada 100 operaciones, obtendrá 2000.
  • «Beneficio total» es la suma de todos los beneficios y pérdidas.
  • «Factor de beneficio» es la cifra que indica la rentabilidad global. Los traders deberían intentar siempre que este valor sea superior a 1,5.
  • «Drawdown máximo» es la mayor caída del beneficio acumulado desde su pico. Los traders siempre deben intentar que sea lo más reducido posible.

Tras aplicar todas las fórmulas, obtenemos la siguiente tabla.

Total de operaciones Operaciones ganadoras Operaciones perdedoras Tasa de acierto % Tasa de pérdidas % Ganancia media Pérdida media Relación riesgo-recompensa Expectativa Beneficio total Factor de beneficio Drawdown máximo
9 7 2 77,78 22,22 285,71 -400,00 0,71 311,11 1200 2,5 200

Podemos conocer la solidez y la consistencia de nuestro trading representando el beneficio acumulado en un gráfico de líneas, como se muestra a continuación: para ello, vaya a Insertar → Gráfico → Gráfico de líneas y seleccione «beneficio acumulado» en el eje vertical y «fecha de cierre» en el eje horizontal.

gráfico de equity

También podemos comparar las operaciones ganadoras con las operaciones perdedoras en un gráfico circular, como se muestra a continuación

gráfico circular de operaciones ganadoras y perdedoras

También podemos ver el rendimiento por par de divisas mediante el gráfico de columnas que se muestra a continuación.

rendimiento por par de divisas en un gráfico de columnas

En Hojas de cálculo de Google podemos hacer muchas cosas de este tipo.


Conclusión

Los traders pueden utilizar esta solución para transferir de forma sencilla y segura sus datos de MetaTrader a Hojas de cálculo de Google y beneficiarse de las herramientas de visualización de Hojas de cálculo de Google. Esta es una solución para exportar nuestros datos de MetaTrader a Hojas de cálculo de Google, con el fin de llevar un diario de trading o realizar análisis posteriores, utilizando soluciones disponibles de forma gratuita. En este artículo se ha mostrado cómo alojar su propio servidor proxy o desplegarlo en soluciones basadas en la nube como pythonanywhere.com. Las soluciones basadas en la nube siempre son seguras y escalables. Se ha intentado modularizar el programa de MetaTrader para ofrecer flexibilidad en la elección y facilitar incluso la incorporación de nuevas funciones, como el registro de datos del probador de estrategias para análisis posteriores, entre muchas otras.

En resumen, este artículo es una herramienta más que los traders y desarrolladores pueden utilizar para transferir sus datos de MetaTrader con el fin de analizarlos más a fondo y tomar mejores decisiones de trading.

He incluido el código fuente del servidor proxy y el script de MetaTrader.

Nombre del archivo Descripción
service_accounts_proxy.py Esta es una aplicación Flask sencilla con una API para actualizar y añadir datos.
ProxyExport.mq5 Se trata de una aplicación de MetaTrader que permite seleccionar los datos que se van a exportar.

Traducción del inglés realizada por MetaQuotes Ltd.
Artículo original: https://www.mql5.com/en/articles/19175

Archivos adjuntos |
ProxyExport.mq5 (9.99 KB)
Chioma Obunadike
Chioma Obunadike | 28 ago 2025 en 09:30
Si se pueden realizar las mismas funciones con MQL, ¿por qué utilizar Python?
Ramesh Maharjan
Ramesh Maharjan | 29 ago 2025 en 05:05
Chioma Obunadike #:
Si se pueden realizar las mismas funciones con MQL, ¿por qué utilizar Python?

¿Podemos utilizar bibliotecas de Google, como las que utilicé en el servidor de Python, en MQL? Si es posible, por favor, comparte el enlace que explique cómo se puede hacer en MQL. Te agradecería mucho que me enseñaras esta nueva forma de hacerlo.

Guía de aprendizaje automático para MetaTrader 5 (Parte 2): Etiquetado de datos financieros para modelos de aprendizaje automático Guía de aprendizaje automático para MetaTrader 5 (Parte 2): Etiquetado de datos financieros para modelos de aprendizaje automático
En esta segunda entrega de la serie «Guía de aprendizaje automático para MetaTrader 5», descubrirás por qué unas etiquetas sencillas pueden llevar a tus modelos por mal camino, y cómo aplicar técnicas avanzadas, como los métodos de «triple barrera» y «métodos de análisis de tendencias», para definir etiquetas objetivo robustas y ajustadas al riesgo. Repleta de ejemplos prácticos en Python que optimizan estas técnicas computacionalmente intensivas, esta guía práctica te muestra cómo transformar datos de mercado con mucho ruido en etiquetas fiables que reflejen las condiciones reales de mercado.
Creación de un sistema de trading (parte 3): Determinación de los niveles mínimos de riesgo para objetivos de beneficio realistas Creación de un sistema de trading (parte 3): Determinación de los niveles mínimos de riesgo para objetivos de beneficio realistas
El objetivo último de todo trader es la rentabilidad, por lo que muchos fijan objetivos de beneficio específicos que desean alcanzar en un periodo de trading definido. En este artículo, utilizaremos simulaciones de Monte Carlo para determinar el porcentaje óptimo de riesgo por operación necesario para alcanzar los objetivos de trading. Los resultados ayudarán a los traders a evaluar si sus objetivos de beneficio son realistas o demasiado ambiciosos. Por último, analizaremos qué parámetros se pueden ajustar para establecer un porcentaje práctico de riesgo por operación que esté alineado con los objetivos de trading.
Desarrollo de un kit de herramientas para el análisis de la acción del precio (Parte 38): VWAP con búfer de ticks y motor de desequilibrio de ventana corta Desarrollo de un kit de herramientas para el análisis de la acción del precio (Parte 38): VWAP con búfer de ticks y motor de desequilibrio de ventana corta
En la parte 38, vamos a crear un panel de monitorización de MT5 apto para entornos de producción que convierte los ticks sin procesar en señales útiles. El EA almacena en búfer los datos de ticks para calcular el VWAP a nivel de tick, una métrica de desequilibrio de ventana corta (flujo) y el cálculo del tamaño de posición basado en el ATR. A continuación, muestra el spread, el ATR y el flujo mediante barras de bajo parpadeo. El sistema calcula un tamaño de lote recomendado y un stop de 1R, y emite alertas configurables en caso de spreads ajustados, flujo intenso y condiciones de ventaja operativa. El trading automático está desactivado de forma intencionada; la prioridad sigue siendo la generación de señales fiables y una experiencia de usuario fluida.
Evaluación de la calidad de la operativa con spreads en función de los factores de estacionalidad en el mercado Forex en el terminal MetaTrader 5 Evaluación de la calidad de la operativa con spreads en función de los factores de estacionalidad en el mercado Forex en el terminal MetaTrader 5
En este artículo se analiza la evaluación de la calidad del enfoque de trading estacional en el marco temporal diario, tanto para símbolos individuales como para spreads. Se presta especial atención a la identificación de ciclos mensuales recurrentes y a las posibilidades de aplicarlos en el trading durante el año en curso.