tenta isso.
você primeiro deverá ler o simbolo.
exemplo:
na XP:
inicio WDO é Dólar
inicio WIN é Indíce futuro
se o nome não é dolar ou indice.
comparece o campo "ISIN" (que você vê em "especificação" do ativo operado)
quando existe a palavra "AC" no campo 7 e 8,
então é uma "ação".
exemplo1: (PETR4)
ISIN=BRPETRACNPR6
==
exemplo2: (opção PETRA12)
ISIN=BRPETR4A0N84
o campo 7 e 8 está diferente de "AC" , pois está igual a "A0"
então é uma opção
tenta isso.
você primeiro deverá ler o simbolo.
exemplo:
na XP:
inicio WDO é Dólar
inicio WIN é Indíce futuro
se o nome não é dolar ou indice.
comparece o campo "ISIN" (que você vê em "especificação" do ativo operado)
quando existe a palavra "AC" no campo 7 e 8,
então é uma "ação".
exemplo1: (PETR4)
ISIN=BRPETRACNPR6
==
exemplo2: (opção PETRA12)
ISIN=BRPETR4A0N84
o campo 7 e 8 está diferente de "AC" , pois está igual a "A0"
então é uma opção
Olá @zemo, obrigado pelo retorno, mas esta regra não é válida para todas as ações e opções. Acabei de olhar na lista completa e este código varia bastante, não formando um padrão.
Por enquanto o que estou fazendo é verificar o "modo" e a validade. Ou seja, se for ação e tiver validade, então é opção (já que ações não tem validade). Em outras palavras, opção nada mais é do que uma ação com validade.
ENUM_SYMBOL_CALC_MODE symbolCalcMode = SymbolInfoInteger(symbol, SYMBOL_TRADE_CALC_MODE); datetime symbolExpiration = SymbolInfoInteger(symbol, SYMBOL_EXPIRATION_TIME); if(symbolCalcMode == SYMBOL_CALC_MODE_EXCH_STOCKS && symbolExpiration >= TimeTradeServer() ) { // é opção! }
Por enquanto este código está me atendendo.
O problema é que as corretoras XP e Clear não preenchem os strikes e outras propriedades das opções no servidor MT5.
Nas corretoras Modalmais e Terra Investimentos, que preenchem corretamente essas informações, basta verificar se SymbolInfoDouble(symbol,SYMBOL_OPTION_STRIKE) > 0 que vc vai saber se é opção ou não.
Dá uma olhada neste tópico aqui, onde postei um código que identifica todas as opções de um ativo, que funciona na Modalmais e na Terra Investimentos, mas não funciona na XP porque no servidor da XP os dados das opções (valor do strike, se é call ou put, se é americana ou europeia, etc.) não estão preenchidos.
Se você for operar com a XP ou com a Clear, poderá determinar se é opção ou não (e também obter outras informações sobre a opção) verificando o conteúdo do campo de descrição retornado por SymbolInfoString(symbol,SYMBOL_DESCRIPTION) . Veja detalhes na sexta mensagem do tópico.
![Como listar todas as opções em negociação de um ativo(symbol)? Como listar todas as opções em negociação de um ativo(symbol)?](https://c.mql5.com/36/19/como-listar-todas-as-op-es-em-negocia.jpg)
- 2018.06.25
- www.mql5.com
O problema é que as corretoras XP e Clear não preenchem os strikes e outras propriedades das opções no servidor MT5.
Nas corretoras Modalmais e Terra Investimentos, que preenchem corretamente essas informações, basta verificar se SymbolInfoDouble(symbol,SYMBOL_OPTION_STRIKE) > 0 que vc vai saber se é opção ou não.
Dá uma olhada neste tópico aqui, onde postei um código que identifica todas as opções de um ativo, que funciona na Modalmais e na Terra Investimentos, mas não funciona na XP porque no servidor da XP os dados das opções (valor do strike, se é call ou put, se é americana ou europeia, etc.) não estão preenchidos.
Se você for operar com a XP ou com a Clear, poderá determinar se é opção ou não (e também obter outras informações sobre a opção) verificando o conteúdo do campo de descrição retornado por SymbolInfoString(symbol,SYMBOL_DESCRIPTION) . Veja detalhes na sexta mensagem do tópico.
![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Bom dia,
Estou tentando selecionar as opções da lista "Observação do Mercado" e colocá-las em um array para posterior processamento, mas não encontrei uma propriedade de diferencie ações e opções.
Estou usando o seguinte código pra teste:
Para contratos futuros, a propriedade SYMBOL_TRADE_CALC_MODE retorna SYMBOL_CALC_MODE_EXCH_FUTURES, até aí tudo bem, mas tanto para ações quanto para opções está retornando SYMBOL_CALC_MODE_EXCH_STOCKS.
Várias outras propriedades que testei retornam os mesmos valores para ações e opções.
Alguém sabe alguma maneira de diferenciar ações e opções?