ChartWindowFind

A função retorna o número para uma sub-janela quando um indicador é desenhado. Existem 2 variantes da função.

1. As pesquisas de função no gráfico indicado para a sub-janela especificado com o "nome abreviado" do indicador (o nome abreviado é exibida na parte superior esquerda da sub-janela), e retorna o número da sub-janela em caso de sucesso.

int  ChartWindowFind(
   long     chart_id,                  // identificar gráfico
   string   indicator_shortname        // nome abreviado do indicador, veja INDICATOR_SHORTNAME

2. A função deve ser chamado a partir de um indicador personalizado. Retorna o número de uma sub-janela onde um indicador está funcionando.

int  ChartWindowFind();

Parâmetros

chart_id

[in]  ID Gráfico. 0 (zero) indica a sub-janela gráfico principal.

indicator_shortname

[in]  Nome abreviado do indicador.

Valor do Retorno

Número da sub-janela em caso de sucesso. Em caso de falha a função retorna -1.

Observação

Se a segunda variante da função (sem parâmetros) é chamado de um script ou Expert Advisor, a função retorna -1.

Não confundir o nome abreviado de um indicador e um nome de arquivo, que é especificado quando o indicador é criado usando as funções iCustom() e IndicatorCreate(). Se o nome abreviado de um indicador não é definido de forma explicita, então o nome do arquivo contendo o código-fonte do indicador será especificado durante a compilação.

É importante para formar corretamente o nome abreviado de um indicador, que é registrado na propriedade INDICATOR_SHORTNAME usando a função IndicatorSetString(). É recomendado que o nome abreviado deve conter valores de todos os parâmetros de entrada do indicador, porque sendo o indicador excluído do gráfico pela função ChartIndicatorDelete(), ele é identificado pelo nome abreviado.

Exemplo:

#property script_show_inputs
//--- parâmetros de entrada
input string   shortname="MACD(12,26,9)";
//+------------------------------------------------------------------+
//| Retorna o múmero da janela do gráfico com este indicador         |
//+------------------------------------------------------------------+
int GetIndicatorSubWindowNumber(long chartID=0,string short_name="")
  {
   int window=-1;
//--- 
   if((ENUM_PROGRAM_TYPE)MQL5InfoInteger(MQL5_PROGRAM_TYPE)==PROGRAM_INDICATOR)
     {
      //--- a função é chamada a partir do indicador, o nome não é necessário
      window=ChartWindowFind();
     }
   else
     {
      //--- a função é chamada a partir de um Expert Advisor ou script
      window=ChartWindowFind(0,short_name);
      if(window==-1) Print(__FUNCTION__+"(): Erro = ",GetLastError());
     }
//---
   return(window);
  }
//+------------------------------------------------------------------+
//| Programa Script da função start (iniciar)                        |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   int window=GetIndicatorSubWindowNumber(0,shortname);
   if(window!=-1)
      Print("Indicador "+shortname+" está na janela #"+(string)window);
   else
      Print("Indicador "+shortname+" não foi encontrado. window = "+(string)window);
  }

Também Veja

ObjectCreate(), ObjectFind()