IndicatorSetDouble

La funzione imposta il valore della proprietà indicatore corrispondente. Le proprietà dell'indicatore deve essere di tipo double. Ci sono due varianti della funzione.

Chiamare specificando l'identificatore di proprietà.

bool  IndicatorSetDouble(
   int     prop_id,           // identificatore
   double  prop_value         // valore da impostare
   );

Chiamare specificando l'identificatore della proprietà ed il modificatore.

bool  IndicatorSetDouble(
   int     prop_id,           // identificatore
   int     prop_modifier,     // modificatore
   double  prop_value         // valore da impostare
   )

Parametri

prop_id

[in] Identificatore della proprietà dell'indicatore. Il valore può essere uno dei valori dell'enumerazione ENUM_CUSTOMIND_PROPERTY_DOUBLE.

prop_modifier

[in] Modificatore della proprietà specificata. Solo le proprietà livello richiedono un modificatore. La numerazione dei livelli parte da 0. Ciò significa che, al fine di impostare proprietà per il secondo livello è necessario specificare 1 (1 in meno rispetto a quando si utilizza la direttiva del compilatore).

prop_value

[in]  Valore della proprietà.

Valore restituito

In caso di esecuzione avvenuta con successo, restituisce true, altrimenti - false

Nota

La numerazione delle proprietà (modificatori) comincia da 1 (uno) quando si utilizza la direttiva #property, mentre la funzione utilizza la numerazione da 0 (zero). Nel caso in cui il numero di livello è impostato in modo errato, la visualizzazione dell' indicatore può differire da quanto previsto.

Ad esempio, il primo valore del livello per l'indicatore in una sottofinestra separata può essere impostato in due modi:

  • property indicator_level1 50 - il valore 1 è utilizzato per specificare il numero del livello,
  • IndicatorSetDouble(INDICATOR_LEVELVALUE, 0, 50) - 0 è usato per specificare il primo livello.

Esempio: indicatore che capovolge i valori massimi e minimi della finestra indicatore e valori dei livelli su cui sono posizionate le linee orizzontali.

Esempio di utilizzo della funzione IndicatorSetDouble()

#property indicator_separate_window
//--- Imposta i valori massimi e minimi per la finestra dell'indicatore
#property indicator_minimum  0
#property indicator_maximum  100
//--- visualizza tre livelli orizzontali in una finestra indicatore separata
#property indicator_level1 25
#property indicator_level2 50
#property indicator_level3 75
//--- imposta lo spessore dei livelli orizzontali
#property indicator_levelwidth 1
//--- imposta lo stile dei livelli orizzontali
#property indicator_levelstyle STYLE_DOT
//+--------------------------------------------------------------------------------+
//| Funzione di inizializzazione Indicatore Personalizzato                         |
//+--------------------------------------------------------------------------------+
int OnInit()
  {
//--- imposta le descrizioni dei livelli orizzontali
   IndicatorSetString(INDICATOR_LEVELTEXT,0,"Primo livello (indice 0)");
   IndicatorSetString(INDICATOR_LEVELTEXT,1,"Secondo livello (indice 1)");
   IndicatorSetString(INDICATOR_LEVELTEXT,2,"Terzo livello (indice 2)");
//--- imposta il nome corto per l'indicatore
   IndicatorSetString(INDICATOR_SHORTNAME,"IndicatorSetDouble() Demo");
//--- imposta il colore per ogni livello
   IndicatorSetInteger(INDICATOR_LEVELCOLOR,0,clrBlue);
   IndicatorSetInteger(INDICATOR_LEVELCOLOR,1,clrGreen);
   IndicatorSetInteger(INDICATOR_LEVELCOLOR,2,clrRed);
//---
   return(INIT_SUCCEEDED);
  }
//+--------------------------------------------------------------------------------+
//| 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[])
  {
   static int tick_counter=0;
   static double level1=25,level2=50,level3=75;
   static double max=100,min=0, shift=100;
//--- calcola i ticks
   tick_counter++;
//--- capovolge i livelli sottosopra ogni 10imo tick
   if(tick_counter%10==0)
     {
      //--- inverte il segno per i valori dei livelli
      level1=-level1;
      level2=-level2;
      level3=-level3;
      //--- inverte il segno per i valori massimo e minimo
      max-=shift;
      min-=shift;
      //--- inverte il valore di shift
      shift=-shift;
      //--- imposta i valori dei nuovi livelli
      IndicatorSetDouble(INDICATOR_LEVELVALUE,0,level1);
      IndicatorSetDouble(INDICATOR_LEVELVALUE,1,level2);
      IndicatorSetDouble(INDICATOR_LEVELVALUE,2,level3);
      //--- imposta i nuovi valori di massimo e minimo nella finestra indicatore
      Print("Set up max = ",max,",   min = ",min);
      IndicatorSetDouble(INDICATOR_MAXIMUM,max);
      IndicatorSetDouble(INDICATOR_MINIMUM,min);
     }
//--- restituisce il valore di prev_calculated per la prossima chiamata
   return(rates_total);
  }

Vedi anche

Stili Indicatore negli Esempi, Correlazione tra Proprietà Indicatore e Funzioni, Stili di Disegno