TendenciaPrecioFecha2

TrendLinesFromFiboAndTrend2 — Proyección Dinámica de Tendencias en Niveles Fibonacci

Descripción general: TrendLinesFromFiboAndTrend2 es una herramienta para MetaTrader 5 diseñada para clonar el ángulo y la velocidad de una línea de tendencia existente y proyectarla automáticamente a través de todos los niveles clave (retrocesos y extensiones) de un objeto Fibonacci dibujado en el gráfico.

Ventajas principales:

  • Proyección geométrica exacta: Mantiene la inclinación y duración exacta de la línea de tendencia de origen.

  • Proyección completa: Traza 9 líneas de soporte/resistencia dinámicas en niveles clave (0.0%, 23.6%, 38.2%, 50.0%, 61.8%, 100.0%, 161.8%, 200.0% y 261.8%).

  • Soporte multidireccional: Permite seleccionar la orientación del Fibonacci (Alcista o Bajista) para calcular correctamente las extensiones fuera del rango 0-100%.

  • Estilo personalizable: Configuración de color, estilo y grosor para diferenciar fácilmente los canales creados.

  • Ejecución ultra-rápida: Al ser un script de un solo paso, no consume recursos ni ralentiza el gráfico.

Cómo funciona:

  1. El script toma los puntos temporales y de precio de una línea de tendencia seleccionada para calcular su pendiente.

  2. Identifica el origen y los niveles de precio del Fibonacci especificado.

  3. Genera y dibuja automáticamente 9 líneas paralelas proyectadas desde el tiempo inicial del Fibonacci a lo largo de cada nivel.

Parámetros de entrada:

  • InpTrendName — Nombre exacto del objeto línea de tendencia en el gráfico (ej. AutoTrend_175779433).

  • InpFiboName — Nombre exacto del objeto Fibonacci en el gráfico (ej. M1 Fibo 57122).

  • InpFiboDirection — Orientación del Fibonacci (FIBO_ALCISTA o FIBO_BAJISTA).

  • InpLineColor — Color de las líneas proyectadas.

  • InpLineStyle — Estilo visual de la línea (sólida, puntos, guiones).

  • InpLineWidth — Grosor de la línea (1 a 5).

Uso recomendado: Combínelo con AutoFindBestTrendLine (o cualquier línea de tendencia manual) y un retroceso de Fibonacci para proyectar estructuras dinámicas de canales, tomar beneficios en extensiones y detectar confluencias clave en el gráfico.

//+------------------------------------------------------------------+

//|                                   TrendLinesFromFiboAndTrend2.mq5 |

//|                                  Copyright 2026                  |

//|                                                                  |

//+------------------------------------------------------------------+

#property copyright "Copyright 2026"

#property link      ""

#property version   "5.00"

#property script_show_inputs



// Definición de la dirección del Fibonacci para el panel de propiedades

enum ENUM_FIBO_DIR

{

   FIBO_ALCISTA = 0, // Alcista (0% Abajo -> 100% Arriba | Extensiones arriba)

   FIBO_BAJISTA = 1  // Bajista (0% Arriba -> 100% Abajo | Extensiones abajo)

};



// Parámetros de entrada configurables

input string          InpTrendName     = "AutoTrend_175779433"; // Nombre exacto de la Línea de Tendencia

input string          InpFiboName      = "M1 Fibo 57122";       // Nombre exacto del Fibonacci

input ENUM_FIBO_DIR   InpFiboDirection = FIBO_ALCISTA;          // Dirección del Fibonacci

input color           InpLineColor     = clrDodgerBlue;         // Color de las nuevas líneas

input ENUM_LINE_STYLE InpLineStyle     = STYLE_SOLID;           // Estilo de línea (Sólida, Rayas, Puntos...)

input int             InpLineWidth     = 2;                     // Grosor de línea (1 a 5)



//+------------------------------------------------------------------+

//| Script program start function                                    |

//+------------------------------------------------------------------+

void OnStart()

{

   string trendName = InpTrendName;

   string fiboName  = InpFiboName;

   

   // 1. Validar que la línea de tendencia exista y sea correcta

   if(ObjectFind(0, trendName) < 0)

   {

      Print("Error: No se encontró ninguna línea de tendencia con el nombre: ", trendName);

      return;

   }

   if((int)ObjectGetInteger(0, trendName, OBJPROP_TYPE) != OBJ_TREND)

   {

      Print("Error: El objeto '", trendName, "' no es una Línea de Tendencia.");

      return;

   }

   

   // 2. Validar que el objeto Fibonacci exista y sea correcto

   if(ObjectFind(0, fiboName) < 0)

   {

      Print("Error: No se encontró ningún objeto Fibonacci con el nombre: ", fiboName);

      return;

   }

   if((int)ObjectGetInteger(0, fiboName, OBJPROP_TYPE) != OBJ_FIBO)

   {

      Print("Error: El objeto '", fiboName, "' no es un Fibonacci.");

      return;

   }

   

   // 3. Obtener y ordenar cronológicamente la línea de tendencia (Izquierda a Derecha)

   datetime t_a = (datetime)ObjectGetInteger(0, trendName, OBJPROP_TIME, 0);

   double   p_a = ObjectGetDouble(0, trendName, OBJPROP_PRICE, 0);

   datetime t_b = (datetime)ObjectGetInteger(0, trendName, OBJPROP_TIME, 1);

   double   p_b = ObjectGetDouble(0, trendName, OBJPROP_PRICE, 1);

   

   datetime tr_start_time = (t_a <= t_b) ? t_a : t_b;

   datetime tr_end_time   = (t_a <= t_b) ? t_b : t_a;

   double   tr_start_price = (t_a <= t_b) ? p_a : p_b;

   double   tr_end_price   = (t_a <= t_b) ? p_b : p_a;

   

   datetime trDuration    = tr_end_time - tr_start_time;        

   double   trPriceDelta = tr_end_price - tr_start_price;      

   

   if(trDuration <= 0)

   {

      Print("Error: La duración de la línea de tendencia es inválida.");

      return;

   }

   

   // 4. Obtener los puntos físicos del Fibonacci en el gráfico

   datetime fibTime0  = (datetime)ObjectGetInteger(0, fiboName, OBJPROP_TIME, 0);

   double   f_p1      = ObjectGetDouble(0, fiboName, OBJPROP_PRICE, 0);

   double   f_p2      = ObjectGetDouble(0, fiboName, OBJPROP_PRICE, 1);

   

   double baseLow  = MathMin(f_p1, f_p2);

   double baseHigh = MathMax(f_p1, f_p2);

   double fibSpan  = baseHigh - baseLow;

   

   if(fibSpan == 0.0)

   {

      Print("Error: El rango del Fibonacci es cero.");

      return;

   }

   

   // Declaración de precios de referencia para 0% y 100% según el input elegido

   double price0   = 0.0;

   double price100 = 0.0;

   

   if(InpFiboDirection == FIBO_ALCISTA)

   {

      price0   = baseLow;  // 0.0% abajo

      price100 = baseHigh; // 100.0% arriba

   }

   else

   {

      price0   = baseHigh; // 0.0% arriba

      price100 = baseLow;  // 100.0% abajo

   }

   

   Print("==================================================");

   Print(" [CONFIGURACIÓN APLICADA]");

   Print(" Tendencia Usada : ", trendName);

   Print(" Fibonacci Usado : ", fiboName);

   Print(" Dirección Fibo  : ", (InpFiboDirection == FIBO_ALCISTA) ? "ALCISTA" : "BAJISTA");

   Print(" Fibo 0.0%       -> Precio: ", DoubleToString(price0, _Digits));

   Print(" Fibo 100.0%     -> Precio: ", DoubleToString(price100, _Digits));

   Print("==================================================");

   

   // Niveles solicitados (incluyendo extensiones)

   double fibLevels[9]   = {0.0, 23.6, 38.2, 50.0, 61.8, 100.0, 161.8, 200.0, 261.8};

   string fibLabels[9]   = {"0.0", "23.6", "38.2", "50.0", "61.8", "100.0", "161.8", "200.0", "261.8"};

   

   long uniqueBase = GetTickCount();

   int createdCount = 0;

   

   // 5. Crear las réplicas exactas respetando la dirección especificada

   for(int k = 0; k < 9; k++)

   {

      double levelPct = fibLevels[k];

      double levelPrice = 0.0;

      

      if(InpFiboDirection == FIBO_ALCISTA)

      {

         if(levelPct <= 100.0)

         {

            levelPrice = price0 + (fibSpan * (levelPct / 100.0));

         }

         else

         {

            double extFactor = (levelPct - 100.0) / 100.0;

            levelPrice = price100 + (fibSpan * extFactor); // Extiende hacia arriba

         }

      }

      else // FIBO_BAJISTA

      {

         if(levelPct <= 100.0)

         {

            levelPrice = price0 - (fibSpan * (levelPct / 100.0));

         }

         else

         {

            double extFactor = (levelPct - 100.0) / 100.0;

            levelPrice = price100 - (fibSpan * extFactor); // Extiende hacia abajo

         }

      }

      

      datetime new_t1 = fibTime0;

      double   new_p1 = levelPrice;

      

      datetime new_t2 = new_t1 + trDuration;

      double   new_p2 = new_p1 + trPriceDelta;

      

      string lineName = StringFormat("FiboTrend_%s_%d", fibLabels[k], uniqueBase + k);

      

      if(ObjectCreate(0, lineName, OBJ_TREND, 0, new_t1, new_p1, new_t2, new_p2))

      {

         ObjectSetInteger(0, lineName, OBJPROP_RAY_LEFT, true);

         ObjectSetInteger(0, lineName, OBJPROP_RAY_RIGHT, true);

         ObjectSetInteger(0, lineName, OBJPROP_COLOR, InpLineColor);

         ObjectSetInteger(0, lineName, OBJPROP_STYLE, InpLineStyle);

         ObjectSetInteger(0, lineName, OBJPROP_WIDTH, InpLineWidth);

         ObjectSetInteger(0, lineName, OBJPROP_SELECTABLE, true);

         ObjectSetInteger(0, lineName, OBJPROP_HIDDEN, false);

         createdCount++;

      }

   }

   

   ChartRedraw(0);

   Print("¡Éxito! Se han dibujado ", createdCount, " líneas utilizando la dirección configurada.");

}
More from author
Ajustartplinea
Sergio Piqueras Cuevas
AJUSTAR TP SEGÚN LÍNEA DE TENDENCIA — Modificación Dinámica de Take Profit en MT5 Este script para MetaTrader 5 permite proyectar el precio actual de cualquier línea de tendencia presente en el gráfico y asignarlo automáticamente como Take Profit (TP) a las posiciones abiertas que cumplan con los criterios de filtrado seleccionados. Es una herramienta imprescindible para traders que proyectan sus objetivos de salida basándose en estructuras diagonales, canales de precio, directrices de tendencia
FREE
Nivelesfibonacci2
Sergio Piqueras Cuevas
NIVELESFIBONACCI2.12 — Órdenes Pendientes sobre Niveles Fibonacci Personalizados Este script para MetaTrader 5 permite colocar automáticamente órdenes pendientes de compra o venta utilizando como referencia los niveles Fibonacci horizontales previamente dibujados en el gráfico. El script está diseñado para funcionar conjuntamente con NIVELESFIBONACCI1.1 , aunque puede utilizar cualquier conjunto de líneas horizontales que siga la misma estructura de nombres mediante el prefijo configurado. La pr
FREE
NivelesFibonacci
Sergio Piqueras Cuevas
NIVELES FIBONACCI 1.14 — Proyección de niveles Fibonacci personalizados Este script para MetaTrader 5 permite calcular y dibujar automáticamente niveles de Fibonacci personalizados a partir de dos precios conocidos y sus correspondientes niveles Fibonacci. La herramienta utiliza una relación matemática lineal entre los dos puntos introducidos para proyectar cualquier nivel Fibonacci que el usuario desee. ¿Cómo funciona? El usuario debe introducir: Precio del Punto A Nivel Fibonacci asignado al P
FREE
TendenciaPrecioFecha
Sergio Piqueras Cuevas
AutoFindBestTrendLine — Detector Automático de Líneas de Tendencia Descripción general: AutoFindBestTrendLine es una utilidad para MetaTrader 5 que analiza el historial del gráfico y detecta automáticamente la mejor línea de tendencia posible, ya sea de máximos (resistencias), mínimos (soportes) o ambos. El script identifica los dos puntos más relevantes y dibuja una línea óptima basada en el número de toques reales sobre el precio. Ventajas principales: Detección automática de líneas de tendenc
FREE
Filter:
No reviews
Reply to review