Actualización 23-02-2026

Hola Rafa,

Te explico, a ver si me hago entender:

1. ¿El .bin se sobrescribe en cada backtest?

Sí. Al final de cada backtest se escribe el mismo archivo (p. ej. AI_DQN_12345_EURUSD.bin), así que el siguiente run lo sobrescribe.


2. Semilla 0 → ¿mismos resultados si repito el backtest?

No con semilla 0. Con ReproducibilitySeed = 0 cada run usa una semilla distinta (GetTickCount()), así que los resultados cambian.

Entonces:

  • Run 1 (sin .bin): entrena desde cero y guarda .bin.

  • Run 2 (con .bin): carga el .bin de Run 1 y continúa desde ahí.

Run 2 no es una repetición de Run 1, sino una continuación.

Para reproducir exactamente un backtest:

  • Usar ReproducibilitySeed > 0 (p. ej. 12345) y

  • Borrar el .bin entre ejecuciones (en Common/Files/).


3. Semilla 0 vs semilla 123

Correcto. Misma configuración, distinta semilla → resultados distintos. Cada semilla genera una trayectoria distinta (inicialización, exploración, etc.).


4. Optimización: ¿semilla fija o variable?

Según lo que tu buscas: semilla fija (p. ej. ReproducibilitySeed = 12345).

  • Todas las pasadas usan la misma semilla.

  • Los resultados son comparables.

  • El mejor resultado es reproducible: mismos parámetros + misma semilla.

Si usas semilla 0: Cada pasada tendría una semilla distinta. Para reproducir el mejor resultado tendrías que buscar en el Journal qué semilla usó esa pasada.


5. Tras optimizar: ¿qué semilla usar en el backtest?

Usa la misma semilla fija que en la optimización (p. ej. 12345).

Importante: Borra el .bin antes del backtest de verificación. Si no lo borras, el EA puede cargar un modelo anterior y el resultado no coincidirá con la optimización.


6. Demo/real: ¿misma semilla?

No hace falta. En demo/real lo importante es:

  • Mismo Magic Number y símbolo para que cargue el .bin correcto.

  • La semilla puede ser 0 o cualquier valor; no afecta la carga del modelo ya entrenado.


7. ¿Un parámetro de semilla por bot o por nodo?

Uno por bot. Hay un único generador de números aleatorios; el parámetro controla todo el EA, incluidos todos los nodos IA.

Igualmente, si quieres ampliar, tienes toda la información en el capítulo: 10.21: Entrenamiento de Nodos IA con Backtest Histórico.

Si crees que hay alguna forma en la que se puedas aplicar/entender/controlar esto de forma más sencilla para ti que te ayude a avanzar más rápido, dímelo sin problema y lo analizamos. Ahora en marzo vamos a sacar una actualización importante, por lo que se podría analizar y si es viable, quizás implementar en el despliegue.

De todas formas me lo apunto para grabarlo en uno de los próximos vídeos para ponerlo con un ejemplo claro.

Un saludo,

Ignacio

2 Me gusta

Gracias por la información, aquí debajo escribo a ver si entendí (disculpa si soy un poco lento o preguntón):

Procedimiento:

  1. Abro el tester con un bot que tiene IA, por ejemplo, Strategy Agent. Quiero hacer una optimización.

  2. Seteo los parámetros que quiero evaluar para que se modifiquen y encontrar la mejor combinación, pero modifico la semilla y le coloco cualquier número diferente a 0, en este ejemplo 123.

  3. Al concluir la optimización, se muestra la tabla con el desempeño de cada combinación. Tomo una de esas combinaciones (por ejemplo la mejor) y coloco esos parámetros en el setup del bot pero ahora para hacerle BACKTEST, pero debo colocar en la SEMILLA el valor 123, para así obtener los mismos resultados y que con ese backtest se generen los archivos .bin.

  4. Voy a demo y coloco los mismos parámetros que fueron exitosos en el backtest y el mismo magic number. No tengo que colocarle la misma semilla, sino que puedo dejar la semilla = 0.

¿Es así?

Hola Rafa,

Si, lo has entendido bien.

No te preocupes por preguntar todo lo que necesites.

Un saludo,

Ignacio

1 me gusta

Hola. Tengo un reporte o duda y un feedback positivo:

Feedback:

Volvía generar 1 de los bots para probar lo de la semilla, y funcionó. El proceso (rápido) fue el siguiente: Colocar 123 en la semilla, correr optimización, borrar archivos .bin generados, correr backtest con los mismos parámetros. Resultado: Dio exactamente igual.

Reporte / Duda

El bot que tengo hace lo siguiente, usa el Neural Predictor y al final tiene un Strategy Agent. Sin embargo, tengo dos caminos opcionales, el primero va directo al Strategy Agent, y el segundo pasa primero por un DQN. Cuando activo el camino sin DQN, no genera trades. Cuando lo activo para que sí pase por el DQN primero, sí genera trades.

Con el bot anterior (el que no tenía la semilla) no sucedía de esa manera, sino que sí generaba trades por el camino solo. El bot no fue modificado, es el mismo, simplemente que lo volví a generar para que viniera con el parámetro de la semilla.

Me preocupa muchísimo que ahora el comportamiento sea distinto.

Hola Rafa,

Gracias por el feedback y por el reporte detallado.

Sobre el feedback de la semilla, excelente, exactamente así es como debe funcionar. El proceso que describes es el correcto y me alegra que hayas podido verificar la reproducibilidad.

Sobre el reporte, lo que describes es un comportamiento esperable y normal en sistemas que utilizan Inteligencia Artificial, no debe preocuparte nada. Te lo explico y te digo como puedes controlarlo si quieres:

Los nodos IA (Neural Predictor, DQN, Strategy Agent, etc.) inicializan sus pesos internos de forma aleatoria cada vez que se genera el código del bot. Esto es análogo a lo que ocurre con cualquier sistema de IA generativa, si le pides a una IA de imágenes que genere “un paisaje de montaña al atardecer” dos veces con el mismo prompt, obtendrás dos imágenes que responden correctamente al prompt, ambas serán paisajes de montaña al atardecer, pero con interpretaciones ligeramente diferentes, quizás un tono más cálido, las nubes en otra posición, la silueta de las montañas con otra forma. No es un error, es la naturaleza probabilística de la IA.

En el caso de tu bot, al regenerar el código, el Neural Predictor recibió una inicialización aleatoria diferente a la anterior. Sus predicciones siguen siendo válidas y basadas en los mismos datos de mercado, pero la “interpretación” interna cambió ligeramente. El camino directo (Neural Predictor → Strategy Agent) depende exclusivamente de la calidad de las señales del Neural Predictor, por lo que es más sensible a estas variaciones de inicialización. En cambio, el camino que pasa por el DQN funciona porque el DQN es un agente de Reinforcement Learning autónomo que toma sus propias decisiones de trading con su propia lógica interna, por lo que es mucho menos dependiente de las señales que recibe.

Esto en trading tiene una ventaja real, cada regeneración produce una variante ligeramente diferente de la estrategia, lo que permite explorar distintos “perfiles” del mismo diseño, al contrario de como funciona un bot estático (que es lo que quieres lograr entiendo, un bot estático con IA).

Es como tener múltiples traders que siguen la misma metodología pero cada uno con su propia lectura del mercado. De hecho, en trading algorítmico profesional, esta diversificación de inicialización se utiliza intencionalmente para crear ensembles (conjuntos) de estrategias que, al operar simultáneamente, reducen el riesgo conjunto.

Dicho esto, entiendo perfectamente que en casos como el tuyo, se busca consistencia total. Por ello, en esta segunda parte de la actualización de marzo (que sale hoy), hemos extendido la función de reproducibilidad para que la semilla se propague a todos los nodos IA y cálculos del flujo, no solo a los principales. De este modo, si estableces ReproducibilitySeed con un valor fijo (por ejemplo, 123), todos los nodos IA del bot recibirán una sub-semilla determinista derivada, garantizando que cada regeneración produzca exactamente el mismo bot con el mismo comportamiento perdiendo la ventaja de la diversificación, pero ganando en reproducibilidad (si no se quiere perder, solo es dejar la semilla = 0).

Importante que debes tener en cuenta — la contrapartida de usar semilla fija vs. aleatoria (0):

  • Semilla fija (ej: 123): Garantiza reproducibilidad al 100%. Cada regeneración, optimización y backtest dará los mismos resultados. Ideal para validación, comparación de parámetros y auditoría. La desventaja es que “fijas” la IA a una única interpretación del mercado. Si esa inicialización concreta resulta ser subóptima para ciertas condiciones de mercado, no tienes variabilidad para explorar alternativas y el algoritmo no podrá mejorar ni evolucionar más allá.

  • Semilla aleatoria (0): Cada generación produce una variante fresca. Permite explorar diferentes perfiles de la misma estrategia y seleccionar el mejor. La desventaja es que no puedes reproducir exactamente un resultado anterior sin guardar la semilla y utilizarla posteriormente.

Lo que yo hago, uso semilla 0 durante la fase de exploración y diseño (genera varias veces, compara resultados, quédate con el mejor). Una vez que encuentro un resultado que me convence, regenero con una semilla fija para “congelar” ese comportamiento y poder reproducirlo siempre, pero no antes de explotar la fase de exploración.

Para tu caso concreto, regenera tu bot ahora por la tarde (con la actualización de hoy ya aplicada), prueba con semilla 0 y el camino directo debería funcionar correctamente o si quieres fijar ese resultado, regenera de nuevo con una semilla fija.

Un saludo,

Ignacio

Hola Rafa,

Te paso vídeo que creo que se va a entender mejor:

Un saludo,

Ignacio

1 me gusta

Gracias por la explicación. Déjame ver si entendí ¿Cada vez que genero un bot con IA desde Techain, su comportamiento será distinto, al menos que lo genere con una semilla diferente a 0?

A pesar de todo eso, en verdad me preocupa el tema de que antes me generaba muchos trades por el camino solo Predictor y ahora me genera 0 trades. Incluso hice backtest en MT5 poniendo la semilla en 0 a ver si era eso y nada.

Hola Rafa,

Aclaro porque creo que hay una confusión importante, igualmente te he pasado un vídeo justo antes de tu comentario aquí en el hilo.

Los bots que se generan desde Techain no se modifican con la semilla, esto solo es un parámetro configurable para cuando estás ya en el MetaTrader.

Un saludo,

Ignacio

1 me gusta