Обсуждение статьи "Биржевые данные без посредников: подключаем MetaTrader 5 к MOEX через ISS API" - страница 2

 
Denis Kirichenko #:

Станислав, спасибо за огромную проделанную работу. Тот редкий случай, когда статейный материал носит хрестоматийный характер... есть вопрос такого плана. В файле moexindex.mqh в определении перечисления MOEX_SECURITYTYPES вижу такое:


Т.е. к примеру именованная константа определена как currency·gold_metal. Наверное корректная запись могла быть такой currency_gold_metal. 

Ну и соот-но новый компилятор (build 5200) ругается, что имена некоторых идентификаторов совпадают:

После более внимательного рассмотрения вопроса, я склоняюсь к мысли, что ошибка относится не к символу дот, а к тому, что имена элементов перечислений теперь сводятся воедино между всеми перечислениями.

Ума не приложу, как такое исправить на прикладном уровне. Если влоб добавлять название перечисления к идентификатору переменной, не хватит разрешенной длины переменной в большинстве мест.

Полагаю, что пока проще всего отредактировать дубликаты руками, например, добавить номера.

 

Да, символ "дот" (· посередине, код Unicode 0x00B7) работает.

Засада в другом. Попробовал изменить перечисления. В частности:

enum MOEX_SECURITYCOLLECTIONS
{
  no_securitycollections = 0, // --//--
  sec_coll_currency_futures_delivery_all = 254, // currency_futures (currency_futures_delivery_all) Все валюты поставочные ФЬЮЧЕРСЫ
  sec_coll_currency_futures_delivery_cny = 250, // currency_futures (currency_futures_delivery_cny) CNY\/RUB поставочный ФЬЮЧЕРС
  sec_coll_currency_futures_delivery_eur = 255, // currency_futures (currency_futures_delivery_eur) EUR\/RUB поставочный ФЬЮЧЕРС
  sec_coll_currency_futures_delivery_others = 293, // currency_futures (currency_futures_delivery_others) Другие валюты поставочный ФЬЮЧЕРС
  sec_coll_currency_futures_delivery_usd = 252, // currency_futures (currency_futures_delivery_usd) USD\/RUB поставочный ФЬЮЧЕРС
...
  sec_coll_stock_shares_three = 162, // stock_shares (stock_shares_three) Уровень 3
  sec_coll_stock_shares_two = 161, // stock_shares (stock_shares_two) Уровень 2
};

Компилятор отработал хотя бы без ошибок. Но. При составлении URL скрипт moexmarket выдал такой адрес:

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=sec_coll_stock_shares_one

где в конце строки есть такое:

security_collection=sec_coll_stock_shares_one

Видимо нужно как-то модифицировать нативную ф-цию EnumToString(), чтобы получить stock_shares_one, а не sec_coll_stock_shares_one.

 
Denis Kirichenko #:

Да, символ "дот" (· посередине, код Unicode 0x00B7) работает.

Засада в другом. Попробовал изменить перечисления. В частности:

Компилятор отработал хотя бы без ошибок. Но. При составлении URL скрипт moexmarket выдал такой адрес:

где в конце строки есть такое:

Видимо нужно как-то модифицировать нативную ф-цию EnumToString(), чтобы получить stock_shares_one, а не sec_coll_stock_shares_one.

Ну, если достаточно однократного разрешения конфликта, то попробуйте вот так:

...
stock_shares·stock_shares_one = 160, // stock_shares (stock_shares_one) Уровень 1
...

Хотя конкретно с этим перечислением мне не понятно, почему элементы с чем-то конфликтуют - в частности stock_shares_one есть только в MOEX_SECURITYCOLLECTIONS (общий перечень коллекций) и в MOEX_SECURITYCOLLECTIONS_STOCK_SHARES (специфическая коллекция для отдельной секции, одна из многих), которое в моих примерах не подключено, т.к. все такие "мелкие" перечисления обложены директивой MOEX_DEMO_INPUTS и отключены по умолчанию - они зарезервированы для другого подхода сборки программ с API-биржи, где связи более жестко прописаны на этапе компиляции (т.е. грубо говоря, когда программа предназначена для конкретной секции).

 

Здравствуйте, уважаемые знатоки!

Есть необходимость протестировать советника в тестере стратегий MT5. Подскажите, как простому пользователю, не владеющему навыком администрирования и программирования подключить MT5 к MOEX-FORTS (брокер БКС) в текущих реалиях? 

Благодарю!

 
Profitexcell #:

Есть необходимость протестировать советника в тестере стратегий MT5. Подскажите, как простому пользователю, не владеющему навыком администрирования и программирования подключить MT5 к MOEX-FORTS (брокер БКС) в текущих реалиях? 

Вопрос из двух частей, потому ответ - тоже из двух.

В тестере стратегий можно тестировать советник на кастом-инструментах, создаваемых на данных, запрашиваемых по описанному API напрямую от MOEX (без брокера).

Указанный брокер, насколько я знаю, не работает с МТ5, так что торговать из МТ5 без навыков администрирования и программирования (нужных для интеграции с интерфейсами, предлагаемыми брокером) - проблематично.