PlotIndexGetInteger

Gibt den Wert der entsprechenden Eigenschaft der entsprechenden Indikatorlinie zurück. Eigenschaft muss der Typen  int, color, bool oder char sein. Es gibt 2 Varianten der Funktion.

Aufruf mit Andeutung des Identifikatoren der Eigenschaft.

int  PlotIndexGetInteger(
   int  plot_index,        // Index des graphischen Stils 
   int  prop_id,           // Identifikator der Eigenschaft 
   );

Aufruf mit Andeutung des Identifikatoren und Modifikatoren der Eigenschaft .

int  PlotIndexGetInteger(
   int  plot_index,        // Index des graphischen Stils 
   int  prop_id,           // Identifikator der Eigenschaft 
   int  prop_modifier      // Modifikator der Eigenschaft
   )

Parameter

plot_index

[in]  Index der graphischen Darstellung

prop_id

[in]  Identifikator der Indikatoreigenschaft. Wert kann einer der Enumerationswerte ENUM_PLOT_PROPERTY_INTEGER sein.

prop_modifier

[in] Modifikator der angegebenen Eigenschaft. Nur Eigenschaften der Farbeneindexe erfordert einen Modifikator.  

Hinweis

Funktion ist für Extrahieren der Zeichneneinstellungen der entsprechenden Indikatorlinie bestimmt. Funktion arbeitet mit der Funktion PlotIndexSetInteger für Kopieren der Indikatoreigenschaften von einer Linie in die andere.

Beispiel: Indikator, der Kerzen in Farben zeichnet abhängig von dem Wochentag. Farben für jeden Tag werden programmweise vorgegeben.

Kerzen, die entsprechend der Nummer des Wochentages gemalt sind

 

#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);
  }