IndicatorSetDouble

A função define o valor da propriedade do indicador correspondente. Propriedade do indicador deve ser do tipo double. Existem duas variantes da função.

Chamar especificando o identificador da propriedade.

bool  IndicatorSetDouble(
   int     prop_id,           // identificador
   double  prop_value         // valor para ser definido
   );

Chamar especificando o identificador e o modificador da propriedade.

bool  IndicatorSetDouble(
   int     prop_id,           // identificador
   int     prop_modifier,     // modificador
   double  prop_value         // valor para ser definido
   )

Parâmetros

prop_id

[in]  Identificador da propriedade do indicador. O valor pode ser um dos valores do enumerador ENUM_CUSTOMIND_PROPERTY_DOUBLE.

prop_modifier

[in]  Modificador da propriedade específica. Somente as propriedades de nível requerem um modificador. A numeração dos níveis a partir do 0. Isso significa que a fim de definir a propriedade para o segundo nível, você precisa determinar 1 (menor que 1 quando usar a diretiva de compilação).

prop_value

[in]  Valor de propriedade.

Valor do Retorno

Em caso de execução bem sucedida, retorna true, do contrário - false.

Observação

Numeração das propriedades (modificadores) começa a partir de 1 (um) quando usa a diretiva de #property, enquanto que a função usa numeração a partir de (zero). No caso do número de nível ser definido incorretamente, o visor do indicador pode ser diferente do pretendido.

Por exemplo, o primeiro valor para o indicador de nível de sub-janela separada pode ser ajustado de duas maneiras:

  • property indicator_level1  50 - o valor 1 é utilizado para especificar o número de nível,
  • IndicatorSetDouble(INDICATOR_LEVELVALUE, 0, 50) - 0 é usado para especificar o primeiro nível.

Exemplo: indicador inverte para baixo os valores máximo e mínimo da janela do indicador e os valores de níveis em que as linhas horizontais são colocadas.

Exemplo usando a função IndicatorSetDouble()

#property indicator_separate_window
//--- define o valor máximo e mínimo para a janela do indicador
#property indicator_minimum  0
#property indicator_maximum  100
//--- visualiza três níveis horizontais na janela separada
#property indicator_level1 25
#property indicator_level2 50
#property indicator_level3 75
//--- definir a espessura dos níveis horizontais
#property indicator_levelwidth 1
//--- definir o estilo dos níveis horizontais
#property indicator_levelstyle STYLE_DOT
//+------------------------------------------------------------------+
//| Função de inicialização do indicador customizado                 |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- definir as descrições dos níveis horizontais
   IndicatorSetString(INDICATOR_LEVELTEXT,0,"Primeiro Nível (índice 0)");
   IndicatorSetString(INDICATOR_LEVELTEXT,1,"Segundo Nível (índice 1)");
   IndicatorSetString(INDICATOR_LEVELTEXT,2,"Terceiro Nível (índice 2)");
//--- define o mome abreviado para o indicador
   IndicatorSetString(INDICATOR_SHORTNAME,"IndicatorSetDouble() Demo");
//--- definir a cor para cada nível
   IndicatorSetInteger(INDICATOR_LEVELCOLOR,0,clrBlue);
   IndicatorSetInteger(INDICATOR_LEVELCOLOR,1,clrGreen);
   IndicatorSetInteger(INDICATOR_LEVELCOLOR,2,clrRed);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Função de iteração do indicador customizado                      |
//+------------------------------------------------------------------+
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;
//--- calcular ticks
   tick_counter++;
//--- inverter os níveis a cada 10 tick
   if(tick_counter%10==0)
     {
      //--- inverter sinal para os valores de nível
      level1=-level1;
      level2=-level2;
      level3=-level3;
      //--- inverter sinal para os valores máximos e mínimos
      max-=shift;
      min-=shift;
      //--- inverter o valor de deslocamento
      shift=-shift;
      //--- definir novo valor para nível
      IndicatorSetDouble(INDICATOR_LEVELVALUE,0,level1);
      IndicatorSetDouble(INDICATOR_LEVELVALUE,1,level2);
      IndicatorSetDouble(INDICATOR_LEVELVALUE,2,level3);
      //--- definir novos valores máximo e mínimo na janela do indicador
      Print("Set up max = ",max,",   min = ",min);
      IndicatorSetDouble(INDICATOR_MAXIMUM,max);
      IndicatorSetDouble(INDICATOR_MINIMUM,min);
     }
//--- valor retorno de prev_calculated para a próxima chamada
   return(rates_total);
  }

Também Veja

Exemplos de Estilos de Indicador, Conexão entre Propriedades do Indicador e Funções, Estilos de Desenho