Las variables dejan de ser simples contenedores en cuanto se combinan con fórmulas y se usan para memorizar el estado del mercado entre barras. Es el terreno donde AlgoWizard deja de parecerse a un editor de casillas y empieza a comportarse como un lenguaje de programación en toda regla.
Tabla de contenidos
Fórmulas matemáticas con variables
AlgoWizard ofrece un conjunto de funciones matemáticas combinables con variables e indicadores para construir fórmulas complejas.
| Operación | Descripción | Ejemplo de uso |
| Plus (+) | Suma dos valores. | EMA(14) + 10 pips |
| Minus (-) | Resta dos valores. | EMA(14) - 10 pips |
| Multiply (*) | Multiplica dos valores. | ATR(14) * 1.5 |
| Divide (/) | Divide dos valores. | Precio / 2 |
| Sin / Cos | Funciones trigonométricas. | Análisis cíclico |
| Get Value | Obtiene el valor de un indicador. | RSI(14) en barra -1 |
El flujo recomendado es colocar primero el operador matemático, que divide automáticamente el espacio en dos ramas —izquierda y derecha—, rellenar cada rama con su valor (indicador, variable o número) y anidar operadores adicionales si la fórmula lo requiere.
El error más frecuente: sumar pips como si fueran precio
Sumar o restar un número directamente al precio de un indicador se interpreta como unidades de precio, no como pips, y el error puede ser enorme dependiendo del activo.
ATENCIÓN
Si la EMA de XAUUSD (oro) está en 2.000 dólares y le sumas 20 directamente, el resultado será 2.020 dólares, no 2.000 más 20 pips. Para el oro, 20 pips equivalen aproximadamente a 0,20 dólares. La diferencia entre ambos resultados puede desvirtuar por completo la estrategia.
La función correcta para esta conversión es Convert Pips to Price, disponible en Functions dentro del editor (con su inversa, Convert Price to Pips). Toma el número de pips indicado y lo convierte al valor de precio equivalente para el activo y timeframe con el que se está trabajando, de forma que la suma o resta es correcta independientemente del instrumento.
| Fórmula | Resultado |
| variable 'precio' = EMA(14) + convert_pips_to_price(10) | Correcta: suma 10 pips reales al valor de la EMA. |
| variable 'precio' = EMA(14) + 10 | Incorrecta: suma 10 unidades de precio, no 10 pips. |
CLAVE PRÁCTICA
En lugar de escribir el número de pips fijo dentro de la función de conversión, guárdalo en una variable independiente (por ejemplo 'pips', tipo Double). Esto permite modificar el valor desde el panel del robot en MetaTrader sin recompilar, optimizarlo durante el backtesting y reutilizarlo en varias partes de la estrategia.
El orden de ejecución determina cuándo se actualiza cada variable
AlgoWizard ejecuta la lógica de izquierda a derecha entre pestañas y, dentro de cada pestaña, de arriba abajo. Este flujo se repite en cada apertura de nueva barra, y es lo que garantiza que cualquier variable calculada en la pestaña de Cálculos esté disponible y actualizada cuando el programa llegue a evaluar las condiciones de entrada.
| Orden | Pestaña | Qué ocurre |
| 1 | Calculations (Cálculos) | Se actualizan todas las variables y fórmulas en cada nueva barra. |
| 2 | Trade Signal | Se evalúan las condiciones de entrada/salida usando los valores ya actualizados. |
| 3 | Long Entry / Short Entry | Se ejecutan las órdenes si se cumplen las condiciones. |
| 4 | Long Exit / Short Exit | Se gestionan los cierres de posición. |
Contadores: memoria de estado entre distintas barras
Los contadores son variables de tipo Integer que actúan como memoria del mercado entre barras, y permiten construir condiciones que no tienen que cumplirse en la misma vela. Imagina una entrada que requiere que el RSI(14) caiga por debajo de 30 y que, algunas velas después, el precio cruce al alza la EMA(14): con una entrada estándar ambas condiciones deberían coincidir en la misma barra; con un contador, la primera condición queda memorizada hasta que se cumple la segunda.
| Paso | Acción |
| 1 | Crear una variable Integer, por ejemplo 'contador_1', con valor inicial 0. |
| 2 | En Calculations, añadir una regla IF: SI RSI(14) < 30 ENTONCES contador_1 = 1. El contador se queda en 1 aunque el RSI vuelva a subir. |
| 3 | En Long Entry, añadir la condición contador_1 > 0 combinada con el cruce alcista de la EMA(14). |
| 4 | Justo después de ejecutar la orden en Long Entry, resetear el contador a 0 (paso obligatorio). |
ATENCIÓN
Resetear el contador tras la entrada es un paso crítico. Si no se hace, el contador se queda permanentemente en 1 y la condición del RSI queda activa para siempre, ignorando futuras lecturas reales del indicador.
Contador de operaciones acumuladas
Además de los contadores de estado (0 o 1), se pueden crear contadores que lleven la cuenta acumulada de operaciones ejecutadas, incrementando su valor en 1 cada vez que se abre una posición (contador_2 = contador_2 + 1 dentro de Long Entry, justo después de la orden). Para verificarlo, basta con añadir la variable al módulo Debug/Backtesting y comprobar que su valor asciende de forma consistente con cada nueva operación.
Entre los usos avanzados de este tipo de contador están limitar el número máximo de operaciones abiertas simultáneamente, ejecutar una acción especial cada N operaciones, implementar lógica de martingala o anti-martingala contando rachas, o registrar por separado el número de operaciones ganadoras y perdedoras.
Tabla resumen: tipos de variables y sus usos
| Tipo | Valores | Uso principal |
| Integer | Números enteros | Contadores, número de operaciones |
| Double | Números decimales | Precios, pips, indicadores |
| Boolean | True / False | Flags de estado on/off |
| String | Texto | Comentarios de orden |
Buenas prácticas y errores frecuentes
| Buena práctica | Razón |
| Resetear siempre los contadores tras usarlos | Si no se resetean, la condición queda activa permanentemente. |
| Usar convert_pips_to_price() para sumas/restas de pips | Sumar un número fijo al precio no equivale a sumar pips. |
| Colocar los cálculos antes que las condiciones de entrada | AlgoWizard ejecuta de arriba a abajo; el cálculo debe preceder al uso. |
| Parametrizar los pips como variable Double | Permite optimizarlos en backtesting y modificarlos desde MT4. |
NOTA
Las variables no se reinician solas entre barras salvo que se les asigne un nuevo valor. Esta persistencia es precisamente lo que hace posibles los contadores, pero también puede causar errores difíciles de detectar si no se gestiona con cuidado.
Preguntas frecuentes (FAQs)
¿Por qué el resultado de mi fórmula de pips no coincide con lo esperado?
Casi siempre porque se sumó un número directamente al precio de un indicador en lugar de convertirlo primero con convert_pips_to_price(). El error es más visible en activos con precios altos, como el oro o los índices.
¿Se puede exigir que dos condiciones se cumplan en velas distintas?
Sí, mediante un contador: una regla en Calculations memoriza que la primera condición se cumplió, y esa memoria se usa como condición adicional en la entrada, junto a la segunda condición evaluada en tiempo real.
¿Qué pasa si olvido resetear un contador de estado?
El contador se queda en 1 de forma permanente y la condición que memorizaba queda activa para siempre, desconectada de las lecturas reales del indicador que la originó.
¿Cómo verifico que una variable toma el valor correcto durante el backtest?
Activando el módulo Debug (DBA) y añadiendo esa variable a la monitorización; los resultados del backtest incluirán una pestaña con su valor histórico vela a vela.
Sigue leyendo el contenido de esta serie
AlgoWizard en StrategyQuant X: gestión avanzada de posición y estrategias intermercado
El Builder genético explora un espacio de búsqueda amplio de forma automática. Algo Wizard es la...
AlgoWizard en StrategyQuant X: interfaz y estructura general
Antes de escribir la primera condición, conviene recorrer la interfaz sin prisa. AlgoWizard...
AlgoWizard: lógica interna y orden de ejecución en StrategyQuant X
AlgoWizard parece, a primera vista, un editor visual de casillas y desplegables. Pero por debajo...
AlgoWizard: Tipos de entrada (Market, Stop, Limit y encadenamiento)
Definir cuándo entrar es solo la mitad del trabajo. Cómo se ejecuta esa entrada —a mercado,...
AlgoWizard: Tipos de salida y gestión del cierre de posiciones
Una operación puede cerrarse de dos formas distintas en AlgoWizard, y ambas pueden convivir en la...
AlgoWizard: Variables (Integer, Double, Boolean y String)
Las variables son lo que separa una estrategia con valores fijos de un robot capaz de recordar...
AlgoWizard: Templates y optimización de estrategias en el Builder
El template es el punto donde AlgoWizard y el Builder genético dejan de ser dos herramientas...
AlgoWizard IA: generación de estrategias con inteligencia artificial
AlgoWizard incorpora un asistente de inteligencia artificial capaz de generar estrategias de...
Escáner de ventaja horaria con AlgoWizard: guía paso a paso
NOTA Este es un caso práctico completo: cómo usar Algo Wizard y la Optimización Simple de...










