SymbolInfoString

Retorna a propriedade correspondente do símbolo especificado. Existem 2 variantes da função.

1. Retorna diretamente o valor da propriedade.

string  SymbolInfoString(
   string                   name,        // ativo
   ENUM_SYMBOL_INFO_STRING  prop_id      // identificador da propriedade
   );

2. Retorna true ou false dependendo do sucesso da execução da função. Em caso de sucesso, o valor da propriedade é colocado na variável receptora passada por referência como último parâmetro.

bool  SymbolInfoString(
   string                   name,        // ativo
   ENUM_SYMBOL_INFO_STRING  prop_id      // identificador da propriedade
   string&                  string_var   // variável que recebe o valor da propriedade
   );

Parâmetros

name

[in] Nome do ativo.

prop_id

[in] Identificador da propriedade do ativo. O valor pode ser um dos valores da enumeração ENUM_SYMBOL_INFO_STRING.

string_var

[out] Variável do tipo string que recebe o valor da propriedade solicitada.

Valor do Retorno

Valor de tipo string. Em caso de execução malsucedida, a informação sobre o erro pode ser obtida com a função GetLastError():

  • 5040 — parâmetro de string inválido para especificar o nome do ativo,
  • 4301 — ativo desconhecido (instrumento financeiro),
  • 4302 — ativo não selecionado no "Observação do Mercado" (não está na lista disponível),
  • 4303 — identificador da propriedade do ativo inválido.

Observação

Se a função for usada para obter informações sobre o último tick, é melhor usar SymbolInfoTick()***. É possível que não tenha havido nenhuma cotação para esse símbolo desde que o terminal se conectou à conta de negociação. Nesse caso, o valor solicitado será indefinido.

Na maioria dos casos, é suficiente usar a função SymbolInfoTick(), que permite obter em uma chamada os valores Ask, Bid, Last, Volume e a hora da chegada do último tick.

Exemplo:

#define SYMBOL_NAME "USDJPY"
 
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- obtemos dados de string para o símbolo SYMBOL_NAME
   string currency_base   = SymbolInfoString(SYMBOL_NAMESYMBOL_CURRENCY_BASE);    // Moeda base do instrumento
   string currency_profit = SymbolInfoString(SYMBOL_NAMESYMBOL_CURRENCY_PROFIT);  // Moeda de lucro
   string currency_margin = SymbolInfoString(SYMBOL_NAMESYMBOL_CURRENCY_MARGIN);  // Moeda na qual a margem é calculada
   string symbol_descript = SymbolInfoString(SYMBOL_NAMESYMBOL_DESCRIPTION);      // Descrição do símbolo
 
//--- criamos o corpo da mensagem com os dados recebidos
   string text=StringFormat("Symbol %s:\n"+
                            "- Currency Base: %s\n"+
                            "- Currensy Profit: %s\n"+
                            "- Currency Margin: %s\n"+
                            "- Symbol Description: %s",
                            SYMBOL_NAMEcurrency_base,
                            currency_profitcurrency_margin,
                            symbol_descript);
 
//--- enviamos os dados obtidos para o log
   Print(text);
   /*
   Symbol USDJPY:
   - Currency BaseUSD
   - Currensy ProfitJPY
   - Currency MarginUSD
   - Symbol DescriptionUS Dollar vs Yen
   */
  }