Discussão do artigo "Dados de mercado sem intermediários: conectando MetaTrader 5 à MOEX via ISS API" - página 2

 
Denis Kirichenko moexindex.mqh, na definição da enumeração MOEX_SECURITYTYTYPES, vejo o seguinte:


Por exemplo, uma constante nomeada é definida como currency-gold_metal. Provavelmente, a entrada correta poderia ser currency_gold_metal.

E assim, o novo compilador (build 5200) jura que os nomes de alguns identificadores coincidem:

Após uma análise mais detalhada do problema, estou inclinado a pensar que o erro não está relacionado ao símbolo de ponto, mas ao fato de que os nomes dos itens de enumeração agora estão consolidados entre todas as enumerações.

Não tenho ideia de como corrigir isso no nível do aplicativo. Se você adicionar o nome da enumeração ao identificador da variável, não terá comprimento suficiente permitido para a variável na maioria dos lugares.

Acho que o mais fácil por enquanto é editar as duplicatas manualmente, por exemplo, para adicionar números.

 

Sim, ocaractere de ponto (- no meio, código Unicode 0x00B7) funciona.

Há outro problema. Tentei alterar as enumerações. Em particular:

enum MOEX_SECURITYCOLLECTIONS
{
  no_securitycollections = 0, // --//--
  sec_coll_currency_futures_delivery_all = 254, // currency_futures (currency_futures_delivery_all) Todas as moedas que podem ser entregues FUCHERS
  sec_coll_currency_futures_delivery_cny = 250, // currency_futures (currency_futures_delivery_cny) FUCHERS de entrega de CNY\/RUB
  sec_coll_currency_futures_delivery_eur = 255, // currency_futures (currency_futures_delivery_eur) FUCHERS de entrega de EUR\/RUB
  sec_coll_currency_futures_delivery_others = 293, // currency_futures (currency_futures_delivery_others) FUCHERS de entrega de outras moedas
  sec_coll_currency_futures_delivery_usd = 252, // currency_futures (currency_futures_delivery_usd) FUCHERS de entrega de USD\/RUB
...
  sec_coll_stock_shares_three = 162, // stock_shares (stock_shares_three) Nível 3
  sec_coll_stock_shares_two = 161, // stock_shares (stock_shares_two) Nível 2
};

O compilador funcionou, pelo menos, sem erros. Mas. Ao compilar o URL, o script moexmarket produziu esse URL:

2025.08.18 19:50:05.260 Alert: Problematic URL: https://iss.moex.com/iss/engines/engine_stock/markets/shares/securities.json?iss.meta=off&leaders=1&security_collection=s ec_coll_stock_shares_one

onde tem isso no final da linha:

security_collection= sec_coll_stock_shares_one

Aparentemente, precisamos de alguma forma modificar a função nativa EnumToString() para obter stock_shares_one em vez de sec_coll_stock_shares_one.

 
Denis Kirichenko moexmarket forneceu este endereço:

onde, no final da linha, há isto:

Aparentemente, precisamos de alguma forma modificar a função nativa EnumToString() para obter stock_shares_one em vez de sec_coll_stock_shares_one.

Bem, se uma resolução de conflito única for suficiente, tente isso:

...
stock_shares·stock_shares_one = 160, // stock_shares (stock_shares_one) Nível 1
...

Embora especificamente com essa enumeração, não esteja claro para mim por que os elementos entram em conflito com algo - em particular, stock_shares_one está apenas em MOEX_SECURITYCOLLECTIONS (uma lista geral de coleções) e em MOEX_SECURITYCOLLECTIONS_STOCK_SHARES (uma coleção específica para uma determinada seção, uma de muitas), que não está conectada em meus exemplos, pois.porque todas essas enumerações "pequenas" são cobertas pela diretiva MOEX_DEMO_INPUTS e desativadas por padrão - elas são reservadas para uma abordagem diferente de criação de programas a partir do intercâmbio de APIs, em que os links são definidos de forma mais rigorosa no momento da compilação (ou seja, grosso modo, quando o programa é destinado a uma seção específica).

 

Olá, caros conhecedores!

Preciso testar um Expert Advisor no testador de estratégias do MT5. Vocês podem me dizer como um usuário simples, que não tem conhecimentos de administração e programação, pode conectar o MT5 ao MOEX-FORTS (corretor BKS) nas realidades atuais?

Muito obrigado!

 
Profitexcell testador de estratégias do MT5. Você pode me dizer como um usuário simples, que não tem conhecimentos de administração e programação, pode conectar o MT5 ao MOEX-FORTS (corretor BKS) nas realidades atuais?

Essa é uma pergunta dividida em duas partes, portanto, a resposta também é dividida em duas partes.

No testador de estratégias, é possível testar um Expert Advisor em ferramentas personalizadas criadas com base nos dados solicitados por meio da API descrita diretamente do MOEX (sem um corretor).

O corretor mencionado, até onde eu sei, não funciona com o MT5, portanto, é problemático negociar a partir do MT5 sem habilidades administrativas e de programação (necessárias para a integração com as interfaces oferecidas pelo corretor).