Как получить перечень всех возможных рыночных инструментов?

 
Добрый день.
Есть ли возможность в MQL4 получить перечень всех имеющихся у брокера рыночных инструментов? Желательно с информацией о группе инструмента (форекс/CFD/фьючерсы).

Задавал этот вопрос полгода назад, см. "Как получить перечень всех возможных рыночных инструментов?" но похоже воз и ныне там?
 
К сожалению, пока такой возможности нет. В следующих билдах наверное будем добавлять новые функции в MQL4.
 
В следующих билдах наверное будем добавлять новые функции в MQL4.
Примерный пессимистичный прогноз можете дать? Например, через год реально?

Ренат, если не сложно - поделитесь форматом symbols.raw - насколько я понимаю МТ4 как и МТ3 при первом коннекте к брокеру стягивает весь перечень символов в этот файл. В этом случае пока функции нет - думаю можно будет написать несложный импорт через DLL.
 
В следующих билдах наверное будем добавлять новые функции в MQL4.
Примерный пессимистичный прогноз можете дать? Например, через год реально?

Ренат, если не сложно - поделитесь форматом symbols.raw - насколько я понимаю МТ4 как и МТ3 при первом коннекте к брокеру стягивает весь перечень символов в этот файл. В этом случае пока функции нет - думаю можно будет написать несложный импорт через DLL.

Думаю, что реально к следующему билду (мы сейчас делаем один билд в месяц примерно). Оказывается с прошлого запроса уже 7 месяцев прошло.

Symbols.raw представляет собой массив структур ConSymbol. Детального описания делать не буду(есть множество полей только для внутреннего использования) - многое можно понять из комментариев.
Вот описание структур:
enum  { EXE_REQUEST,EXE_INSTANT,EXE_MARKET };
enum  { TRADE_NO,TRADE_CLOSE,TRADE_FULL };
enum  { SWAP_BY_POINTS,SWAP_BY_DOLLARS, SWAP_BY_INTEREST };
enum  { PROFIT_CALC_FOREX,PROFIT_CALC_CFD,PROFIT_CALC_FUTURES };
enum  { MARGIN_CALC_FOREX,MARGIN_CALC_CFD,MARGIN_CALC_FUTURES,MARGIN_CALC_CFDINDEX };
//+------------------------------------------------------------------+
//| инструменты                                                      |
//+------------------------------------------------------------------+
struct ConSession
  {
   short             open_hour,open_min;
   short             close_hour,close_min;
   int               open,close;             // расчитанные значения в минутах
   short             reserved[7];
  };

struct ConSessions
  {
   //----
   ConSession        quote[3];               // периоды получения котировок
   ConSession        trade[3];               // доступное время торговли
   //----
   int               quote_overnight;        // индекс сессий котировок содержащих переход через ноль, по умолчанию=-1
   int               trade_overnight;        // индекс сессий торговли содержащих переход через ноль, по умолчанию=-1
   int               reserved[2];
  };
//----
//----
struct ConSymbol
  {
   //---- общие описания
   char              symbol[12];             // имя
   char              description[64];        // описание
   char              source[12];             // синоним для сбора котировок
   char              currency[12];           // валютная база (USD,CHF, etc)
   int               type;                   // тип инструмента (группа инструмента)
   int               digits;                 // кол-во точек после запятой
   int               trade;                  // флаг в торгах
   //---- внешние характеристики
   COLORREF          background_color;       // цвет фона инструмента
   int               count;                  // позиция в общем списке инструментов
   int               count_original;         // оригинальная позиция в списке
   int               external_unused[7];
   //---- сессии
   int               realtime;               // флаг использования рилтайм фидера
   time_t            starting;               // время начала торгов
   time_t            expiration;             // время истечения торгов
   ConSessions       sessions[7];            // разрешение на доступ по часам
   //---- профиты
   int               profit_mode;            // тип расчёта профитов
   int               profit_indirect;        // обратный расчет прибылей
   //---- фильтрация
   int               filter;                 // значение фильтрации (если меньше 1, фильтр выключен)
   int               filter_counter;         // счетчик фильтрации
   double            filter_limit;           // максимально допустимое отклонение в%от последней цены
   double            filter_reserved;        // зарезервировано
   int               logging;                // флаг включения логгирования
   //---- спред и свопы
   int               spread;                 // величина спреда
   int               spread_balance;         // баланс распределения спреда
   int               exemode;                // режим котирования
   int               swap_enable;            // разрешение взятия свопа
   int               swap_type;              // тип свопа
   double            swap_long,swap_short;   // величина овернайт свопа
   int               swap_rollover3days;     // день тройного пересчета свопов
   double            contract_size;          // величина контракта
   double            tick_value;             // цена одного пункта
   double            tick_size;              // размер одного пункта
   int               stops_level;            // величина отступа стопов
   //----            овернайты и прочие свопы
   int               gtc_pendings;           // указание закрывать отложенные ордера в конце дня
   //---- расчёт маржи
   int               margin_mode;            // тип расчетов маржи
   double            margin_initial;         // маржевые требования
   double            margin_maintenance;     // обязательные маржевые требования
   double            margin_hedged;          // маржевые требования на хеджируемых позициях
   double            margin_divider;         // делитель маржи
   //----            расчитываемые
   double            point;                  // величина пункта 1/pow(10,floats)
   double            multiply;               // величина пункта pow(10,floats)
   double            bid_tickvalue;          // цена одного пункта для бида
   double            ask_tickvalue;          // стоимость пипса для аска
   //----
   int               long_only;              // по данному инструменту можно держать только позиции на покупку
   int               instant_max_volume;     // максимальный объём лотов для Instant Execution
   //----
   char              margin_currency[12];    // валюта маржевых требований
   int               unused[27];             // зарезервировано
  };
 
Благодарю за ответ. Прошу уточнить описание следующих типов:

COLORREF (используется в background_color)
time_t (starting, expiration) - это обычный Unix timestamp? То есть длина обычного Integer?
 
COLORREF - 4 байта
time_t - 4 байта