Descargar MetaTrader 5

IndicatorSetInteger

Establece el valor de la propiedad correspondiente del indicador. La propiedad del indicador tiene que ser del tipo int o color. Existen 2 variantes de la función.

Llamada con especificación del identificador de la propiedad.

bool  IndicatorSetInteger(
   int  prop_id,           // identificador
   int  prop_value         // valor que se establece
   );

Llamada con especificación del identificador y modificador de la propiedad.

bool  IndicatorSetInteger(
   int  prop_id,           // identificador
   int  prop_modifier,     // modificador 
   int  prop_value         // valor que se establece
   )

Parámetros

prop_id

[in]  Identificador de la propiedad del indicador. Su valor puede ser uno de los valores de la enumeración ENUM_CUSTOMIND_PROPERTY_INTEGER.

prop_modifier

[in]  Modificador de la propiedad especificada. Sólo las propiedades de niveles requieren un modificador.

prop_value

[in]  Valor de la propiedad.

Valor devuelto

En caso de éxito devuelve true, de lo contrario devuelve false.

Nota

Cuando se utiliza la directiva #property la numeración de las propiedades (modificadores) se empieza desde 1 (un uno). Mientras que la función utiliza la numeración desde 0 (cero). Si el número del nivel no se establece de forma correcta, la visualización del indicador puede ser diferente de lo que está previsto.

Por ejemplo, para establecer el grosor de la línea del primer nivel horizontal utilice el índice cero:

  • IndicatorSetInteger(INDICATOR_LEVELWIDTH, 0, 5) - utilice índice 0 para establecer el grosor de la línea del primer nivel.

Ejemplo: indicador que establece el color, estilo y el grosor de los niveles horizontales del indicador.

Ejemplo del uso de la función IndicatorSetInteger()

#property indicator_separate_window
#property indicator_minimum 0
#property indicator_maximum 100
//--- establecemos la muestra de tres niveles horizontales en la ventana separada del indicador
#property indicator_level1 20
#property indicator_level2 50
#property indicator_level3 80
//--- establecemos el grosor de niveles horizontales
#property indicator_levelwidth 5
//--- establecemos el color de niveles horizontales
#property indicator_levelcolor clrAliceBlue
//--- establecemos el estilo de niveles horizontales
#property indicator_levelstyle STYLE_DOT
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- ponemos las descripciones de niveles horizontales 
   IndicatorSetString(INDICATOR_LEVELTEXT,0,"First Level (index 0)");
   IndicatorSetString(INDICATOR_LEVELTEXT,1,"Second Level (index 1)");
   IndicatorSetString(INDICATOR_LEVELTEXT,2,"Third Level (index 2)");
//--- ponemos el nombre breve al indicador
   IndicatorSetString(INDICATOR_SHORTNAME,"IndicatorSetInteger() Demo");
   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[])
  {
   static int tick_counter=0;
//--- contamos los ticks
   tick_counter++;
//--- y establecemos los colores de niveles horizontales en función del contador de los ticks
   ChangeLevelColor(0,tick_counter,3,6,10); // tres últimos parámetros cambian el color
   ChangeLevelColor(1,tick_counter,3,6,8);
   ChangeLevelColor(2,tick_counter,4,7,9);
//--- cambiamos los estilos de niveles horizontales
   ChangeLevelStyle(0,tick_counter);
   ChangeLevelStyle(1,tick_counter+5);
   ChangeLevelStyle(2,tick_counter+15);
//--- obtenemos el grosor de la línea como el resto de la división entera del número de los ticks por 5
   int width=tick_counter%5;
//--- pasaremos por todos los niveles horizontales y pondremos 
   for(int l=0;l<3;l++)
      IndicatorSetInteger(INDICATOR_LEVELWIDTH,l,width+1);
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
//| Establecemos el color de la línea horizontal en la ventana separada del indicador  |
//+------------------------------------------------------------------+
void ChangeLevelColor(int level,      // número de la línea horizontal
                      int tick_number,// el dividiendo, número para obtener el resto de la división
                      int f_trigger,  // el primer divisor de cambio del color
                      int s_trigger,  // el segundo divisor de cambio del color
                      int t_trigger)  // el tercer divisor de cambio del color
  {
   static color colors[3]={clrRed,clrBlue,clrGreen};
//--- índice del color desde el array colors[] 
   int index=-1;
//--- calculamos el número del color desde el colors[] para colorear la línea horizontal
   if(tick_number%f_trigger==0)
      index=0;   // si el número tick_number se divide sin resto por f_trigger
   if(tick_number%s_trigger==0)
      index=1;   // si el número tick_number se divide sin resto por s_trigger
   if(tick_number%t_trigger==0)
      index=2;   // si el número tick_number se divide sin resto por t_trigger
//--- si el color está determinado, lo establecemos      
   if(index!=-1)
      IndicatorSetInteger(INDICATOR_LEVELCOLOR,level,colors[index]);
//---
  }
//+------------------------------------------------------------------+
//| Establecemos el estilo de la línea horizontal en la ventana separada del indicador |
//+------------------------------------------------------------------+
void ChangeLevelStyle(int level,     // número de la línea horizontal
                      int tick_number// número para obtener el resto de la división)
                      )
  {
//--- array para guardar los estilos
   static ENUM_LINE_STYLE styles[5]=
     {STYLE_SOLID,STYLE_DASH,STYLE_DOT,STYLE_DASHDOT,STYLE_DASHDOTDOT};
//--- índice del estilo desde el array styles[] 
   int index=-1;
//--- calculamos el número desde el array styles[] para establecer el estilo de la línea horizontal
   if(tick_number%50==0)
      index=5;   // si tick_number se divide sin resto por 50, el estilo será STYLE_DASHDOTDOT
   if(tick_number%40==0)
      index=4;   // ... estilo STYLE_DASHDOT
   if(tick_number%30==0)
      index=3;   // ... STYLE_DOT
   if(tick_number%20==0)
      index=2;   // ... STYLE_DASH
   if(tick_number%10==0)
      index=1;   // ... STYLE_SOLID
//--- si el estilo está determinado, lo establecemos      
   if(index!=-1)
      IndicatorSetInteger(INDICATOR_LEVELSTYLE,level,styles[index]);
  }

Véase también

Propiedades de indicadores personalizados, Propiedades de programas (#property), Estilos de dibujo


Actualizado: 2015.12.03