Informações de Mercado : SymbolInfoDouble

Retorna a propriedade correspondente de um ativo especificado. Existem 2 variantes da função.

1. Imediatamente retorna o valor da propriedade.

double  SymbolInfoDouble(
string                   name,       // ativo
ENUM_SYMBOL_INFO_DOUBLE  prop_id     // identificador da propriedade
);

2. Retorna true ou false dependendo se a função for executada com sucesso. Em caso de sucesso, o valor da propriedade é colocado em uma variável recipiente, passada por referênce atráves do último parâmetro.

bool  SymbolInfoDouble(
string                   name,       // ativo
ENUM_SYMBOL_INFO_DOUBLE  prop_id,    // identificador da propriedade
double&                  double_var  // aqui nós assumimos o valor da propriedade
);

Parâmetros

name

[in] Nome do ativo.

prop_id

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

double_var

[out] Variável de tipo double recebendo o valor da propriedade solicitada.

Valor do Retorno

Valor de tipo double. Em caso de falha de execução, a informação sobre o erro pode ser obtida usando a função GetLastError():

•5040 – parâmetro de string inválido para especificar um nome de ativo,
•4301 – ativo desconhecido (instrumento financeiro),
•4302 – ativo não está selecionado no “Observador de Mercado” (não encontrado na lista de ativos disponíveis),
•4303 – identificador inválido de uma propriedade de ativo.
Observação

É recomendável usar SymbolInfoTick() se a função for usada para obter informações sobre o último tick. É bom possível que nenhuma cotação tenha aparecido ainda desde que o terminal se conectou a uma conta de negociação. Em tal situação, o valor solicitado será indefinido

Na maioria dos casos, é suficiente usar a função SymbolInfoTick() permitindo a um usuário receber os valores dos preços Compra, Venda, Último, Volume e a hora da chegada do último tick através de uma única chamada.

Exemplo:

void OnTick()
{
//— obtém spread a partir das propriedade do ativo
bool spreadfloat=SymbolInfoInteger(Symbol(),SYMBOL_SPREAD_FLOAT);
string comm=StringFormat(“Spread %s = %I64d pontos\r\n”,
spreadfloat?”flutuante”:”fixo”,
SymbolInfoInteger(Symbol(),SYMBOL_SPREAD));
//— agora vamos calcular nós mesmos o spread
double ask=SymbolInfoDouble(Symbol(),SYMBOL_ASK);
double bid=SymbolInfoDouble(Symbol(),SYMBOL_BID);
double spread=ask-bid;
int spread_points=(int)MathRound(spread/SymbolInfoDouble(Symbol(),SYMBOL_POINT));
comm=comm+”Spread calculada = “+(string)spread_points+” pontos”;
Comment(comm);
}

6 comentários sobre “Informações de Mercado : SymbolInfoDouble

  1. Função muito interessante.. obrigado por comparatilhar.

  2. Informação muito útil! Obrigado.

  3. Post a ler com atenção, interessante função.

  4. Importante atentar para esse dado

Deixe um comentário