Propriedades de Indicador Customizado

O número de buffers de indicador que podem ser usados em um indicador customizado é ilimitado. Mas para cada array que é designado como um buffer de indicador usando a função SetIndexBuffer(), é necessário especificar o tipo de dado que ele armazenará. Este pode ser um dos valores da enumeração ENUM_INDEXBUFFER_TYPE.

ENUM_INDEXBUFFER_TYPE

ID

Descrição

INDICATOR_DATA

Dados para desenho

INDICATOR_COLOR_INDEX

Cor

INDICATOR_CALCULATIONS

Buffers auxiliares para cálculos intermediários

Um indicador customizado tem muitas configurações para fornecer uma exibição conveniente. Estas configurações são feitas através da atribuição de propriedades de indicador correspondentes usando a funções IndicatorSetDouble(), IndicatorSetInteger() e IndicatorSetString(). Identificadores de propriedades de indicador são listados na enumeração ENUM_CUSTOMIND_PROPERTY.

ENUM_CUSTOMIND_PROPERTY_INTEGER

ID

Descrição

Tipo da Propriedade

INDICATOR_DIGITS

Acuracidade de desenho de valores de indicador

int

INDICATOR_HEIGHT

Altura fixa da janela do indicador (o comando de pré-processador #property indicator_height)

int

INDICATOR_LEVELS

Número de níveis na janela do indicador

int

INDICATOR_LEVELCOLOR

Cor da linha de nível

color                      modificador = número de nível

INDICATOR_LEVELSTYLE

Estilo da linha de nível

ENUM_LINE_STYLE  modificador = número de nível

INDICATOR_LEVELWIDTH

Espessura da linha de nível

int                         modificador = número de nível

INDICATOR_FIXED_MINIMUM

Mínimo fixo para a janela do indicador. A propriedade só pode ser gravada pela função IndicatorSetInteger()

bool

INDICATOR_FIXED_MAXIMUM

Máximo fixo para a janela do indicador. A propriedade só pode ser gravada pela função IndicatorSetInteger()

bool

ENUM_CUSTOMIND_PROPERTY_DOUBLE

ID

Descrição

Tipo da Propriedade

INDICATOR_MINIMUM

Mínimo da janela do indicador

double

INDICATOR_MAXIMUM

Máximo da janela do indicador

double

INDICATOR_LEVELVALUE

Valor de nível

double                    modificador = número de nível

ENUM_CUSTOMIND_PROPERTY_STRING

ID

Descrição

Tipo da Propriedade

INDICATOR_SHORTNAME

Nome do indicador abreviado

string

INDICATOR_LEVELTEXT

Nível de descrição

string                    modificador = número de nível

Exemplos:

//--- configurações do indicador
#property indicator_separate_window
#property indicator_buffers 4
#property indicator_plots   2
#property indicator_type1   DRAW_LINE
#property indicator_type2   DRAW_LINE
#property indicator_color1  clrLightSeaGreen
#property indicator_color2  clrRed
//--- parâmetros de entrada
extern int KPeriod=5;
extern int DPeriod=3;
extern int Slowing=3;
//--- buffers do indicador
double MainBuffer[];
double SignalBuffer[];
double HighesBuffer[];
double LowesBuffer[];
//+------------------------------------------------------------------+
//| Função de inicialização do indicador customizado                 |
//+------------------------------------------------------------------+
void OnInit()
  {
//--- mapeamento de buffers do indicador
   SetIndexBuffer(0,MainBuffer,INDICATOR_DATA);
   SetIndexBuffer(1,SignalBuffer,INDICATOR_DATA);
   SetIndexBuffer(2,HighesBuffer,INDICATOR_CALCULATIONS);
   SetIndexBuffer(3,LowesBuffer,INDICATOR_CALCULATIONS);
//--- define acuracidade
   IndicatorSetInteger(INDICATOR_DIGITS,2);
//--- define níveis
   IndicatorSetInteger(INDICATOR_LEVELS,2);
   IndicatorSetDouble(INDICATOR_LEVELVALUE,0,20);
   IndicatorSetDouble(INDICATOR_LEVELVALUE,1,80);
//--- define máximo e mínimo para sub-janela
   IndicatorSetDouble(INDICATOR_MINIMUM,0);
   IndicatorSetDouble(INDICATOR_MAXIMUM,100);
//--- define a primeira barra a partir do qual o índice será desenhado
   PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,KPeriod+Slowing-2);
   PlotIndexSetInteger(1,PLOT_DRAW_BEGIN,KPeriod+Slowing+DPeriod);
//--- define estilo STYLE_DOT para a segunda linha
   PlotIndexSetInteger(1,PLOT_LINE_STYLE,STYLE_DOT);
//--- nome para Janela de Dados e rótulo da sub-janela do indicador
   IndicatorSetString(INDICATOR_SHORTNAME,"Stoch("+KPeriod+","+DPeriod+","+Slowing+")");
   PlotIndexSetString(0,PLOT_LABEL,"Main");
   PlotIndexSetString(1,PLOT_LABEL,"Signal");
//--- define valor vazio para linha de desenho
   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0.0);
   PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,0.0);
//--- inicialização concluída
  }