Spec Match Trade Copier MT5
- Utilidades
-
Quoc Dat Quach
Software engineer with 8 years in fintech and mobile, writing MQL4/MQL5 since 2017. I build Expert Advisors, indicators, trade and risk-management panels and utilities for MT4/MT5, and I trade forex and gold on MT5 myself. - Versión: 1.1
- Actualizado: 30 septiembre 2026
- Activaciones: 10
Un copiador de operaciones local para MetaTrader 5. Copia posiciones entre terminales de MT5 en el mismo ordenador con Windows o VPS y ajusta el tamaño de cada copia según las especificaciones de los contratos de ambos brókers (tamaño del contrato, valor del tick, divisa de la cuenta), de modo que una copia tiene la misma exposición incluso cuando los dos brókers definen un lote de forma diferente. Nunca abre una segunda copia de la misma posición maestra.
Qué hace
Se aplica el mismo EA a un gráfico en cada terminal:
- En la terminal maestra, configura el campo «Modo» en «Maestro».
- En cada terminal receptora, configura el parámetro «Mode» en «Receiver».
El maestro escribe sus posiciones abiertas, las especificaciones de sus símbolos y un pulso de actividad en un archivo de la carpeta compartida «Common\Files». Cada receptor lee ese archivo cada 100 ms y sincroniza sus propias posiciones con las del maestro:
- abre nuevas posiciones
- modifica el stop loss y el take profit
- cierra parcialmente
- cierra
No hay servidor, ni conexión de red, ni DLL, ni WebRequest.
El tamaño del lote se ajusta al contrato, no al número de lotes
Los brókers definen «1 lote» de forma diferente. El oro puede ser de 100 oz, 10 oz o 1 oz por lote. Los índices pueden ser de 1, 10 o 25 unidades por punto. Una cuenta en céntimos muestra 100 veces el importe. Un copiador que copie el número de lote puede abrir una posición 100 veces mayor o menor de la adecuada.
Este copiador calcula el valor de un lote en cada sentido. Utiliza OrderCalcProfit, que es el cálculo de beneficios propio del bróker, en la divisa de la cuenta. A continuación, convierte el valor del maestro a la divisa de la cuenta del receptor. También se comprueba el valor del tick, y el panel muestra una advertencia cuando ambos valores no coinciden.
Una posición maestra genera, como máximo, una copia
El receptor mantiene un mapa de copias en el disco, con una línea por cada posición maestra:
- Cada copia lleva el comentario SMC:<id de la posición maestra>.
- Las solicitudes se registran en el mapa antes de enviarse, por lo que un fallo o un reinicio en medio de una operación no puede dar lugar a una segunda copia.
- Tras un reinicio, y después de cambiar los parámetros de entrada o el intervalo temporal del gráfico, el receptor vuelve a cargar el mapa. Se ha probado en entorno real el cambio de parámetros con copias abiertas en receptores de cobertura y de compensación: no se producen operaciones adicionales.
- Si se pierde el archivo del mapa en un receptor de cobertura, este reconstruye el mapa a partir de los comentarios de las posiciones.
- Un receptor de compensación no puede reconstruir un mapa perdido, ya que una posición neta no puede volver a dividirse en posiciones maestras. En su lugar, coloca cada símbolo que tenga una copia abierta en NET_HOLD (véase «Cuando el copiador se detiene o se pone en espera» más abajo).
Cuando algo no cuadra, el receptor deja de copiar y genera una alerta. Nunca hace suposiciones. Ejemplos:
- dos posiciones del receptor tienen el mismo ID maestro
- una posición copiada no tiene ningún ID en su comentario
- la cuenta maestra cambia
- el modo de margen de la cuenta cambia
- el archivo de mapa está dañado
- el volumen neto de una cuenta de compensación se ha modificado manualmente
El panel muestra cuántos duplicados se han bloqueado.
Las posiciones copiadas solo se cierran siguiendo las instrucciones de la cuenta principal
La cuenta maestra publica un registro de cierre para cada posición que cierra, extraído de su historial de operaciones. La cuenta receptora cierra una copia únicamente cuando ve ese registro. Una posición también puede desaparecer del archivo maestro sin que haya un registro, por ejemplo, porque el archivo estaba dañado o no se ha cargado el historial. En ese caso, la copia se pone en ESPERA y recibes una alerta. No se cierra.
El receptor se detiene cuando ocurre cualquiera de estas situaciones, y tus posiciones permanecen tal y como están:
- se detiene el terminal maestro
- la terminal maestra se apaga
- la terminal maestra pierde la conexión
- el archivo maestro deja de actualizarse (tiempo de espera de latido, por defecto 3 s)
Supervisión
El panel de estado se encuentra en el gráfico del receptor. Muestra:
- estado del maestro (ACTIVO / SILENCIOSO / DESCONECTADO)
- el número de copias activas, cerradas, rechazadas, en espera y filtradas
- exposición total del maestro frente al receptor, en la divisa de la cuenta, con la diferencia en %
- recuento de aperturas, cierres, cierres parciales, cambios de SL/TP y duplicados bloqueados
- la última acción, el último error y las advertencias
- una fila por cada posición copiada, hasta un máximo de 10 filas, seguida de una línea «... N más»
Cada acción también se registra en un archivo CSV de registro situado en Common\Files\SpecMatchCopier.
Cuando el copiador se detiene o se queda en espera
El copiador nunca corrige una inconsistencia basándose en conjeturas. Debes solucionar la causa y, a continuación, reiniciarlo.
| El panel muestra | Qué significa | Qué hacer |
|---|---|---|
| COPIA DETENIDA | El receptor ha detectado algo que no puede explicar: dos posiciones para un mismo ID maestro, una posición con el «mágico» de la copiadora pero sin ID, un cambio en la cuenta maestra o en el modo de margen, o un archivo de mapa dañado. El motivo aparece en el panel y en el registro. No se copia nada hasta que se reinicia el EA. | Soluciona la causa que indica el mensaje y, a continuación, retira el EA del gráfico y vuelve a añadirlo. Si la causa persiste, se detendrá de nuevo. |
| COPIA DETENIDA: cuenta principal modificada | El canal ahora tiene otra cuenta maestra. | Si el cambio es intencionado: retira el EA, cierra manualmente las copias de la antigua cuenta principal, elimina el archivo map_<login>_<magic>.txt de la carpeta Common\Files\SpecMatchCopier (con el nombre de usuario y el «magic» de este receptor) y vuelve a añadir el EA. |
| COPIA DETENIDA: el archivo de mapa está dañado | El mapa de copia no ha superado la comprobación de suma de comprobación. | Cobertura: elimina el archivo de mapa y vuelve a conectar el EA; el mapa se reconstruirá a partir de los comentarios. Compensación: consulta NET_HOLD. |
| NET_HOLD (receptor de compensación) | El volumen neto de un símbolo difiere de lo que abrió el copiador, por ejemplo, tras una operación manual o la pérdida de un mapa. Ese símbolo ya no se negocia. La retención se guarda en el mapa, por lo que un reinicio no la borra. | Elimina el EA. Cierra manualmente las posiciones del copiador. Elimina el archivo map_<login>_<magic>.txt. Vuelve a conectar el EA. A partir de ese momento, copiará las posiciones del maestro abiertas posteriormente. |
| HOLD en una fila | Hay una copia dudosa; por ejemplo, una posición del maestro ha desaparecido sin que quede constancia de su cierre. La copia permanece abierta. | Cierra o mantén la copia manualmente. El copiador no volverá a tocar una copia en espera. |
Modos de lote
| Modo | Volumen del receptor | Contenido del contrato |
|---|---|---|
| Misma exposición (por defecto) | volumen maestro × (valor de 1 lote maestro / valor de 1 lote receptor) × multiplicador | sí |
| Relación de saldo | misma exposición × (saldo del receptor / saldo maestro) | sí |
| Ratio de capital propio | misma exposición × (capital del receptor / capital maestro) | sí |
| Lote maestro x multiplicador | volumen principal x multiplicador. Se muestra una advertencia cuando los contratos difieren | no |
| Lote fijo | el lote fijo, para cada copia | no |
En todos los modos, el volumen se:
- redondeado al paso de volumen del receptor (al más cercano o al inferior)
- limitado por el lote máximo opcional y por el máximo del bróker
- se omite o se eleva al mínimo, cuando está por debajo del mínimo del bróker (a tu elección)
- se comprueba con OrderCalcMargin frente al margen libre antes de enviarlo
Se rechaza una copia cuando un lote de un lado vale más de 1000 veces un lote del otro lado. Este límite se puede modificar. Suele indicar una asignación de símbolos incorrecta.
Ejemplo práctico: oro, de 100 oz por lote a 1 oz por lote
| Principal (corredor A) | Destinatario (corredor B) | |
|---|---|---|
| Símbolo | XAUUSD | XAUUSD.cs (emparejado automáticamente) |
| Tamaño del contrato | 100 oz | 1 oz |
| Cuenta | USD | USD |
| Precio del oro | 4.178,13 | 4.178,13 |
| Valor de 1 lote | 100 × 4.178,13 = 417.813 USD | 1 × 4.178,13 = 4.178,13 USD |
El operador abre 0,10 lotes, lo que equivale a 10 onzas, por un valor de 41 781 USD.
- La misma exposición: 0,10 × 417 813 / 4 178,13 = 10,00 lotes en la cuenta del receptor, lo que equivale a 10 onzas, por un valor de 41 781 USD. Un copiador que copie el número de lotes abriría 0,10 lotes = 0,1 onzas, la centésima parte de la exposición.
- Receptor en céntimos (divisa de la cuenta: USC, contrato de 1 oz): el corredor informa de 417 813 USC por 1 lote, lo que equivale a 4 178,13 USD tras aplicar el factor de céntimos. El receptor obtiene los mismos 10,00 lotes.
- Relación de saldos (saldo principal 10 000 USD, saldo del receptor 1 000 USD): 10,00 × 1 000 / 10 000 = 1,00 lote.
Estas cifras corresponden a las pruebas unitarias incluidas en el informe de pruebas. El mismo cálculo también se realizó en entorno real: se copió XAGUSD, con 5.000 onzas por lote en una cuenta en USD, a XAGEUR, con 1.000 onzas por lote en una cuenta en EUR. 0,10 lotes se convirtieron en 0,50 lotes.
Coincidencia de símbolos
El receptor busca el símbolo maestro en este orden:
- Asignación manual (XAUUSD=GOLD.x, US30=DJ30). Siempre tiene prioridad y nunca se recurre a la alternativa.
- El mismo nombre.
- La pista del sufijo o prefijo (.cs, m, #).
- El mismo nombre base tras eliminar los sufijos añadidos por el bróker: XAUUSD.cs, XAUUSDm, #XAUUSD, EURUSD.pro, US500Cash, fxEURUSD y similares.
- Alias integrados: GOLD/XAUUSD, SILVER/XAGUSD, US30/DJ30/WS30, NAS100/US100/USTEC, US500/SPX500, GER40/DE40/DAX, UK100, JP225, USOIL/WTI, UKOIL/BRENT, BTCUSD, ETHUSD.
Cuando dos símbolos de destino coinciden por igual, la copia se rechaza y el panel solicita una asignación manual.
Antes de la primera copia de un símbolo, el receptor compara ambos precios en la divisa de su cuenta. La copia se rechaza cuando difieren en más de un 3 %, porcentaje que se puede modificar. Esto detecta asignaciones como «GOLD», que en algunos brókers corresponde a una acción de una empresa minera de oro con un valor aproximado de 40 USD, y no al oro propiamente dicho.
Entradas
| Entrada | Por defecto | Significado |
|---|---|---|
| Modo de este terminal | Receptor | El maestro publica; el receptor copia |
| Canal | 1 | Conecta un maestro con sus receptores. Utiliza un texto diferente para cada maestro en el PC |
| Cuenta Cent (este terminal) | Automático | La opción «Auto» trata las divisas de las cuentas USC/EUC como céntimos. Selecciona «Sí» o «No» si tu bróker utiliza otro código |
| Intervalo de escaneo del maestro, ms | 200 | Frecuencia con la que el servidor principal comprueba si hay cambios, además de los eventos de negociación |
| Intervalo de pulso del sistema principal, ms | 500 | Con qué frecuencia el maestro reescribe su archivo cuando no hay cambios |
| Modo por lotes | Misma exposición | Consulta los modos de lote más arriba |
| Lote fijo | 0,01 | Utilizado en el modo de lote fijo |
| Multiplicador | 1,0 | Se aplica a todos los modos excepto al de lote fijo |
| Lote máximo de una posición copiada | 0 (desactivado) | Límite máximo para una copia |
| Redondeo del volumen | Más cercano | Al siguiente nivel de volumen o al inferior |
| Volumen inferior al mínimo del corredor | Omitir | Omitir la copia o utilizar el volumen mínimo |
| Rechazar si un lote vale más de x veces que el otro | 1000 | Evita asignaciones erróneas |
| Asignación manual de símbolos | vacío | Pares MASTER=RECEIVER separados por comas |
| Sugerencia de sufijo de símbolo del receptor | vacío | Por ejemplo, .cs |
| Sugerencia sobre el prefijo del símbolo del receptor | vacío | Por ejemplo, # |
| Rechazar una asignación si los precios difieren en más de % | 3,0 | 0 desactiva la casilla |
| Copiar solo estos símbolos maestros | vacío (todos) | Separados por comas |
| Nunca copiar estos símbolos maestros | vacío | Separados por comas |
| Copiar solo estos números mágicos maestros | vacío (todos) | Separados por comas |
| No copiar nunca estos números mágicos principales | vacío | Separados por comas |
| Copia inversa | false | «Comprar» se convierte en «vender»; se intercambian el stop loss y el take profit |
| Copiar stop loss y take profit | verdadero | |
| Copiar posiciones ya abiertas en el primer inicio | false | Por defecto, solo se copian las posiciones abiertas después de que el receptor se inicie |
| Omitir si el precio se ha movido más de un % desde la entrada del maestro | 0,10 | Protege contra copias tardías tras una pausa. El valor 0 lo desactiva |
| Tiempo de espera del pulso del maestro, en ms | 3000 | La copia se detiene cuando el archivo maestro tiene más antigüedad que este valor |
| Retardo si una posición maestra desaparece sin un registro cercano, s | 30 | |
| Desviación máxima, puntos | 20 | Para valores de ejecución inmediata |
| Número mágico de posiciones copiadas | 7310001 | Un receptor por cuenta y número mágico. Utiliza otro número mágico para un segundo receptor en la misma cuenta |
| Cuenta principal prevista | 0 | 0 acepta la primera cuenta principal que se detecte. De lo contrario, la copia se detiene si aparece otra cuenta en el canal |
| Mostrar el panel de estado | true | |
| Desplazamiento X/Y del panel, píxeles | 12 / 24 | |
| Alertas emergentes / Notificaciones push | verdadero / falso | |
| Registro CSV | verdadero | Common\Files\SpecMatchCopier\journal_<cuenta>_<magic>.csv |
Configuración
- Copia el EA en ambos terminales. Deben ejecutarse con el mismo usuario de Windows, ya que la carpeta Common\Files pertenece a ese usuario.
- En el terminal maestro, asocia el EA a cualquier gráfico con Modo = Maestro.
- En cada terminal receptora, asigne el EA a cualquier gráfico con Modo = Receptora y el mismo Canal.
- Activa el trading algorítmico en los terminales receptores.
- Abre una posición pequeña en el terminal maestro. El panel receptor muestra la copia y la conversión de lotes.
Probador de estrategias
El Probador de estrategias no tiene un segundo terminal. Por lo tanto, en el probador, el EA ejecuta un terminal maestro simulado:
- abre, modifica, cierra parcialmente y cierra posiciones virtuales cada pocas barras, cada una dimensionada para perder aproximadamente el 1 % del saldo en su stop loss y para utilizar como máximo el 10 % del saldo como margen
- las posiciones virtuales nunca se envían como órdenes
- copia esas posiciones virtuales a la cuenta del probador con el modo de lotes seleccionado y todas las comprobaciones previas a la operación
Esto te permite ver la lógica de copia y la conversión de lotes sin necesidad de un segundo terminal. No se trata de una estrategia de trading, y los resultados del probador no indican nada sobre los beneficios.
Limitaciones (léalas antes de comprar)
- Solo en el mismo ordenador: el maestro y los receptores deben ejecutarse en el mismo ordenador con Windows o VPS, bajo una misma cuenta de usuario de Windows. No se admite la copia a través de Internet.
- El VPS integrado de MQL5 no puede ejecutarlo. Cada terminal migrada tiene su propio almacenamiento.
- Solo de MT5 a MT5. Las órdenes pendientes no se copian; una orden pendiente se copia una vez que se ejecuta y se convierte en una posición.
- Mercados cerrados: cuando el símbolo del receptor se encuentra fuera de su sesión de negociación, no se envía nada. El copiador espera a que se abra la sesión y, a continuación, copia lo que aún sea necesario. Una nueva posición sigue estando sujeta al límite «Omitir si el precio ha variado». Un cierre que el maestro haya realizado mientras el mercado del receptor estaba cerrado se ejecuta cuando dicho mercado abre, al precio de ese momento.
- Velocidad: según mediciones realizadas en cuentas de demostración, la posición del receptor coincidió con la del maestro entre 0,2 y 1,1 s después de la operación del maestro (mediana de 0,3 s, 60 mediciones; el caso de 1,1 s se debió al cierre simultáneo de 10 posiciones en una cuenta de compensación). Esto supone 100 ms de sondeo más el tiempo de ejecución del bróker. Las copias se ejecutan a los precios propios del receptor, por lo que pueden diferir de los precios del maestro, especialmente en momentos de noticias.
- Niveles de stop loss y take profit:
- Cuando ambos símbolos cotizan en la misma divisa, se copian los niveles exactos.
- En caso contrario, por ejemplo, de XAGUSD a XAGEUR, los niveles se ajustan según la relación de precios.
- En una cuenta de compensación receptora, el SL/TP solo se copia cuando todas las posiciones del maestro en ese símbolo utilizan los mismos niveles.
- Las posiciones que cierres o reduzcas manualmente en la cuenta receptora no se modifican. Nunca se vuelven a abrir.
- Si el receptor lleva más de 48 horas desconectado: la posición maestra mantiene un registro detallado durante 48 horas. Una copia cuya posición maestra se haya cerrado antes de ese plazo no se cierra automáticamente. Pasa al estado «HOLD» con una alerta, y debes cerrarla manualmente.
- Niveles de stop rechazados al abrir: cuando el bróker rechaza el stop loss o el take profit de una nueva copia (stops no válidos, por ejemplo, un nivel de stop ampliado debido a noticias), la copia se rechaza y no se vuelve a intentar. El panel lo muestra como «RECHAZADO».
- Copias limitadas: cuando una copia está limitada por el lote máximo o por el volumen máximo del bróker, un cierre parcial en la cuenta maestra reduce la copia solo cuando el nuevo volumen ajustado es inferior al que está abierto. Hasta entonces, la copia se mantiene en el límite.
- Sin gestión de riesgos: el copiador no limita el drawdown ni la pérdida diaria y no gestiona las cuentas. Se limita a copiar lo que hace la cuenta maestra.
- Entorno de prueba:
- Probado en condiciones reales con cuentas de demostración de MetaQuotes: cuenta maestra en USD, cuenta receptora de cobertura en EUR y cuenta receptora de compensación en USD.
- El maestro también se probó en una cuenta de compensación en USD, con adiciones, una reversión de una operación, un cierre parcial y un cierre total.
- Los símbolos con sufijo, el oro de 1 oz y las cuentas en céntimos se han sometido a pruebas unitarias con especificaciones sintéticas de los brókers, no con cuentas reales.
- Por favor, pruébalo con tus brókers en cuentas de demostración antes de copiar con dinero real.
