
Métodos de William Gann (Parte II): Creación del indicador Cuadrado de Gann
Introducción
William Delbert Gann, un legendario comerciante y analista técnico de principios del siglo XX, dejó un rico legado de herramientas y técnicas de análisis de mercado. Entre sus numerosos desarrollos, el Cuadrado de 9 ocupa un lugar especial. Es una herramienta misteriosa y multifacética que combina elementos de geometría, numerología y astrología.
El cuadrado 9 de Gann es una secuencia de números en espiral dispuestos en un cuadrado de 9x9. Esta herramienta se utiliza para pronosticar niveles de precios y ciclos de tiempo importantes en los mercados financieros. A pesar de su naturaleza esotérica, el Cuadrado de 9 sigue atrayendo la atención de los operadores modernos que buscan enfoques poco convencionales para el análisis de los mercados.
En este artículo, nos sumergiremos en el mundo del Cuadrado de 9 de Gann e intentaremos llevar su concepto a la era digital creando un indicador para la plataforma MetaTrader 5 utilizando el lenguaje de programación MQL5. Nuestro objetivo es desarrollar una herramienta que permita a los operadores visualizar y aplicar los principios del Cuadrado de 9 en sus operaciones, combinando la sabiduría de Gann con la tecnología moderna.
Repasaremos los fundamentos teóricos de Cuadrado de 9, recorreremos paso a paso el proceso de creación del indicador y discutiremos su aplicación práctica y sus posibles limitaciones. Tanto si es usted un experto desarrollador de sistemas de negociación como si simplemente le interesan los métodos no convencionales de análisis de mercado, este artículo le proporcionará información valiosa y conocimientos prácticos para ampliar su caja de herramientas analíticas.
Emprendamos un fascinante viaje tras los pasos de William Gann y creemos un puente entre sus brillantes ideas y el mundo moderno del trading algorítmico.
Base teórica del Cuadrado de Gann de 9
El Cuadrado de 9 de Gann es una herramienta única de análisis técnico que combina elementos de geometría, numerología y astrología. El método se basa en la idea de que los precios y el tiempo en los mercados financieros se mueven en patrones espirales que pueden representarse como una secuencia numérica situada en un cuadrado de 9x9.
La construcción del cuadrado 9 comienza con la celda central, a la que se asigna el número 1. A continuación, los números se colocan en espiral en el sentido contrario a las agujas del reloj, llenando el cuadrado hasta 81 (9x9). Cada noveno número de esta secuencia forma una «cruz cardinal», un punto clave que Gann consideraba especialmente importante para el análisis del mercado.
Según la teoría de Gann, los números del cuadrado de 9 corresponden a niveles de precios e intervalos de tiempo. Creía que el mercado tendía a reaccionar a estos niveles, creando puntos de inflexión, soporte o resistencia. Se da especial importancia a los números que están en la misma línea o en relaciones armoniosas entre sí.
Gann también relacionó el Cuadrado de 9 con conceptos astrológicos, afirmando que los ángulos entre los números del cuadrado corresponden a determinados aspectos planetarios. Esto añade una dimensión temporal al análisis, permitiéndonos prever no sólo los niveles de precios, sino también las posibles fechas de acontecimientos importantes en el mercado.
Es importante señalar que la interpretación del Cuadrado de 9 suele ser subjetiva y requiere experiencia. Los operadores utilizan esta herramienta de diferentes maneras: algunos se centran en los niveles de precios, otros en los ciclos temporales y otros combinan ambos enfoques.
A pesar de su carácter esotérico, el Cuadrado de 9 de Gann sigue atrayendo la atención de los operadores modernos. Su valor reside en su capacidad para ofrecer una perspectiva única de los movimientos del mercado que puede complementar los métodos tradicionales de análisis técnico.
En el contexto de la creación de un indicador MetaTrader 5, nuestra tarea consistirá en transformar estos conceptos teóricos en algoritmos capaces de generar señales comerciales y representaciones visuales específicas. Esto permitirá a los operadores integrar las ideas de Gann en el moderno entorno de negociación digital.
Aspecto matemático del Cuadrado de Gann de 9
A pesar de sus raíces esotéricas, el Cuadrado de 9 de Gann tiene una estructura matemática clara. Comprender esta estructura es fundamental para crear un indicador preciso y eficaz. Veamos los principios matemáticos básicos en los que se basa el Cuadrado de 9:
- Construcción del cuadrado: El cuadrado de 9 es una secuencia en espiral de números del 1 al 81, dispuestos en una matriz de 9x9. Matemáticamente, puede representarse como una función de las coordenadas (x, y) al cuadrado.
- Secuencia en espiral: Los números se disponen en espiral en el sentido contrario a las agujas del reloj. Esto puede describirse mediante ecuaciones paramétricas de la espiral en forma discreta.
- Relaciones angulares: Gann hizo especial hincapié en las relaciones angulares entre números. Estas relaciones pueden expresarse mediante funciones trigonométricas, teniendo en cuenta la posición de los números al cuadrado.
- Proyecciones de precios: Se utilizan diversas transformaciones matemáticas, que a menudo implican raíces logarítmicas o cuadradas, para convertir números cuadrados en niveles de precios.
- Ciclos temporales: El aspecto temporal de Cuadrado de 9 puede expresarse mediante la aritmética modular, en la que cada revolución completa de la espiral corresponde a un ciclo determinado.
- Cruz cardinal: Los números que forman la cruz cardinal (cada nueve números) pueden expresarse como una progresión aritmética con un paso de 9.
- Relaciones armónicas: Las relaciones armónicas entre los números de un cuadrado pueden describirse en términos de simples proporciones numéricas o ángulos en grados.
- Raíz cuadrada del precio: Gann utilizaba a menudo la raíz cuadrada del precio en sus cálculos, lo que añade otro nivel de manipulación matemática.
- Aritmética modular: Muchos cálculos en Cuadrado de 9 se basan en los principios de la aritmética modular, especialmente con el módulo 9.
Para crear un indicador en MQL5, necesitamos transformar estos conceptos matemáticos en algoritmos específicos. Esto incluye el desarrollo de funciones para generar el Cuadrado de 9, calcular relaciones angulares, proyectar números en una escala de precios y determinar ciclos temporales.
Es importante señalar que, aunque las matemáticas del Cuadrado de 9 son exactas, su interpretación y aplicación a los mercados sigue siendo en gran medida subjetiva. Nuestro objetivo al crear el indicador es proporcionar a los usuarios una herramienta flexible que les permita experimentar con diversos aspectos de la Teoría de Gann, basándose en cálculos matemáticos precisos.
Preparándose para crear un indicador
Comencemos definiendo las funciones básicas de nuestro indicador Cuadrado de Gann de 9. Necesitaremos trazar el cuadrado en el gráfico, calcular niveles de precios importantes y mostrar ciclos de tiempo. Luego pensaremos en las configuraciones proporcionadas a los usuarios. Pueden ser: El número inicial para el Cuadrado 9, la escala para convertir a precios y la elección de colores para las líneas y el texto.
Es importante planificar cómo vamos a almacenar los datos. Necesitaremos una matriz para el Cuadrado de 9 números, así como listas para almacenar los precios y fechas calculados.
El siguiente paso es desarrollar los algoritmos básicos. Tendremos que crear funciones para generar el Cuadrado de 9, traducir sus cifras en niveles de precios y calcular fechas para los ciclos temporales. Pensemos en la mejor manera de mostrar toda esta información en el gráfico. Tenemos que decidir cómo mostrar el propio Cuadrado de 9 y dónde colocar los niveles de precios y las fechas.
No nos olvidemos de las pruebas. Preparemos métodos para comprobar la exactitud de nuestros cálculos y probemos el indicador en diferentes marcos temporales. También es importante estudiar las características del trabajo en MQL5, especialmente en relación a la creación de elementos gráficos y funciones matemáticas disponibles.
Esta preparación sentará una base sólida para crear un indicador del Cuadrado de Gann de 9 eficiente y fácil de usar.
Estructura del código indicador del Cuadrado de 9 de Gann
Al desarrollar el indicador Cuadrado de 9 de Gann para MetaTrader 5, es importante crear una estructura de código clara y lógica. Esto hará que sea más fácil comprender, depurar y mejorar aún más el indicador. Veamos los componentes principales que deben incluirse en nuestro código.
Primero necesitamos declarar e inicializar las variables. Vamos a definir variables globales para almacenar la configuración del indicador y crear matrices para almacenar los datos de Cuadrado de 9 y los valores calculados.
- La función OnInit() se utilizará para inicializar los parámetros del indicador y crear los objetos gráficos necesarios.
- La función OnDeinit() borrará todos los objetos gráficos creados cuando se borre el indicador.
- La función OnCalculate() es la función principal del indicador, llamada en cada tick. Aquí es donde se realizarán los cálculos principales y se actualizará la pantalla.
Aplicación de los componentes clave del indicador
Veamos el código «en blanco» de Cuadrado de 9:
//+------------------------------------------------------------------+ //| GannSquare9 | //| Copyright 2024, Shtenco | //| https://www.mql5.com/ru/users/koshtenko | //+------------------------------------------------------------------+ #property copyright "Copyright 2023, Evgeniy Koshtenko" #property link "https://www.mql5.com/ru/users/koshtenko" #property version "1.00" #property description "Gann Square of 9 Price and Time Levels Indicator" #property indicator_chart_window // Input parameters input double StartNumber = 1; // Starting number for the Gann Square input color PriceLevelColor = clrDodgerBlue; // Color of the price levels input color TimeLevelColor = clrRed; // Color of the time levels input int LevelsToShow = 50; // Number of levels to display input datetime EndDate = D'2024.08.14 00:00'; // End date for calculations input double PriceStepDivisor = 10.0; // Divisor for price step (higher value = more levels) // Global variables double price_levels[]; datetime time_levels[]; double price_scale; int time_scale; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { // Validate inputs if(StartNumber <= 0 || LevelsToShow <= 0 || EndDate <= 0 || PriceStepDivisor <= 0) { Print("Invalid input parameters"); return INIT_PARAMETERS_INCORRECT; } // Calculate scales CalculateScales(); // Calculate and draw levels CalculateLevels(); DrawLevels(); return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { // No calculations needed for this indicator return(rates_total); } //+------------------------------------------------------------------+ //| Calculate price and time scales | //+------------------------------------------------------------------+ void CalculateScales() { double current_price = SymbolInfoDouble(_Symbol, SYMBOL_BID); price_scale = current_price / (StartNumber * StartNumber); datetime current_time = TimeCurrent(); time_scale = (int)MathMax(1, (EndDate - current_time) / (86400 * StartNumber * StartNumber)); // in days } //+------------------------------------------------------------------+ //| Calculate price and time levels | //+------------------------------------------------------------------+ void CalculateLevels() { ArrayResize(price_levels, LevelsToShow); ArrayResize(time_levels, LevelsToShow); for(int i = 0; i < LevelsToShow; i++) { double price_square = MathPow(StartNumber + i / PriceStepDivisor, 2); int time_square = (StartNumber + i) * (StartNumber + i); price_levels[i] = price_scale * price_square; time_levels[i] = EndDate - time_scale * time_square * 86400; // Convert days to seconds } } //+------------------------------------------------------------------+ //| Draw levels on the chart | //+------------------------------------------------------------------+ void DrawLevels() { for(int i = 0; i < LevelsToShow; i++) { // Draw price level string price_name = "GannPriceLevel_" + IntegerToString(i); ObjectCreate(0, price_name, OBJ_HLINE, 0, 0, price_levels[i]); ObjectSetInteger(0, price_name, OBJPROP_COLOR, PriceLevelColor); ObjectSetInteger(0, price_name, OBJPROP_STYLE, STYLE_SOLID); ObjectSetInteger(0, price_name, OBJPROP_WIDTH, 1); ObjectSetString(0, price_name, OBJPROP_TOOLTIP, "Gann Price Level " + DoubleToString(price_levels[i], _Digits)); // Draw time level string time_name = "GannTimeLevel_" + IntegerToString(i); ObjectCreate(0, time_name, OBJ_VLINE, 0, time_levels[i], 0); ObjectSetInteger(0, time_name, OBJPROP_COLOR, TimeLevelColor); ObjectSetInteger(0, time_name, OBJPROP_STYLE, STYLE_DOT); ObjectSetInteger(0, time_name, OBJPROP_WIDTH, 1); ObjectSetString(0, time_name, OBJPROP_TOOLTIP, "Gann Time Level " + TimeToString(time_levels[i], TIME_DATE|TIME_MINUTES)); } } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { ObjectsDeleteAll(0, "GannPriceLevel_"); ObjectsDeleteAll(0, "GannTimeLevel_"); } //+------------------------------------------------------------------+
Este indicador es una interpretación moderna del concepto del Cuadrado de 9 de William Gann, adaptado para la plataforma MetaTrader 5. Visualiza los niveles de precios y de tiempo basándose en los principios de Gann, proporcionando a los operadores una herramienta única para el análisis del mercado y la toma de decisiones comerciales.
Entradas del indicador:
- StartNumber - número inicial para construir el Cuadrado de 9.
- PriceLevelColor y TimeLevelColor - colores para mostrar los niveles de precio y tiempo, respectivamente.
- LevelsToShow - número de niveles a mostrar.
- EndDate - fecha final para cálculos y pruebas sobre datos históricos.
- PriceStepDivisor - frecuencia de los niveles de precios.
Las variables globales se utilizan para almacenar y procesar datos. Las matrices price_levels[] y time_levels[] almacenan los niveles de precio y tiempo calculados, respectivamente. Las variables price_scale y time_scale se utilizan para escalar valores de precio y tiempo.
La función CalculateScales() determina automáticamente las escalas de precio y tiempo en función del precio actual del instrumento y la fecha de finalización especificada. CalculateLevels() realiza cálculos de nivel de precio y tiempo. Los niveles de precios se calculan utilizando una función cuadrática y un divisor adicional para aumentar la frecuencia de los niveles, mientras que los niveles de tiempo se basan en el cuadrado de un número, lo que está en línea con la teoría de Gann. DrawLevels() es responsable de visualizar los datos creando líneas horizontales para los niveles de precios y líneas verticales para los niveles de tiempo en el gráfico.
El indicador proporciona a los operadores una representación visual de los niveles de precio y tiempo basados en los principios del Cuadrado de 9 de Gann. Esto puede ser especialmente útil para los traders interesados en métodos de análisis técnico no tradicionales y que buscan herramientas adicionales para confirmar sus ideas comerciales.
Las características de esta implementación incluyen la capacidad de personalizar la frecuencia de los niveles de precios para un análisis más detallado, flexibilidad para elegir la fecha de finalización para el análisis histórico y una combinación de niveles de precio y tiempo en un solo gráfico.
Las posibles mejoras al indicador pueden incluir agregar alertas cuando el precio o el tiempo alcanzan niveles clave, implementar la actualización automática de niveles cuando el precio cambia significativamente, la integración con otros métodos de análisis de Gann para crear un sistema comercial integral y optimizar el rendimiento para trabajar en marcos de tiempo más grandes y con una gran cantidad de niveles.
Visualizando el Cuadrado de 9 niveles en el gráfico
Los niveles de precios se muestran como líneas horizontales en el gráfico. Cada línea representa un nivel potencial de soporte o resistencia calculado según los principios del Cuadrado de Gann de 9. El color de estas líneas está determinado por el parámetro personalizado PriceLevelColor, lo que permite a los operadores personalizar la visualización según sus preferencias y estilo de gráfico. Las líneas horizontales se distribuyen a lo largo del eje vertical del gráfico, con su densidad controlada por el parámetro PriceStepDivisor. Esto permite a los operadores ajustar la cantidad de niveles de precios que se muestran, encontrando un equilibrio entre el detalle y la legibilidad del gráfico.
Los niveles de tiempo se visualizan como líneas verticales en el gráfico. Estas líneas representan puntos temporales clave basados en la progresión cuadrática de los números de Gann. El color de las líneas de tiempo se establece mediante el parámetro TimeLevelColor, lo que permite distinguirlas fácilmente de los niveles de precios. Las líneas verticales se distribuyen a lo largo del eje horizontal del gráfico, comenzando desde la fecha de finalización especificada (el parámetro EndDate) y moviéndose hacia atrás en el tiempo. Esto brinda a los operadores la capacidad de ver posibles puntos de reversión o fechas significativas en el futuro, así como analizar datos históricos.
Cuadratura y ciclos temporales
La cuadratura del tiempo y los ciclos temporales son conceptos clave en la teoría de William Gann, que se reflejan en el Cuadrado de 9. Estas ideas se basan en el supuesto de que los movimientos del mercado siguen determinados patrones temporales que pueden predecirse y utilizarse para tomar decisiones de negociación.
time_scale = (int)MathMax(1, (EndDate - current_time) / (86400 * StartNumber * StartNumber)); // in days
El concepto de cuadrado del tiempo sugiere que los eventos significativos del mercado a menudo ocurren en intervalos que son cuadrados de números enteros. Por ejemplo, los principales giros del mercado pueden ocurrir en 4, 9, 16, 25, 36, 49, 64, 81 días o períodos más largos según estos números. En el contexto del Cuadrado del 9, estos números corresponden a puntos claves de la espiral.
La ecuación es el elemento clave para calcular la escala de tiempo para el indicador Cuadrado de Gann de 9. Echemos un vistazo a sus componentes y significado:
- EndDate - current_time: Es la diferencia entre la fecha final especificada y la hora actual. El resultado se expresa en segundos.
- 86400: este es el número de segundos en un día (24 horas * 60 minutos * 60 segundos).
- StartNumber * StartNumber: Este es el cuadrado del número inicial que se utiliza para escalar la línea de tiempo.
- (EndDate - current_time) / (86400 * StartNumber * StartNumber): Esta parte de la ecuación convierte la diferencia de tiempo de segundos a días, y luego la divide por el cuadrado del número inicial. Esto crea una escala temporal no lineal coherente con los principios del Cuadrado de 9 de Gann.
- MathMax(1, ...): Esta función garantiza que el resultado sea al menos 1. Esto evita la división por cero o por valores negativos.
- (int): Convierte el resultado a un tipo entero, ya que la cronología debe expresarse en días enteros.
La idea detrás de esta ecuación es crear una línea de tiempo que se acorta a medida que se acerca a la fecha actual. Esto refleja el concepto de Gann de la aceleración del tiempo y los ciclos del mercado.
Cuanto mayor sea el StartNumber, más comprimida estará la línea de tiempo. Esto permite a los operadores personalizar el indicador para distintos horizontes temporales de negociación.
El uso del cuadrado de StartNumber (StartNumber * StartNumber) en el denominador crea una distribución no lineal de los niveles de tiempo, que es consistente con los principios del Cuadrado de 9 de Gann, donde la importancia de los números aumenta cuadráticamente.
Aceleración de los ciclos temporales junto con la aceleración de los ciclos de mercado
Una de las características interesantes de este indicador es que los ciclos temporales, basados en los principios del Cuadrado de 9 de Gann, se acercan entre sí a medida que se aproximan a la fecha actual. Este fenómeno puede interpretarse como un reflejo de la aceleración de los ciclos de mercado que se observa en el entorno financiero moderno.
De hecho, en las últimas décadas hemos asistido a una importante aceleración de los procesos de mercado. Los desplomes bursátiles, que solían producirse cada pocos años o incluso décadas, ocurren ahora con mucha más frecuencia. Esto puede atribuirse a una serie de factores, como la globalización de los mercados financieros, el desarrollo de las tecnologías de la información y la negociación algorítmica, y la mayor velocidad de difusión de la información. Tal vez, esto ocurra debido al movimiento gradual hacia la singularidad tecnológica.
El indicador Cuadrado de 9 de Gann refleja indirectamente esta aceleración mostrando ciclos temporales que se están comprimiendo más cerca del tiempo presente. Esta representación visual puede ayudar a los operadores a comprender mejor y adaptarse al vertiginoso entorno de mercado actual, en el que los ciclos se suceden a un ritmo cada vez más rápido.
Esta aceleración puede considerarse un signo del desarrollo tecnológico y de la evolución de los mercados financieros. Con la llegada de la negociación de alta frecuencia, la difusión instantánea de noticias a través de las redes sociales y la mayor disponibilidad de plataformas de negociación para los pequeños inversores, los mercados han reaccionado a los acontecimientos como nunca antes. Las tendencias solían ser mucho más duraderas y predecibles.
Es importante señalar que si bien el indicador refleja esta aceleración, no la predice directamente. Más bien, proporciona una herramienta visual que puede ayudar a los operadores a comprender e integrar el concepto de aceleración de los ciclos del mercado en sus análisis.
Prueba del indicador
Veamos los resultados del indicador en datos históricos. Elegimos EURUSD como activo y 1.00 como punto de partida para calcular los niveles.
Otro segmento:
Y uno más:
2008:
2010, volvemos a ver una reacción a los niveles:
2011:
2012:
2020:
Periodo actual: Ahora mismo el EURUSD está justo en el nivel del Cuadrado de Gann de 9.
En cuanto a los ciclos temporales por cuadratura temporal, no observé ninguna reacción estadísticamente significativa de los precios ante ellos.
Posibles mejoras
Una opción interesante parece ser añadir alertas cuando el precio toca el nivel Cuadrado de 9. También es posible añadir el autocálculo de los niveles de plaza al actualizar los precios.
También sería interesante implementar la caja de Gann y la rejilla de Gann en forma de indicadores, y combinar todos los desarrollos en un sistema complejo.
Perspectivas de creación de un EA basado en Cuadrado del 9
También es posible crear un EA basado en un rebote desde los niveles cuadrados. Lo veo como un EA semiautomático posiblemente vinculado a objetos gráficos. Un EA de este tipo podría facilitar el trabajo de los operadores siguiendo sus instrucciones de negociación desde un nivel u otro.
Conclusión
El desarrollo del indicador Cuadrado de 9 de Gann para la plataforma MetaTrader 5 es un proyecto interesante y ambicioso que combina las ideas clásicas del análisis técnico con las tecnologías comerciales modernas. Este indicador proporciona a los operadores una herramienta única de análisis del mercado que combina elementos de análisis de precios y de tiempo.
La aplicación del concepto del Cuadrado de 9 en forma de indicador digital hace que esta compleja teoría sea más accesible y aplicable a una amplia gama de operadores. La capacidad de visualizar los niveles de precios y tiempos en un único gráfico permite un análisis exhaustivo de los movimientos del mercado, lo que puede ser especialmente útil en el contexto de los mercados actuales que cambian rápidamente.
Es importante señalar que, a pesar de su base matemática, la interpretación del Cuadrado de Gann de 9 señales sigue siendo en gran medida subjetiva.
En general, este proyecto demuestra cómo los métodos históricos de análisis técnico se pueden adaptar a las tecnologías comerciales modernas, creando nuevas herramientas para los comerciantes. Esto resalta el valor perdurable de las ideas clásicas y su potencial en el contexto de los mercados financieros modernos.
Traducción del ruso hecha por MetaQuotes Ltd.
Artículo original: https://www.mql5.com/ru/articles/15566
Advertencia: todos los derechos de estos materiales pertenecen a MetaQuotes Ltd. Queda totalmente prohibido el copiado total o parcial.
Este artículo ha sido escrito por un usuario del sitio web y refleja su punto de vista personal. MetaQuotes Ltd. no se responsabiliza de la exactitud de la información ofrecida, ni de las posibles consecuencias del uso de las soluciones, estrategias o recomendaciones descritas.






- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso