PlotIndexGetInteger

La funzione imposta il valore della proprietà corrispondente della corrispondente linea dell'indicatore. La proprietà indicatore deve essere del tipo int, color, bool o char. Ci sono due varianti della funzione.

Chiamare indicando identificatore della proprietà.

int  PlotIndexGetInteger(
   int  plot_index,        // indice dello stile di plotting
   int  prop_id,           // identificatore proprietà
   );

Chiamare indicando l'identificatore e modificatore della proprietà.

int  PlotIndexGetInteger(
   int  plot_index,        // indice plotting
   int  prop_id,           // identificatore proprietà
   int  prop_modifier      // modificatore proprietà
   )

Parametri

plot_index

[in]  Index of the graphical plotting

prop_id

[in] Il valore può essere uno dei valori dell'enumerazione ENUM_PLOT_PROPERTY_INTEGER.

prop_modifier

[in] Modificatore della proprietà specificata. Solo proprietà di indice di colore richiedono un modificatore.

Nota

La funzione è progettata per estrarre le impostazioni del disegno della linea indicatore appropriata. La funzione lavora in tandem con la funzione PlotIndexSetInteger per copiare le proprietà del disegno di una linea all'altra.

Esempio: un indicatore che colora le candele a seconda del giorno della settimana. I colori per ogni giorno vengono impostati in modo programma.

Candele colorate in base al numero della settimana

 

#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
//--- buffers indicatore
double         OpenBuffer[];
double         HighBuffer[];
double         LowBuffer[];
double         CloseBuffer[];
double         ColorCandlesColors[];
color          ColorOfDay[6]={CLR_NONE,clrMediumSlateBlue,
                              clrDarkGoldenrod,clrForestGreen,clrBlueViolet,clrRed};
//+--------------------------------------------------------------------------------+
//| Funzione di inizializzazione Indicatore Personalizzato                         |
//+--------------------------------------------------------------------------------+
void OnInit()
  {
//--- mappatura buffers indicatore
   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);
//--- imposta il numero di colori nel buffer color
   PlotIndexSetInteger(0,PLOT_COLOR_INDEXES,6);
//--- imposta i colori nel buffer color
   for(int i=1;i<6;i++)
      PlotIndexSetInteger(0,PLOT_LINE_COLOR,i,ColorOfDay[i]);
//--- imposta precisione
   IndicatorSetInteger(INDICATOR_DIGITS,_Digits);
   printf("We have %u colors of days",PlotIndexGetInteger(0,PLOT_COLOR_INDEXES));
//---
  }
//+--------------------------------------------------------------------------------+
//| Funzione di iterazione indicatore personalizato                                |
//+--------------------------------------------------------------------------------+
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];
      //--- imposta il colore per ogni candela
      TimeToStruct(time[i],t);
      ColorCandlesColors[i]=t.day_of_week;
      //---
      i++;
     }
//--- restituisce il valore di prev_calculated per la prossima chiamata
   return(rates_total);
  }
//+--------------------------------------------------------------------------------+