Indicador técnico

Inter: El Indicador Esencial para MetaTrader 5
MetaTrader5
Inter: El Indicador Esencial para MetaTrader 5

El indicador Inter fue diseñado inicialmente para facilitar la recepción de datos sincronizados y normalizados, que luego son utilizados como entradas para redes neuronales. La sincronización de los datos se realiza según el símbolo donde se instala el indicador. Tal vez alguien pueda encontrar otra área de aplicación para este indicador. Es posible mostrar hasta 10 líneas (buffers) provenientes de distintos símbolos, marcos temporales y señales. Parámetros de entrada: Instrumento: nombre del instrumento (símbolo), seleccionado de la lista. Variante: variante de cálculo del indicador, seleccionada de la lista. Marco temporal: marco temporal para el cálculo del indicador. Parámetro: parámetro de cálculo del indicador (período). Los parámetros de variante pueden tener los siguientes valores: NONE: no calculado. HLP: calculado como la relación de máximos y mínimos de las barras del "Parámetro" anterior. Op0_OpN: Open[0]-Open[Parámetro]. RSI: RSI normal con período "Parámetro". Stoch: Estocástico normal con parámetros "Parámetro,3,3". Op0_Ma: Open[0]-iMa[0] con "Parámetro" como período de suavizado. Ma0_Ma1: Ma[0]-Ma[1] con "Parámetro" como período de suavizado. Tiempo: tiempo del día según el "Parámetro" (puede ser 0 o >=1). Los parámetros similares se utilizan para los diez buffers disponibles. Es importante mencionar que al calcular Op0_OpN, Op0_Ma y Ma0_Ma1, se realiza una normalización al rango de -1 a +1 en cuanto se reciben nuevos datos. En este contexto, se recomienda ajustar el parámetro de Máximas Barras a Calcular a un valor que sea el doble de la cantidad de datos requeridos.

2012.09.18
ATRNorm: Indicador Esencial para MetaTrader 5
MetaTrader5
ATRNorm: Indicador Esencial para MetaTrader 5

Autor real: Iván Kornilov ATRNorm es una versión normalizada del Average True Range (ATR). Este indicador también puede normalizar el volumen de ticks, la desviación estándar, entre otros, gracias al parámetro de entrada ValueType. ATRNorm ha sido diseñado específicamente para detectar áreas de consolidación en los gráficos. Este indicador fue implementado por primera vez en MQL4 y se publicó en la Base de Código el 10 de mayo de 2012 (en ruso). El indicador utiliza las clases de la biblioteca SmoothAlgorithms.mqh (que deben ser copiadas en la carpeta terminal_data_folder\MQL5\Include). El uso de estas clases se detalla exhaustivamente en el artículo "Promediando Series de Precios para Cálculos Intermedios Sin Usar Buffers Adicionales". Parámetros de entrada del indicador: //+----------------------------------------------+ //| Parámetros de entrada del indicador                 | //+----------------------------------------------+ input uint period=12; // Periodo del indicador input uint ma=12;     // Periodo de suavizado input IndType ValueType=ATR; // Tipo de indicador normalizado input uint normLimit=24;     // Periodo de normalización input ENUM_APPLIED_VOLUME VolumeType=VOLUME_TICK; // Tipo de volumen input int Shift=0; // Desplazamiento horizontal del indicador en barras

2012.09.17
MARSICD: El Indicador Definitivo para MetaTrader 5
MetaTrader5
MARSICD: El Indicador Definitivo para MetaTrader 5

Autor original: John Q. Aimsson Hoy vamos a hablar de MARSICD, un indicador de tendencia que combina dos osciladores RSI. Lo interesante de este indicador es que los periodos de los osciladores pueden variar, lo que te permite adaptarlo a tus estrategias de trading. En esencia, MARSICD se asemeja a una combinación de los indicadores técnicos ADX y MACD, todo en un solo gráfico. Por lo tanto, su interpretación es similar a la de estos dos indicadores. Este indicador fue desarrollado inicialmente en MQL4 y se publicó en la Base de Código el 07.06.2012 (en ruso). Para su funcionamiento, MARSICD utiliza clases de la biblioteca SmoothAlgorithms.mqh, las cuales debes copiar en la carpeta terminal_data_folder\MQL5\Include. Si quieres profundizar en el uso de estas clases, te recomiendo leer el artículo titulado "Averaging Price Series for Intermediate Calculations Without Using Additional Buffers". Parámetros de entrada: //+----------------------------------------------+ //|  Parámetros de entrada del indicador                 | //+----------------------------------------------+ input Smooth_Method MAMethod=MODE_LWMA; //Método de suavizado input uint ARSI_PERIOD=14;              //Periodo A del RSI input uint RRSI_PERIOD=14;              //Periodo R del RSI input uint AMA_PERIOD=5;                //Periodo A de la señal input uint RMA_PERIOD=5;                //Periodo R de la señal input uint sMAD_PERIOD=21;              //Periodo de señal para el histograma input uint MPhase=15; //Parámetro de suavizado MARSICD

2012.09.17
Ideal ZigZag: Un Indicador Rápido para MetaTrader 5
MetaTrader5
Ideal ZigZag: Un Indicador Rápido para MetaTrader 5

¡Hola, traders! Hoy quiero hablarles sobre un indicador que puede revolucionar su forma de operar: el Ideal ZigZag. Este indicador es sencillo, pero su rapidez es impresionante. No más picos suspendidos o valores erróneos. La recuperación de picos ha sido optimizada en tiempo, lo que lo convierte en una herramienta muy eficiente. Ventajas: La función más costosa en cálculos es iBarShift, pero aquí se reemplaza por ArrayBSearch, haciendo que el indicador sea más eficiente que su equivalente en MQL4. Todos los datos necesarios para cada barra están disponibles en cualquier momento y accesibles para un Asesor Experto (EA) en cualquier momento de la historia. No hay picos suspendidos. Método eficiente para encontrar picos sin necesidad de buscar los valores del indicador. ¡Es muy rápido! Funciona correctamente con inserciones históricas y al cambiar de marcos de tiempo. Perfecto para su uso en EAs. Desventajas: Requisitos de memoria. El ZigZag necesita 2 buffers (uno no es suficiente por los retrasos) para un dibujo correcto; aquí se utilizan 5 buffers. Sin embargo, esta desventaja queda eclipsada por la ventaja #6. Ningún ZigZag rápido puede procesar correctamente las inserciones históricas con dos buffers. Se requieren líneas adicionales para hacer visibles los datos a un Asesor Experto. Estas líneas nunca deben ser visibles. Principio: El ZigZag se dibuja bajo el principio de canalización. El ancho del canal se puede definir en puntos (IdealZZ) o en términos porcentuales (IdealZZP). Recuperación de picos: input int ChannelWidth=100; #property indicator_chart_window datetime LastTime; int ZZHandle; //+------------------------------------------------------------------+ //| Función de inicialización del indicador personalizado                        | //+------------------------------------------------------------------+ void OnInit()   {    LastTime = 0;    ZZHandle = iCustom(_Symbol, Period(), "IdealZZ", ChannelWidth);   } //+------------------------------------------------------------------+ //| GetValue                                                         | //+------------------------------------------------------------------+ bool GetValue(double dir,int bar,int prevBar,double &peak, int &peakBar,datetime &peakTime,const datetime &T[])   {    if(dir<0)      {       double t[1];       if(0>=CopyBuffer(ZZHandle,2,bar,1,t)) return false;       int i= ArrayBsearch(T, (datetime)t[0]);       if(i==prevBar)         {          if(0>=CopyBuffer(ZZHandle,2,bar+1,1,t)) return false;          i=ArrayBsearch(T,(datetime)t[0]);         }       double v[1];       if(0>=CopyBuffer(ZZHandle,1,i,1,v)) return false;       if(v[0]==EMPTY_VALUE)         {          if(0>=CopyBuffer(ZZHandle,2,bar+1,1,t)) return false;          i=ArrayBsearch(T,(datetime)t[0]);          if(0>=CopyBuffer(ZZHandle,1,i,1,v)) return false;         }       peak=v[0];       peakBar=i;       peakTime=(datetime)t[0];    }    else if(dir>0)      {       double t[1];       if(0>=CopyBuffer(ZZHandle,3,bar,1,t)) return false;       int i= ArrayBsearch(T, (datetime)t[0]);       if(i==prevBar)         {          if(0>=CopyBuffer(ZZHandle,3,bar+1,1,t)) return false;          i=ArrayBsearch(T,(datetime)t[0]);         }       double v[1];       if(0>=CopyBuffer(ZZHandle,0,i,1,v)) return false;       if(v[0]==EMPTY_VALUE)         {          if(0>=CopyBuffer(ZZHandle,3,bar+1,1,t)) return false;          i=ArrayBsearch(T,(datetime)t[0]);          if(0>=CopyBuffer(ZZHandle,0,i,1,v)) return false;         }       peak=v[0];       peakBar=i;       peakTime=(datetime)t[0];      }    else      {       return(false);      }    return(true);   } //+------------------------------------------------------------------+ //| GetValue                                                         | //+------------------------------------------------------------------+ void SetPt(string name,double price,datetime time)   {    ObjectCreate(0,name,OBJ_ARROW,0,time,price);    ObjectSetInteger(0,name,OBJPROP_ARROWCODE,108);    ObjectSetDouble(0,name,OBJPROP_PRICE,price);    ObjectSetInteger(0,name,OBJPROP_TIME,time);   } //+------------------------------------------------------------------+ //| Iteración del indicador personalizado                              | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total,                 const int prev_calculated,                 const datetime &T[],                 const double &open[],                 const double &high[],                 const double &low[],                 const double &close[],                 const long &tick_volume[],                 const long &volume[],                 const int &spread[])   {    if(LastTime==T[0]) return(rates_total);    LastTime=T[0];    ArraySetAsSeries(T,true);    double dir_[1];    if(0>=CopyBuffer(ZZHandle,4,1,1,dir_)) return rates_total;    double dir=dir_[0];    double rdir=-dir;    if(dir==EMPTY_VALUE) return(rates_total);    double v1,v2,v3,v4,v5;    int    i1,i2,i3,i4,i5;    datetime t1,t2,t3,t4,t5;    if(       GetValue(dir,1,0,v1,i1,t1,T) &&       GetValue(rdir,i1,0,v2,i2,t2,T) &&       GetValue(dir,i2,i1,v3,i3,t3,T) &&       GetValue(rdir,i3,i2,v4,i4,t4,T) &&       GetValue(dir,i4,i3,v5,i5,t5,T)       )      {       SetPt("1",v1,t1);       SetPt("2",v2,t2);       SetPt("3",v3,t3);       SetPt("4",v4,t4);       SetPt("5",v5,t5);       Print(v1,"   ",v2,"  ",v3,"  ",v4," ",v5," ",i1,"  ",i2,"  ",i3," ",i4," ",i5);      }      else      {       Print("Parece que hubo un error...");      }      return(rates_total);   } //+------------------------------------------------------------------+ Este es un ejemplo de un indicador que marca (una vez por barra) los primeros cinco picos (incluyendo el que se está formando actualmente). ¡Atención! El código puede funcionar incorrectamente si se activa el modo de barra cero. Modo de Barra Cero: Este modo puede ser habilitado en la variable DrawZeroBar. Por defecto está desactivado y no se recomienda activarlo, especialmente si el indicador se utiliza en un Asesor Experto. Disfruten usándolo y no duden en informarme sobre cualquier inconveniente que encuentren.

2012.07.20
Primero Anterior 240 241 242 243 244 245 246 247 248 249 250 Siguiente Último