ФОРТС не транслируется SYMBOL_ISIN

 

Добрый день, уважаемые разработчики!

Почему не транслируется SYMBOL_ISIN для фьючерсов?

qfs_data[i].fut_code = SymbolInfoString(qfs_data[i].tiker, SYMBOL_ISIN);


 
prostotrader:

Добрый день, уважаемые разработчики!

Почему не транслируется SYMBOL_ISIN для фьючерсов?


У фьючерсов ISIN бывает вообще?

Что то не нашел такое на бирже.

Может нужен SYMBOL_BASIS ?

 
prostotrader:

Добрый день, уважаемые разработчики!

Почему не транслируется SYMBOL_ISIN для фьючерсов?


А на акциях вроде работает. Проверьте пожалуйста на акциях - интересен сам механизм: для фьючерсов и для акций.

 
9Sergey Chalyshev:

У фьючерсов ISIN бывает вообще?

Что то не нашел такое на бирже.

Может нужен SYMBOL_BASIS ?

Нет ISIN - это код контракта

Например: HYDR-3.19 кодируется в HYH9

Описание здесь:

http://moex.com/a214

SYMBOL_BASIS - должен быть СПОТ, но он берется не верно.

Н-Р Для GAZR-3.19 СПОТ должен быть GAZP, а если взять SYMBOL_BASIS , то возвращается GAZR 

Московская Биржа
Московская Биржа
  • www.moex.com
Коды срочных контрактов  состоят из следующих частей: C M Y Группа контрактов Код базового актива (поле "C") Код базового актива на срочном рынке  Название базового актива  Для опционов в поле "цена страйк" указывается цена базового актива (цена фьючерсного контракта). В свою очередь, цена фьючерсного...
 
Vladimir Karputov:

А на акциях вроде работает. Проверьте пожалуйста на акциях - интересен сам механизм: для фьючерсов и для акций.

Да, по акциям возвращается.

По быстренькому написал кодирование для Фондовых контрактов

//+------------------------------------------------------------------+
//| Get Tiker ISIN function                                          |
//+------------------------------------------------------------------+
string GetISIN(const string a_name)
{
  string prefix;
  string result[];
  string res_0;
  string res_1;
  if(StringFind(a_name, "AFLT") > -1) {prefix = "AF";} else
  if(StringFind(a_name, "ALRS") > -1) {prefix = "AL";} else
  if(StringFind(a_name, "CHMF") > -1) {prefix = "CH";} else
  if(StringFind(a_name, "FEES") > -1) {prefix = "FS";} else
  if(StringFind(a_name, "GAZR") > -1) {prefix = "GZ";} else
  if(StringFind(a_name, "GMKR") > -1) {prefix = "GM";} else
  if(StringFind(a_name, "HYDR") > -1) {prefix = "HY";} else
  if(StringFind(a_name, "LKOH") > -1) {prefix = "LK";} else
  if(StringFind(a_name, "MAGN") > -1) {prefix = "MG";} else
  if(StringFind(a_name, "MGNT") > -1) {prefix = "MN";} else
  if(StringFind(a_name, "MOEX") > -1) {prefix = "ME";} else
  if(StringFind(a_name, "MTSI") > -1) {prefix = "MT";} else
  if(StringFind(a_name, "NLMK") > -1) {prefix = "NM";} else
  if(StringFind(a_name, "NOTK") > -1) {prefix = "NK";} else
  if(StringFind(a_name, "PLZL") > -1) {prefix = "PZ";} else
  if(StringFind(a_name, "ROSN") > -1) {prefix = "RN";} else
  if(StringFind(a_name, "RTKM") > -1) {prefix = "RT";} else
  if(StringFind(a_name, "SBPR") > -1) {prefix = "SP";} else
  if(StringFind(a_name, "SBRF") > -1) {prefix = "SR";} else
  if(StringFind(a_name, "SNGP") > -1) {prefix = "SG";} else
  if(StringFind(a_name, "SNGR") > -1) {prefix = "SN";} else
  if(StringFind(a_name, "TATN") > -1) {prefix = "TT";} else
  if(StringFind(a_name, "TRNF") > -1) {prefix = "TN";} else
  if(StringFind(a_name, "VTBR") > -1) {prefix = "VB";}
  ushort u_sep = StringGetCharacter(".",0);
  int k = StringSplit(a_name, u_sep, result); 
  if(k > 0)
  {
    res_0 = result[0];
    res_1 = result[1];  
    u_sep = StringGetCharacter("-",0);
    k = StringSplit(res_0, u_sep, result);
    if(k > 0)
    {
      int month = int(StringToInteger(result[1]));
      switch(month)
      {
        case 1: prefix += "F";
        break;
        case 2: prefix += "G";
        break;
        case 3: prefix += "H";
        break;
        case 4: prefix += "J";
        break;
        case 5: prefix += "K";
        break;
        case 6: prefix += "M";
        break;
        case 7: prefix += "N";
        break;
        case 8: prefix += "Q";
        break;
        case 9: prefix += "U";
        break;
        case 10: prefix += "V";
        break;
        case 11: prefix += "X";
        break;
        case 12: prefix += "Z";
        break;
      }
      prefix += StringSubstr(res_1, 1, 1);
      return(prefix);
    }
  }
  return("");
}
 
Кстати, в КВИКе, фьючерсный ордер отправляется по ISIN коду.
 

prostotrader
:

Нет ISIN - это код контракта

Например: HYDR-3.19 кодируется в HYH9

Описание здесь:

http://moex.com/a214

SYMBOL_BASIS - должен быть СПОТ, но он берется не верно.

Н-Р Для GAZR-3.19 СПОТ должен быть GAZP, а если взять SYMBOL_BASIS , то возвращается GAZR 

prostotrader:
Кстати, в КВИКе, фьючерсный ордер отправляется по ISIN коду.

Ты путаешь.

У фьючерса не бывает ISIN. 

В квике это "SECCODE", короткий код, в МТ5 его нету.

 
Sergey Chalyshev:

Ты путаешь.

У фьючерса не бывает ISIN. 

В квике это "SECCODE", короткий код, в МТ5 его нету.

:)

Короткий код это и есть ISIN (SECCODE в квике) :)

Добавлено

ISIN — (International Securities Identification Number) — международный идентификационный код ценной бумаги,
представляет собой 12-разрядный буквенно-цифровой код, который не содержит информации,
характеризующей финансовый инструмент, а служит для однозначной идентификации ценной бумаги
при проведении сделок и расчетов с ценными бумагами.

Добавлено

В МТ5 ISIN (в терминале) его нет, но сервер конвертирует название фьюча (н-р HYDR-3.19)  в ISIN (короткий код - HYH9 ) и отправляет ордер на

Биржу с ISIN (см. док Плаза 2) 

 

Сереж!

В подвале мануал Плаза 2

Там очень много полезной инфы.

Файлы:
p2gate_ru.zip  961 kb
 
prostotrader:

:)

Короткий код это и есть ISIN :)


Значит они напутали )
 
prostotrader:

Сереж!

В подвале мануал Плаза 2

Там очень много полезной инфы.

До плазы еще не добрался )

а в квике используется короткий код

Причина обращения: