Descargar MetaTrader 5

PlotIndexGetInteger

Devuelve el valor de la propiedad correspondiente de línea correspondiente del indicador. La propiedad del indicador tiene que ser del tipo int, color, bool o char. Existen 2 variantes de la función.

Llamada con especificación del identificador de la propiedad.

int  PlotIndexGetInteger(
   int  plot_index,        // índice del estilo gráfico
   int  prop_id,           // identificador de la propiedad
   );

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

int  PlotIndexGetInteger(
   int  plot_index,        // índice del estilo gráfico
   int  prop_id,           // identificador de la propiedad
   int  prop_modifier      // modificador de la propiedad
   )

Parámetros

plot_index

[in]  Índice de construcción gráfica

prop_id

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

prop_modifier

[in]  Modificador de la propiedad especificada. Sólo las propiedades de los índices de colores requieren un modificador.

Nota

La función está destinada para extraer las configuraciones de dibujo de una línea correspondiente del indicador. Esta función trabaja junto con la función PlotIndexSetInteger teniendo objetivo de copiar las propiedades de dibujo de una línea en otra.

Ejemplo: El indicador que pinta las velas de un color que depende del día de la semana. Los colores para cada día se establecen de un modo programado.

Velas teñidas de color correspondiente al número de día de la semana

 

#property indicator_separate_window
#property indicator_buffers 5
#property indicator_plots   1
//---- plot ColorCandles
#property indicator_label1  "ColorCandles"
#property indicator_type1   DRAW_COLOR_CANDLES
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- indicator buffers
double         OpenBuffer[];
double         HighBuffer[];
double         LowBuffer[];
double         CloseBuffer[];
double         ColorCandlesColors[];
color          ColorOfDay[6]={CLR_NONE,clrMediumSlateBlue,
                              clrDarkGoldenrod,clrForestGreen,clrBlueViolet,clrRed};
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,OpenBuffer,INDICATOR_DATA);
   SetIndexBuffer(1,HighBuffer,INDICATOR_DATA);
   SetIndexBuffer(2,LowBuffer,INDICATOR_DATA);
   SetIndexBuffer(3,CloseBuffer,INDICATOR_DATA);
   SetIndexBuffer(4,ColorCandlesColors,INDICATOR_COLOR_INDEX);
//--- set number of colors in color buffer
   PlotIndexSetInteger(0,PLOT_COLOR_INDEXES,6);
//--- set colors for color buffer
   for(int i=1;i<6;i++)
      PlotIndexSetInteger(0,PLOT_LINE_COLOR,i,ColorOfDay[i]);
//--- set accuracy
   IndicatorSetInteger(INDICATOR_DIGITS,_Digits);
   printf("We have %u colors of days",PlotIndexGetInteger(0,PLOT_COLOR_INDEXES));
//---
  }
//+------------------------------------------------------------------+
//| 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[])
  {
//---
   int i;
   MqlDateTime t;
//----
   if(prev_calculated==0) i=0;
   else i=prev_calculated-1;
//----
   while(i<rates_total)
     {
      OpenBuffer[i]=open[i];
      HighBuffer[i]=high[i];
      LowBuffer[i]=low[i];
      CloseBuffer[i]=close[i];
      //--- set color for every candle
      TimeToStruct(time[i],t);
      ColorCandlesColors[i]=t.day_of_week;
      //---
      i++;
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+


Actualizado: 2015.12.03