Validaciones Modelado de Nodos

Hola. Espero se encuentren bien.

Imaginen que tengo varias condiciones de entrada (o señales) y las voy a usar en un solo lienzo para orquestarla con el “Selector Adaptativo” o el de “Votación”. ¿Qué es lo más correcto, colocar los filtros IA antes o despues del orquestador?

Les dejo los dos modelos debajo:

Opción 1 Orquestador Primero - Luego Filtros:

Opción 2 Filtros Primero - Luego Orquestador:

Hola,

Lo más coherente es poner los filtros IA antes del orquestador (tu Opción 2). Te cuento el porqué de forma directa.

En la Opción 1 el orquestador elige primero entre todas las señales y luego un único filtro decide si la señal elegida pasa o no. Eso tiene un efecto raro, a veces el Selector “elige” una estrategia pero el filtro bloquea la señal, no hay trade y el Bandit no recibe feedback en ese momento. Con el tiempo, las estrategias que el filtro bloquea más a menudo quedan con menos actualizaciones y las estadísticas del Selector se distorsionan un poco.

Si pones filtros primero (una rama Filtro + Puerta de Confianza por cada estrategia), el orquestador solo ve señales que ya han pasado el control de calidad. Así, cuando elige una estrategia, esa elección se traduce en operación y el aprendizaje del Selector es mucho más limpio: está respondiendo a “de las que en este momento son válidas, ¿cuál rinde mejor?”.

Además, cada Filtro de Señales IA aprende del flujo de una estrategia. Si pones un solo filtro después del orquestador, ese filtro recibe una mezcla de señales de distintas estrategias según lo que vaya eligiendo el Selector, y el perceptrón aprende de todo mezclado; puede ser menos estable. Con un filtro por rama, cada uno se especializa en su estrategia y el aprendizaje es más claro.

Cómo montarlo: Cada una de tus condiciones/estrategias → su Filtro de Señales IA → su Puerta de Confianza IA → y esas salidas las conectas a las entradas del Selector Adaptativo (o Votación). La salida del orquestador (selectedBuy/selectedSell) la llevas al Umbral, Agente o a las acciones. Antes de cada Filtro puedes seguir teniendo tu Y Lógico con “Entrada en Zona”, “Cruce Bajista”, etc.

Importante: que el Magic Number sea el mismo en Selector, filtros y acciones para que cada operación se atribuya bien a la estrategia elegida. En el Filtro, un passThreshold de 0.55 suele ir bien para empezar (o 0.7 si quieres ser más conservador), y recuerda que en las primeras operaciones (warmup) el filtro deja pasar todo para aprender.

La Opción 1 no es incorrecta y usa menos nodos (un solo Filtro + una Puerta después del orquestador), así que puede servir para prototipar o si quieres un único criterio de calidad común. Pero para que tanto los filtros como el Selector aprendan bien y la decisión final sea sobre señales ya cualificadas, la recomendación es Filtros primero, luego Orquestador.

Un saludo,
Ignacio

3 Me gusta

De acuerdo. Gracias. Me surge la siguiente duda: en una respuesta anterior me especificaron que el Filtro de Señal IA guarda un aprendizaje con un archivo. Entonces en el ejemplo que les puse arriba, tendria unas 4 entradas o estrategias diferentes, y como me recomiendan, cada una conectada a un Filtro de Señal IA diferente y luego al orquestador. Pero cómo haría para pasar de demo a real?

  • Debo llevarme los 4 archivos que generó la Señal Filtro IA más la del Strategy Agent y la del orquestador?
  • ¿Cómo hago diferenciar cada uno de los 4 nodos de filtro? Usando un magic number distinto me imagino, pero el Strategy Agent usaría un Magic Number distinto a los 4 filtros, cierto?

Veo que sería toda una orquestación estructural a nivel de archivos y configuración.

Saludos cordiales,

Hola Rafa,

La idea es usar un solo Magic Number en todo el EA, los cuatro Filtros de Señales IA, el Selector Adaptativo, el Agente Estratégico y las Acciones deben compartir el mismo MN. Así las operaciones se atribuyen bien y tanto los filtros como el Selector pueden aprender del historial. No hace falta un MN distinto por filtro, cada filtro tiene un índice interno (0, 1, 2, 3) y ya genera su propio archivo de aprendizaje.

En tu configuración se crean cinco archivos .bin en Common/Files, uno por cada uno de los cuatro filtros (por ejemplo AI_SF_555555_0_EURUSD.bin, AI_SF_555555_1_EURUSD.bin, etc.) y uno del Agente Estratégico (AI_QTable_555555_EURUSD.bin). El Selector Adaptativo y el Ensemble Voter no guardan archivo, reconstruyen sus estadísticas desde el historial de operaciones al arrancar el EA, así que no hay que copiar nada de ellos.

Para pasar de demo a real, abre la carpeta Common/Files en la terminal demo (Archivo → Abrir carpeta de datos o carpeta común, según MT4 o MT5, y luego Files), copia esos cinco archivos .bin y pégalos en la misma ruta Common/Files de la terminal real.

En muchas instalaciones Common/Files es compartida, así que a veces los archivos ya estarán disponibles sin copiar. Al iniciar el EA en real verás en el log que cada filtro carga su modelo con el número de trades y el win rate que tenía en demo, y el Selector empezará con probabilidades iguales y se irá adaptando según se cierren operaciones en real. Ten en cuenta que el índice de cada filtro (0, 1, 2, 3) depende del orden de los nodos en el lienzo, si cambias ese orden entre demo y real, los archivos podrían cargarse en filtros distintos, así que conviene mantener el mismo orden.

Un saludo, Ignacio.

2 Me gusta

Excelente! Super claro! Muchas gracias!

1 me gusta

Hola. Podrias mostrar un modelado de como se haria lo siguiente?

Imagina tengo una estrategia de cruce de EMAs y la tengo conectada al Strategy Agent. Y quiero colocarle un Trailing Stop, pero basado en el Porcentaje de Avace Vs el Stop Loss. El SL es basado en ATR, que es lo que maneja el Strategy Agent.

Entonces quisiera hacer lo siguiente: Cada vez que la operacion avance en positivo cierto porcentaje del tamano del SL, entonces que el SL suba ese porcentaje, es decir, se vaya protegiendo poco a poco.

Por ejemplo, tengo un SL ATR de tamano 50, y tengo un Trailing de un 10%, entonces si la operacion avanza positivamente 5, el SL se reduce a 45 en vez de 50. Si sube positiva la operacion a 10, el SL se reduce a 40 y asi sucesivamente.

Podrias mostrar graficamente como deberia ser por favor?

1 me gusta

Hola Rafa,

Entiendo lo que quieres crear, pese a que se puede crear ya con los nodos Math, voy a pasarlo como mejorar para que se meta en la próxima actualización y así crearlo como parámetro y que os sea más sencillo de activar y desactivar del flujo del EA, quizás mediante un selector.

Lo reviso todo y te comento en breve.

Un saludo,
Ignacio

3 Me gusta

Hola. Estaba repasando nuevamente los nodos y me encontré con el Ultimate Oscillator y el KST. Pero veo que no has publicado mucho acerca de estos dos indicadores, pero me parecen bien interesantes. En la información del nodo como en el repositorio hay algunos ejemplos, pero en tu experiencia usas esos nodos dentro de tus estrategias rentables? De ser así, para cuáles tipos de estrategias funcionan mejor?

Por otro lado, me surge la duda con relacion a los diferentes indicadores que funcionan como filtros, como los dos anteriores, el Hurst, Shannon, entre otros. Sin embargo, el DQN y Actor-Critic tiene unos 15 indicadores integrados, incluyendo el Hurst y Shannon, RSI, entre otros.

¿Si ya estoy usando el DQN y/o Actor-Critic en una estrategia, estaría de más usar indicadores para filtrar como Medias Móviles, Hurst, RSI, Ultimate Oscillator, KST, MFI, etc? O de todas formas son necesarios adicionarlos además de tener activo el DQN y/o Actor-Critic?

1 me gusta

Hola Rafa,

Sí claro, Ultimate Oscillator y KST (Know Sure Thing) pueden formar parte de estrategias rentables perfectamente. No son “indicadores mágicos” como ninguno que pueda existir, cada indicador tiene una función específica siempre, en contextos concretos aportan ventajas claras frente a osciladores más simples. Te explico:


Ultimate Oscillator – Dónde rinde mejor

  • Estrategias de reversión/rebote en rangos

En mercados laterales o después de extensiones fuertes, Ultimate menor 30 (sobreventa) y Ultimate mayor 70 (sobrecompra) suelen dar menos falsos que un RSI solo, porque combina tres períodos (7, 14, 28). Yo lo suelo utilizar en M15–H1 para entradas de rebote con confirmación (por ejemplo MFI o volumen).

  • Filtro de momentum antes de entrar en tendencia

Ultimate cruzando al alza 50 para compras y Ultimate cruzando en corto 50 para ventas sirve como filtro, solo operas a favor del momentum multi‑timeframe. Eso reduce entradas “contra el flujo” en estrategias de ruptura o de seguimiento de tendencia.

  • Confirmación en sistemas de ruptura

En breakouts (canales, rangos, ORB), exigir que Ultimate confirme (por ejemplo salir de sobreventa en ruptura alcista) suele filtrar falsas rupturas. Se suele usar en M15–H4 según el estilo (scalp vs swing).

Por lo que claramente se usa en estrategias rentables, sobre todo como filtro de momentum y en reversión/rebote con confirmación, no como señal única nunca.


KST (Know Sure Thing) – Dónde rinde mejor

  • Señales de cambio de tendencia (cruce de línea de señal)

KST cruza por encima de su línea de señal → sesgo alcista, cruza por debajo → bajista. Al ser 4 ROCs suavizados (Martin Pring), el ruido es menor que con un solo ROC o RSI. Funciona mejor en H1, H4 y D1, en timeframes muy bajos suele ir retrasado y no funciona igual de bien.

  • Confirmación de tendencia (KST vs cero)

KST mayor 0 = momentum alcista, KST menor 0 = bajista. Se usa mucho como filtro, solo compras si precio/MA confirman alcista y KST mayor 0 (y al revés en ventas). Muy usado en estrategias de seguimiento de tendencia en H1–D1.

  • Combinado con medias móviles

Estrategia típica: señal de compra cuando precio cruza por encima de una MA (p. ej. 50) y KST da señal alcista (cruce arriba de su línea o KST mayor 0). Así evitas comprar en retrocesos fuertes dentro de tendencia. Es uno de los usos más documentados del KST en sistemas rentables.

Sí se usa en estrategias rentables, sobre todo en tendencia y en timeframes medios/altos (H1+), como señal de cambio de momentum o como filtro de dirección.


De todos estos años haciendo algoritmos, te puedo decir que no hay un indicador que no funcione y otro que si funcionen. Funcionan todos los indicadores, pero hay que hacerlos funcionar para lo que han sido diseñados, nada más. No dejan de ser cálculos matemáticos cuya función es detectar X particularidad del mercado, y detectarla la van a detectar, por que la calculan.

La cuestión es que si no se utilizan bien, pues unos funcionarán y otros no, y de ahí que se diga que este es bueno o aquel es malo. Pero todos son fórmulas matemáticas diseñadas con un propósito y siempre que se utilicen para ese propósito, funcionarán,

Es como las herramientas, no es mejor un martillo que una sierra, pero si quieres clavar un clavo con una sierra y cortar un tablero con un martillo, pues te encontrarás con que tienes herramientas malas que no funcionan porque no te sirven para lo que tu quieres, pero el problema no es la herramienta, es el uso, y el enemigo es el desconocimiento no el indicador.

Dicho esto, esos dos indicadores son potentes, si los utilizas siguiendo las reglas de funcionamiento que te he comentado, van a funcionar para lo que han sido diseñados. Solo debes integrarlos en el flujo correcto donde su función realmente aporte valor a la estrategia.

No es bueno recargar todo de indicadores y filtros, porque estrangulamos las operativas y no por más filtrar serán mejores, suele ser al revés, cuanto más se filtren, no aumenta la calidad, si no que sobreoptimizamos desde la base dejando pasar solo algo muy muy concreto y si no es rentable, no lo será nunca porque no permitimos pasar ninguna otra opción de operativa.

Un saludo,

Ignacio

3 Me gusta

Muy claro! Muchas gracias. Sobre esto otro que te escribí, me confirmas por favor cuando puedas:

“Por otro lado, me surge la duda con relacion a los diferentes indicadores que funcionan como filtros, como los dos anteriores, el Hurst, Shannon, entre otros. Sin embargo, el DQN y Actor-Critic tiene unos 15 indicadores integrados, incluyendo el Hurst y Shannon, RSI, entre otros.”

¿Si ya estoy usando el DQN y/o Actor-Critic en una estrategia, estaría de más usar indicadores para filtrar como Medias Móviles, Hurst, RSI, Ultimate Oscillator, KST, MFI, etc? O de todas formas son necesarios adicionarlos además de tener activo el DQN y/o Actor-Critic?

1 me gusta

Muy claro! Muchas gracias. Sobre esto otro que te escribí, me confirmas por favor cuando puedas:

“Por otro lado, me surge la duda con relacion a los diferentes indicadores que funcionan como filtros, como los dos anteriores, el Hurst, Shannon, entre otros. Sin embargo, el DQN y Actor-Critic tiene unos 15 indicadores integrados, incluyendo el Hurst y Shannon, RSI, entre otros.”

¿Si ya estoy usando el DQN y/o Actor-Critic en una estrategia, estaría de más usar indicadores para filtrar como Medias Móviles, Hurst, RSI, Ultimate Oscillator, KST, MFI, etc? O de todas formas son necesarios adicionarlos además de tener activo el DQN y/o Actor-Critic?

Hola Rafa,

Es lo que te he comentado en el mensaje anterior, sobrecargar de indicadores no va a mejorar, todo lo contrario.

Solo tendría sentido meter un nuevo indicador, si lo que vaya a filtrar/detectar ese nuevo indicador, no lo está haciendo ningún otro en el flujo de forma similar.

Un saludo,

Ignacio

2 Me gusta

Hola. Sobre el KST, ¿para un cruce alcista, sería de esta manera?

Hola Rafa,

Puedes conectar ya directamente signal a value, se ha facilitado para que lo podáis utilizar directamente en casos como este con menos nodos.

Un saludo,

Ignacio

1 me gusta

Hola. Quisiera hacer lo siguiente, a ver si me das alguna idea por favor, si es visual mejor por favor.

Uso el nodo para buscar el highest de un periodo de 10 velas atras. Ese precio lo quiero guardar para usarlo como el Exit de la operación. ¿Cómo podría hacerlo?

1 me gusta

Hola Rafa,

¿Qué es lo que quieres hacer o lograr?

Para entender que es lo que necesitas realmente.

Un saludo,

Ignacio

1 me gusta

Imagina que tengo una estrategia de cruce de EMAs solo para compras. Quiero que la salida para TP sea el hightest de las ultimas 10 velas cuando se produjo el cruce de EMA’s. Y el SL el lowest de las últimas 10 velas cuando se produjo el cruce de EMA’s.

Hola, está pendiente el punto de arriba. Y aquí otra duda o validación por favor:

Imagina que en un bot quiero que se cierre la operación BUY si:

  1. Close cruza alcista la EMA 25.
  2. En el momento en que se abrió la operación, el precio de la compra debía estar por debajo de la EMA 25.

¿Es correcto este modelado? Si es correcto, ¿Para Ventas (Sell) sería usar Bid Precio Venta en vez de Ask ¿cierto?

Hola, Espero estes bien.

¿Pudiste ver mis dos últimas entradas o post de este tema?

Imagina que tengo una estrategia de cruce de EMAs solo para compras. Quiero que la salida para TP sea el hightest de las ultimas 10 velas cuando se produjo el cruce de EMA’s. Y el SL el lowest de las últimas 10 velas cuando se produjo el cruce de EMA’s.

Imagina que tengo una estrategia de cruce de EMAs solo para compras. Quiero que la salida para TP sea el hightest de las ultimas 10 velas cuando se produjo el cruce de EMA’s. Y el SL el lowest de las últimas 10 velas cuando se produjo el cruce de EMA’s.

Hola Rafa,

Para lo que comentas, si no te he entendido mal, la idea sería combinar el cruce de EMAs como señal de entrada con los indicadores Highest Price y Lowest Price para definir el TP y el SL de forma dinámica.

Para montar la estrategia, primero necesitas dos nodos de Media Móvil (MA), ambos configurados como EMA (tipo Exponential). Uno será tu EMA rápida, por ejemplo de periodo 10, y otro tu EMA lenta, por ejemplo de periodo 50. Luego conectas las salidas de ambas EMAs a un nodo Logic Crossover, que detectará automáticamente cuándo la EMA rápida cruza por encima de la lenta. La señal de ese cruce la conectas a la condición de entrada del nodo Buy.

Ahora viene la parte del TP y el SL dinámicos. Añades un nodo Highest Price con periodo 10 y priceType en HIGH, que te dará el precio más alto de las últimas 10 velas. Ese valor lo conectas a la entrada “tpPrice” del nodo Buy. De la misma forma, añades un nodo Lowest Price con periodo 10 y priceType en LOW, que te dará el precio más bajo de las últimas 10 velas, y ese valor lo conectas a la entrada “slPrice” del nodo Buy.

Lo importante es que en el nodo Buy configures el SL Mode y el TP Mode como “Dynamic Price (from input)” en lugar de pips fijos. Si lo dejas en modo pips o en ninguno, ignorará las conexiones de Highest y Lowest y no funcionará como esperas.

Hola, Espero estes bien.

¿Pudiste ver mis dos últimas entradas o post de este tema?

Si, lo vi. Pero escribes más rápido de lo que yo puedo responderte jajaja.

Un saludo,

Ignacio

1 me gusta

Hola Rafa,

A ver si entiendo lo que quieres crear. La idea general está bien planteada pero hay un detalle importante que puede hacer que no funcione como esperas. El problema está en la Comparación que verifica si Ask es menor que la EMA 25 al mismo tiempo que el Cruce Alcista detecta que el Close cruza por encima de la EMA 25.

Piénsalo así: si el cierre de la vela acaba de cruzar por encima de la EMA, es muy probable que el precio Ask en ese mismo instante también esté por encima de la EMA, así que la condición de “Ask menor que EMA” casi nunca se cumpliría al mismo tiempo que el cruce alcista. Eso haría que el Y Lógico casi nunca se active y las compras no se cierren. Si esa era tu intención, entonces está bien.

Lo que describes como “en el momento en que se abrió la operación, el precio debía estar por debajo de la EMA 25” es en realidad una condición de entrada, no de salida. Esa verificación de que Ask sea menor que la EMA debería estar en la parte del bot donde se abre la compra, no en la parte donde se cierra. Es decir, tu lógica de apertura sería algo como: si se cumple tu señal de entrada Y el Ask está por debajo de la EMA 25, entonces comprar. Y por separado, tu lógica de cierre sería simplemente: si hay compras abiertas (Contador de Órdenes con Umbral por encima de 0) Y el Close cruza alcista la EMA 25, entonces cerrar todas las compras. Con eso es suficiente, no necesitas la Comparación en la parte de cierre.

El Contador de Órdenes configurado en Solo Compra junto con el Umbral por encima de 0 está perfecto para verificar que haya operaciones de compra abiertas antes de intentar cerrarlas. Y el Cruce Alcista con el Precio Actual en Close y la Media Móvil como EMA 25 también está correcto para detectar el momento de cierre.

Y sobre tu segunda pregunta, sí, es correcto. Para ventas (Sell) usarías Bid (Precio Venta) en lugar de Ask (Precio Compra), ya que el Bid es el precio al que se ejecutan las ventas, así como el Ask es el precio al que se ejecutan las compras.

Un saludo,

Ignacio

1 me gusta