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

 

в истории есть ордер по символу которого уже нет в текущем списке символов. мне нужно посчитать прибыль в пунктах по этому ордеру. как можно получить MODE_POINT для этого символа?

что интересно: в отчете показана цена 73.50. т.е. размер пункта 0.01 и терминал про это откудато знает. кто знает откуда он ее взял?

 

Если символ скрыт в "Обзоре рынка", но он имеется в полном списке, то можно из файла.

Если его уже нет в полном списке (не редкая ситуаиця, например символ "AUDUSD.usd" переименовали просто в "AUDUSD") - никак.

 
это фьюч который уже истек следовательно его действительно нет нигде. но ведь в терминале-то стоит цифра с правильным к-вом знаков после запятой - ну вот откуда он ее взял?
 
ForexTools:
это фьюч который уже истек следовательно его действительно нет нигде. но ведь в терминале-то стоит цифра с правильным к-вом знаков после запятой - ну вот откуда он ее взял?
Из истории торгового счета, которая никак не зависит от текущих котируемых торговых инструментов. Это просто записи, сделанные когда-то.
 
hrenfx:
Из истории торгового счета, ... Это просто записи, сделанные когда-то.

насколько я знаю история НЕ хранится в терминале - она подкачивается с сервера.

ладно - буду определять по ценам отбрасывая хвостовые нули 73.5000000. в какой позиции стоит последний знак != 0 столько и пунктов. правда для круглой цифры 73.50 получится 0.1 но если перебрать все имеющиеся цены (открытия, закрытия, стопа и тейка) то скорее всего в какойто из них всетаки будет не округленная цифра. правда все равно - танцы с бубном.....

 

можно узнать MODE_DIGITS

не устроит?

 
AlexSTAL:

можно узнать MODE_DIGITS

не устроит?

нельзя - символа то уже нету. что MODE_POINT, что MODE_DIGITS - вернут ноль

 

Если есть история в каталоге - можно, вот накидал:

int GetDigits(string sym)
  {
   int tmp = -1;
   int ExtHandle;
   int i_period;
   int tmpint;
   string tmpstr;
   if (MarketInfo(sym, MODE_BID) != 0)
      tmp = MarketInfo(sym, MODE_DIGITS);
   else {
        for (int j = 0; j < 9; j++)
         {
         switch(j)
          {
            case 0: i_period = PERIOD_M1; break;
            case 1: i_period = PERIOD_M5; break;
            case 2: i_period = PERIOD_M15; break;
            case 3: i_period = PERIOD_M30; break;
            case 4: i_period = PERIOD_H1; break;
            case 5: i_period = PERIOD_H4; break;
            case 6: i_period = PERIOD_D1; break;
            case 7: i_period = PERIOD_W1; break;
            case 8: i_period = PERIOD_MN1; break;
            default:i_period = 0; break;
          }
         ExtHandle = FileOpenHistory(sym + i_period + ".hst", FILE_BIN|FILE_READ);
         if (ExtHandle < 0) continue;
         tmpint = FileReadInteger(ExtHandle, LONG_VALUE);
         tmpstr = FileReadString(ExtHandle, 64);
         tmpstr = FileReadString(ExtHandle, 12);
         tmpint = FileReadInteger(ExtHandle, LONG_VALUE);
         tmp = FileReadInteger(ExtHandle, LONG_VALUE);
         FileClose(ExtHandle);
         break;
         }
   }
   return(tmp);
  }
 

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

буду определять по ценам отбрасывая хвостовые нули 73.5000000. в какой позиции стоит последний знак != 0 столько и пунктов.

работает. правда только если хоть одна цена с ненулем в самом последнем знаке, а если все цены "круглые" - удесятеряет все :(

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