Есть некий символ , как выяснить фьючерс или акция ?

 

День добрый дорогие друзья по увлечению!

Как в MQL5 выяснить что  полученный  из включеyных в окружение инструментов является фьючерсом ?

 
Я сейчас проверить не могу, а разве описание символа не даёт полного понимания?
 
Alexey Viktorov #:
Я сейчас проверить не могу, а разве описание символа не даёт полного понимания?

Рылся в документации  

Информация об инструменте

Ни одно из свойств явно ,  вменяемо не определяет, что символ является фьючерсом. 

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

Например зачитать описание инструмента и найти фразу фьючерс - но это как то криво.

Второй вариант зачитать свойство "Последний день обращения" , данный вариант лучше выглядит.

p.s.

:( 

Вообще  не удивляет , MT5 не биржевой терминал, потому и язык не заточен.

Но как же  без танцев и шаманства, четко понять, что данный символ это фьючерс ?

 

SymbolInfoString(symbol,SYMBOL_CATEGORY) не оно ?

 
Maxim Kuznetsov #:
SYMBOL_CATEGORY

   string symbol_c = SymbolInfoString(symbol,SYMBOL_CATEGORY); 

   printf("[ %s ]", symbol_c );


на выходе 


2025.01.16 18:02:35.771 type (SPH5,H4) [  ]

----

p.s.

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

Это я к тому, что если на одном брокере вы что то чудесно отладили , то тот же код у другого брокера работать не будет.

Бесит конечно, просто придется писать код типа:

if (  stringБрокер  == "FINAM" )

if  (  stringБрокер == "КАКОЙ ТО ДРУГОЙ БРОКЕР С MT5" )




 

Это в Финаме:


   string symbol_c = SymbolInfoString(symbol,SYMBOL_DESCRIPTION); 

   printf("[ %s ]", symbol_c );


2025.01.16 18:13:15.789 type (SPH5,H4) [ Фьючерсный контракт SBPR-3.25 ]

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

Это конечно весьма кривой способ , програнмно определять что это фьючерс.

p.s.

Друзья подскажите , есть в РФ кто то еще на ФОНДОВОМ кроме финам на MT5  ?




 

У разных брокеров настроено по-разному.

У Финама, наверное, можно посмотреть SYMBOL_EXCHANGE - ФОРТС и SYMBOL_TRADE_CALC_MODE - SYMBOL_CALC_MODE_EXCH_FUTURES

Насколько знаю, только в Финаме MT5 остался.
 
JRandomTrader #:

У разных брокеров настроено по-разному.

У Финама, наверное, можно посмотреть SYMBOL_EXCHANGE - ФОРТС и SYMBOL_TRADE_CALC_MODE - SYMBOL_CALC_MODE_EXCH_FUTURES

Насколько знаю, только в Финаме MT5 остался.
Спасибо  , попробую.
Задался целью поправить свой индикатор.
Есть ещё свойство дата время экспирации , но считать не удалось. 
 
Yuriy Zaytsev #:
Есть ещё свойство дата время экспирации , но считать не удалось. 

Не понял.

 
Yuriy Zaytsev #:
Задался целью поправить свой индикатор.

Это правильно, индикатор на первый взгляд неплох!

 

У меня при переходе из О, где использовались длинные имена фьючей, в Ф, где используются короткие, добавилось вот такое:

void ExpBase::SetSym(void)
  {
   string str,str1[];
   ushort ch;

   sym=_Symbol;
   if(StringLen(sym)==4)
     {
      ch=StringGetCharacter(sym,3);
      if(ch>='0' || ch<='9')
        {
         ch=StringGetCharacter(sym,2);
         if((ch>='a' && ch<='z')||(ch>='A' && ch<='Z'))
           {
            str=SymbolInfoString(sym,SYMBOL_DESCRIPTION);
            if(StringSplit(str,' ',str1)>=0)
              {
               sym=str1[ArraySize(str1)-1];
              }
           }
        }
     }
   sym_base=StringSubstr(sym,0,StringFind(sym,"-"));
   sym_date=StringSubstr(sym,StringFind(sym,"-")+1);
  }