Estilos de Desenho

Ao criarum indicador customizado, pode-se especificar um dos 18 tipos de plotagem gráfica (como exibidos na janela do gráfico principal ou em uma sub-janela do gráfico), cujos valores são especificados na enumeração ENUM_DRAW_TYPE.

Em um indicador customizado, é permitido usar quaisquer tipos de indicador construído/desenho. Cada tipo de construção requer especificação de um a cinco arrays globais para armazenar dados necessários para o desenho. Estes arrays de dados devem ser associados com buffers de indicador usando a função SetIndexBuffer(). O tipo de dados de ENUM_INDEXBUFFER_TYPE deve ser especificado para cada buffer.

Dependendo do estilo de desenho, pode-se necessitar de um a quatro buffers de valor (marcados como INDICADOR_DATA). Se um estilo admite alternação dinâmica de cores (todos os estilos contém COLOR nos seus nomes), então você precisará de um buffer adicional de cor (tipo indicado INDICATOR_COLOR_INDEX). Os buffers de cor são sempre vinculados após os buffers de valores correspondendo ao estilo.

ENUM_DRAW_TYPE

ID

Descrição

Estruturas de Dados

Buffers de cor

DRAW_NONE

Não desenhado

1

0

DRAW_LINE

Linha

1

0

DRAW_SECTION

Seção

1

0

DRAW_HISTOGRAM

Histograma a partir da linha zero

1

0

DRAW_HISTOGRAM2

Histograma de dois buffers do indicador

2

0

DRAW_ARROW

Desenha setas

1

0

DRAW_ZIGZAG

Estilo Zigzag permite divisão vertical na barra

2

0

DRAW_FILLING

Preenchimento de cor entre dos dois níveis

2

0

DRAW_BARS

Exibe como uma seqüência de barras

4

0

DRAW_CANDLES

Exibe como um seqüência de candles

4

0

DRAW_COLOR_LINE

Linha Multicolorida

1

1

DRAW_COLOR_SECTION

Divisão Multicolorida

1

1

DRAW_COLOR_HISTOGRAM

Histograma multicolorida a partir da linha zero

1

1

DRAW_COLOR_HISTOGRAM2

Histograma multicolorido dos dois buffers do indicador

2

1

DRAW_COLOR_ARROW

Desenho de setas multicoloridas

1

1

DRAW_COLOR_ZIGZAG

ZigZag Multicolorido

2

1

DRAW_COLOR_BARS

Barras multicoloridas

4

1

DRAW_COLOR_CANDLES

Candles multicoloridos

4

1

 

Para refinar a exibição dos tipos de desenho selecionados, identificadores listados em ENUM_PLOT_PROPERTY são usados.

Para funções PlotIndexSetInteger() e PlotIndexGetInteger()

ENUM_PLOT_PROPERTY_INTEGER

ID

Descrição

Tipo da Propriedade

PLOT_ARROW

Código de seta para estilo DRAW_ARROW

uchar

PLOT_ARROW_SHIFT

Deslocamento vertical de setas para estilo DRAW_ARROW

int

PLOT_DRAW_BEGIN

Número de barras iniciais sem desenho e valores na Janela de Dados

int

PLOT_DRAW_TYPE

Tipo de construção gráfica

ENUM_DRAW_TYPE

PLOT_SHOW_DATA

Sinal de exibição de valores de construção na Janela de Dados

bool

PLOT_SHIFT

Deslocamento da plotagem do indicador ao longo do eixo tempo em barras

int

PLOT_LINE_STYLE

Estilo de linha de desenho

ENUM_LINE_STYLE

PLOT_LINE_WIDTH

A espessura da linha de desenho

int

PLOT_COLOR_INDEXES

O número de cores

int

PLOT_LINE_COLOR

O índice de um buffer contendo a cor de desenho

color       modificador = número de índice de cores

 

Para a função PlotIndexSetDouble()

ENUM_PLOT_PROPERTY_DOUBLE

ID

Descrição

Tipo da Propriedade

PLOT_EMPTY_VALUE

Um valor vazio para plotagem, para a qual não há desenho

double

Para a função PlotIndexSetString()

ENUM_PLOT_PROPERTY_STRING

ID

Descrição

Tipo da Propriedade

PLOT_LABEL

O nome da série gráfica do indicador para exibir na Janela de Dados Ao trabalhar com estilos gráficos complexos exigindo vários buffers de indicador para a exposição, os nomes para cada buffer pode ser especificado utilizando ";" como separador. O código de exemplo é mostrado na DRAW_CANDLES

string

5 estilos podem ser usados para desenhar linhas em indicadores customizados. Eles são válidos somente para a espessura de linha 0 ou 1.

ENUM_LINE_STYLE

ID

Descrição

STYLE_SOLID

Linha sólida

STYLE_DASH

Linha tracejada

STYLE_DOT

Linha pontilhada

STYLE_DASHDOT

Linha traço-ponto

STYLE_DASHDOTDOT

Traço - dois pontos

 

Para definir o estilo de desenho de linha e o tipo de desenho, a função PlotIndexSetInteger()é usada. Para as extensões de Fibonacci, a espessura e o estilo de desenho dos níveis podem ser indicados usando a função ObjectSetInteger().

Exemplo:

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots   1
//--- buffers do indicador
double         MABuffer[];
//+------------------------------------------------------------------+
//| Função de inicialização do indicador customizado                 |
//+------------------------------------------------------------------+
void OnInit()
  {
//--- Associa o array ao buffer do indicador com índice 0
   SetIndexBuffer(0,MABuffer,INDICATOR_DATA);
//--- Define o desenho da linha
   PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_LINE);
//--- Define o estilo da linha
   PlotIndexSetInteger(0,PLOT_LINE_STYLE,STYLE_DOT);
//--- Define cor de linha
   PlotIndexSetInteger(0,PLOT_LINE_COLOR,clrRed);
//--- Define espessura de linha
   PlotIndexSetInteger(0,PLOT_LINE_WIDTH,1);
//--- Define rótulos para a linha
   PlotIndexSetString(0,PLOT_LABEL,"Moving Average");
//---
  }
//+------------------------------------------------------------------+
//| 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[])
  {
//--- 
   for(int i=prev_calculated;i<rates_total;i++)
     {
      MABuffer[i]=close[i];
     }
//--- valor retorno de prev_calculated para a próxima chamada
   return(rates_total);
  }