Leímos el código fuente de Quantum Queen X: tres tablas de fechas codificadas que reescriben el backtest
El código de Quantum Queen X v4.3 lleva 51 fechas históricas literales: 24 en las que no abre ninguna posición, 8 que multiplican por 15 el objetivo de beneficio y 19 que lo multiplican por 5. Todas son fechas pasadas y la última coincide con la fecha de compilación: solo pueden reescribir backtests, nunca una sesión futura. Aquí está el código original, línea por línea.

Vendemos Quantum Queen X. Es uno de nuestros EA de oro más vendidos. Precisamente por eso, cuando obtuvimos el código fuente de la v4.3, lo depuramos y preparamos su publicación por separado, tenemos que contar lo que leímos en él.
El titular: este EA lleva 51 fechas históricas concretas codificadas directamente en su código. Están repartidas en tres tablas: 24 fechas en las que no abre ninguna posición, 8 en las que multiplica por 15 la distancia de take-profit y 19 en las que la multiplica por 5. Todas son fechas ya pasadas, y la última se sitúa justo al lado de la fecha de compilación de la v4.3.
Esto no es optimización de parámetros, ni un «filtro de noticias». Es modificar el comportamiento histórico de trading sabiendo ya cómo se movió el mercado: sesgo de anticipación (look-ahead bias) o, dicho en claro, hacer trampa. Aquí está el código.
Prueba uno: 24 fechas en las que está prohibido operar
Al final del filtro de sesión ScheduleAllowsTrading(), después de las reglas legítimas (día de la semana, viernes de nóminas, corte del viernes por la noche), aparece esto:
static int pause_dates[24]=
{
20200203, 20200807, 20220125, 20220308, 20220309, 20221227,
20230310, 20230313, 20230614, 20230731, 20240703, 20240705,
20240730, 20241015, 20250226, 20250730, 20251024, 20260128,
20260129, 20260202, 20260223, 20260323, 20260402, 20260428
};
int ymd = now.year * 10000 + mmdd;
for(int i = 0; i < ArraySize(pause_dates); i++)
if(ymd == pause_dates[i])
return false; // ese día, ninguna de las 12 estrategias abre
return true;
Observe que este código no evalúa nada. No lee un calendario económico, no mide la volatilidad, no comprueba el spread. Formatea la fecha del servidor como un entero tipo 20230310 y la compara con una lista fija.
Un filtro de noticias real es una regla — «no abrir en los 30 minutos anteriores y posteriores a un dato de alto impacto» — y una regla trata igual al pasado y al futuro. Una lista solo cubre los días que están en ella. Y para meter un día en la lista, hay que saber ya qué ocurrió ese día.
El efecto es quirúrgicamente limpio: cuando el backtest llega a esos 24 días, el EA se queda quieto, y lo que esos días le habrían costado desaparece de la curva de capital. Después del 28 de abril de 2026 la tabla no puede volver a coincidir jamás: en su cuenta real es código muerto.
Prueba dos: take-profit ×15 en 8 fechas y ×5 en otras 19
Esta es más directa. El objetivo de la cesta es normalmente «precio medio ponderado de entrada ± un número fijo de puntos». En ese número fijo se ha insertado un multiplicador:
static int dates_x15[8]=
{
20210204, 20210603, 20210701, 20220119,
20250123, 20250127, 20250402, 20250724
};
static int dates_x5[19]=
{
20210112, 20210121, 20210312, 20210512, 20210907,
20211116, 20220301, 20220309, 20220602, 20250205,
20250210, 20250226, 20250227, 20250624, 20260122,
20260220, 20260319, 20260420, 20260610
};
int multiplier = 1;
for(int i = 0; i < ArraySize(dates_x15); i++)
if(ymd == dates_x15[i]) { multiplier = 15; break; }
if(multiplier == 1)
for(int i = 0; i < ArraySize(dates_x5); i++)
if(ymd == dates_x5[i]) { multiplier = 5; break; }
double average = weighted_price / total_volume;
g_basket_target_price[slot] = NormalizeRecoveredPrice(
direction > 0 ? average + target_points[slot] * multiplier * _Point
: average - target_points[slot] * multiplier * _Point);
Pongámosle cifras. En una cotización de XAUUSD con 2 decimales, un punto son 0,01 $. La estrategia 1 tiene target_points = 50, es decir, cierra con un recorrido de 0,50 $. En una fecha ×15 eso pasa a 7,50 $. Los 200 puntos de la estrategia 9 (2,00 $) pasan a 30,00 $.
Cualquier día normal se conforma con cincuenta céntimos y se retira. En estos ocho días concretos descubre de pronto la paciencia y aguanta quince veces esa distancia.
Seamos justos: ampliar el objetivo no garantiza ganar; si la cesta está en el lado equivocado, simplemente no se dispara y sigue promediando. Pero la objeción nunca fue «ampliar el objetivo». La objeción es por qué precisamente esos ocho días. En ejecución, el programa no puede saber si hoy habrá una tendencia fuerte. El único que puede saberlo es un autor repasando velas históricas y eligiendo fechas.
Por qué esto es hacer trampa y no optimizar
Optimizar parámetros es legítimo. Ajuste el periodo del DeMarker o el paso de la rejilla: obtendrá números que tratan igual a todas las fechas, y todo el mundo entiende más o menos cuánto se degrada esa ventaja fuera de muestra.
Las fechas codificadas son otra cosa, por tres motivos:
- Solo actúan sobre el pasado. Entre las tres tablas hay 51 fechas; la más reciente es el 10 de junio de 2026, y la cadena de versión de la v4.3 indica una compilación del 22/07/2026. Las tablas se mantuvieron hasta la víspera del lanzamiento — y después del lanzamiento ya no pueden coincidir con ningún día.
- No se pueden validar fuera de muestra. Justamente porque solo tocan el pasado, ninguna prueba hacia adelante puede medirlas: su aportación futura es idénticamente cero. Esa porción de beneficio del backtest no se repetirá.
- El comprador no puede verlas. Solo se descubre que existen si se tiene el código fuente. Lo que se expone en la tienda es una curva retocada, con el retoque sellado dentro de un binario compilado.
Dicho de otro modo: la curva que usted evalúa en el tester y la que obtendrá en real no las produjo el mismo conjunto de reglas. Ese es el problema de fondo.
Quite las tablas de fechas y lo que queda sigue estando sobreajustado
Doce estrategias, la mitad de ellas operan en una única hora del día
bool StrategyHourAllowed(const int slot, const int hour)
{
switch(slot)
{
case 0: return hour == 22 || hour == 23;
case 1: return hour == 3; // esta hora y ninguna otra
case 2: return hour == 22;
case 3: return hour == 19;
case 4: return hour == 0;
case 5: return hour == 23;
case 6: return hour >= 8 && hour <= 10;
case 7: return hour >= 6 && hour <= 11;
case 8: return hour >= 10 && hour <= 13;
case 9: return hour == 22;
case 10: return hour >= 4 && hour <= 8;
case 11: return hour == 8 || hour == 9;
}
return false;
}
«Esta estrategia solo abre entre las 03:00 y las 04:00» no tiene justificación de estructura de mercado. Salió de una búsqueda sobre datos históricos. Añada encima la configuración de indicadores de cada estrategia:
g_demarker_a[0] = iDeMarker(_Symbol, PERIOD_M6, 18);
g_demarker_b[0] = iDeMarker(_Symbol, PERIOD_M15, 16);
g_demarker_a[1] = iDeMarker(_Symbol, PERIOD_M15, 14);
g_demarker_b[1] = iDeMarker(_Symbol, PERIOD_M20, 20);
// ... 24 handles en total
static double upper_a[12]={0.7,0.7,0.7,0.7,0.7,0.7,0.9,0.5,0.9,0.7,0.7,0.7};
static double lower_a[12]={0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.3,0.1};
Fíjese en M6, M10, M12 y M20: periodos no estándar que ni siquiera existen en un gráfico por defecto de MT5. No hay razón operativa para una vela de 6 o de 20 minutos; solo hay una razón para elegirlas, y es que puntuaron mejor en un barrido de parámetros. Lo mismo con los umbrales: casi todos son 0,7/0,3, salvo la estrategia 7 en 0,9, la 8 en 0,5 y la banda inferior de la 12 en 0,1. Esas excepciones aisladas son la huella dactilar de «toco esta casilla hasta que la curva se alisa».
Cuente los grados de libertad: cada estrategia lleva un marco temporal de entrada, dos conjuntos de (marco del indicador + periodo + umbral superior + inferior), una ventana horaria, un paso de rejilla y una distancia objetivo: unos 13 números ajustables. Por doce, son unos 150 parámetros libres ajustados a un único símbolo.
Ocho de las doce estrategias son solo largos, y nada lleva stop loss
int StrategyDirection(const int slot)
{
...
if(slot == 4 || slot == 5 || slot == 10 || slot == 11)
return -1;
return 1; // las otras ocho son solo largos
}
// entrada: los parámetros 4 y 5 son SL y TP; ambos se pasan como 0
g_trade.Buy(volume, _Symbol, 0.0, 0.0, 0.0, SafeComment(slot));
Ocho de las doce estrategias son solo largos. Combínelo con una rejilla sin stop que promedia a la baja hasta 100 veces por estrategia y aplíquelo a 2020–2026, un tramo en el que el oro pasó de 1.500 a más de 3.000. Esa combinación a duras penas puede perder dinero en un backtest. Lo que se mide es el régimen de mercado, no la estrategia. Escribimos aparte sobre esta estructura: qué tan peligrosos son los EA de rejilla y martingala.
Conviene señalar que el único freno, InpDDMode (control de drawdown), viene desactivado por defecto.
Cambie de bróker y cambian las estrategias activadas
if(InpSets == QQ_PRESET_ICVT_HIGH)
return slot==0 || slot==1 || slot==2 || slot==4 || slot==5 ||
slot==7 || slot==8 || slot==9 || slot==11;
if(InpSets == QQ_PRESET_ICVT_MEDIUM)
return slot==0 || slot==2 || slot==7 || slot==8 || slot==11;
if(InpSets == QQ_PRESET_ROBO_ECN)
return slot==0 || slot==2 || slot==3 || slot==4 || slot==5 ||
slot==7 || slot==8 || slot==9 || slot==11;
Los publicitados «archivos set específicos por bróker» se reducen a un subconjunto distinto de números de estrategia activados según el bróker. Lo que de verdad distingue a un bróker de otro son el spread, la comisión y la calidad de ejecución, y eso pertenece a los parámetros de coste, no a «activar la estrategia 6 en el bróker A y desactivarla en el B». Esto se lee como un barrido de optimización distinto contra el histórico de cada bróker.
Sobre el código que publicamos
Para que quede claro: lo que vendemos es el código fuente MQL5 original de la v4.3, tal como lo proporcionó el autor. Solo lo depuramos por legibilidad: unificamos los comentarios en inglés, quitamos las comprobaciones de licencia y de periodo de prueba, consolidamos las doce estrategias de seis arrays paralelos en una única tabla de configuración y redujimos los más de treinta reescaneos de posiciones por tick a una sola instantánea.
No se tocó ni un número de las tablas de estrategia, las reglas horarias, los umbrales de señal ni la lógica de salida, incluidas las tres tablas de fechas que critica este artículo. No borramos nada: están íntegras en el paquete de código fuente y se señalan por su nombre en el README incluido. Si uno va a criticar algo, la gente tiene que poder abrirlo y mirarlo.
Verifíquelo usted mismo, en tres pasos
- Abra el código y busque
2021. Las tres tablas están a la vista en la sección de configuración. No hace falta ninguna herramienta. - Bórrelas y repita el mismo backtest. Fuerce
multipliera 1, vacíepause_datesy vuelva a ejecutar con idéntico símbolo, marco temporal, rango de fechas y modo de ticks reales; luego compare las dos curvas. La diferencia es lo que esas tres tablas «aportaban». Para montar una prueba que no le engañe, vea cómo hacer backtest de un EA en MT5. - Lea la señal en vivo del autor, no el backtest. En una cuenta real esas tablas no coinciden con un solo día, así que la curva en vivo es el nivel honesto de la estrategia. Para las trampas al leer una página de señal, vea verificar un EA con Myfxbook.
Entonces, ¿por qué seguimos vendiéndolo?
No vamos a fingir superioridad moral. Quantum Queen X es un EA de rejilla que funciona y que gana dinero mientras la tendencia acompaña, y su señal en vivo es pública y comprobable. Lo vendemos, y a la vez hacemos tres cosas:
- Ponerle un precio honesto. Aquí cuesta $110, no el precio que justifica un backtest retocado.
- Declarar el riesgo. La ficha del producto dice con claridad que construye posiciones en rejilla y que el drawdown flotante se dispara en movimientos unidireccionales extremos. También publicamos nuestro propio drawdown.
- Publicar el código para que cualquiera lo revise. No borramos ni una línea de esas tres tablas de fechas: están íntegras en el producto de código fuente. Si uno va a criticar algo, la gente tiene que poder verlo.
Una reflexión final para quien esté mirando ahora mismo una curva de capital: cuando una curva va de 2020 a hoy sin un drawdown serio, la pregunta no es «cuánto gana» sino «¿ya se sabía las respuestas?». Solo el código fuente puede responder a eso.
Aviso de riesgo: este es un análisis técnico de código fuente, no asesoramiento de inversión ni una calificación jurídica de la conducta del autor. Todos los EA y estrategias cuantitativas pueden perder dinero; la operativa en forex y metales preciosos es de alto riesgo: opere solo con dinero que pueda permitirse perder.
El EA analizado en este artículo

Quantum Queen X Source Code v4.3
Código MQL5 original del autor · sin comprobación de licencia · compila sin errores
¿Busca "Quantum Queen X Source Code v4.3 crackeado / descarga gratis / versión pirata"?
Los EA crackeados o pirateados ocultan puertas traseras y malware, ejecutan una lógica manipulada en silencio y nunca reciben actualizaciones: arriesga toda su cuenta de trading y cada contraseña guardada por ahorrarse una licencia.Por qué nunca debe usar un EA pirata →Nuestro Quantum Queen X Source Code v4.3 es software original: historial verificable en Myfxbook y actualizaciones continuas.
Seguir leyendo
UBS runs dozens of independent breakout sub-strategies from a single chart. Live at 11 weeks: +16.18%, 543 trades, profit factor 1.27, 11% max drawdown. More important than the numbers: without the autoloader your backtest will be wrong — which is how this EA gets misjudged.
We read every line of Quantum King 3.1's MQL5 source and compiled it. No licence checks, no trial timer, no hardcoded date tables — which is rarer than it should be. But it attaches no stop loss by default and every account-level guard ships disabled. Here's the mechanism and the boundaries.
The Gold Reaper is that rare gold EA with no grid, no martingale and a stop loss on every trade. The author's live signal has run 92 weeks: +261.56%, 71.95% win rate, 16.05% max drawdown. Here's how the strategy works, how to read that record, and who it does and doesn't suit.