Брокер не дает стоимость тика, что делать?

 
Добрый день, друзья.
Столкнулся с такой проблемой, на некоторых инструментах не могу получить стоимость тика в валюте депозита.
Мне эта величина необходима для расчета рисков по позиции.
Обычно я пользовался таким определением
double tick_money=MarketInfo(_Symbol,MODE_TICKVALUE);

и если на валютах все проходит нормально, то на некоторых других инструментах часто возвращается пустое значение.
Как быть? Есть ли альтернативные способы получения этой величины?
 

Ваш вопрос относится к MQL5?

Попробуйте такой код, не првоерял

double tick_size = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_SIZE); // Получаем размер тика
double tick_value = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_VALUE); // Стоимость одного тика в валюте котировки

if(tick_value == 0)
{
   double current_price = SymbolInfoDouble(_Symbol, SYMBOL_BID); // Текущая цена
   string base_currency = AccountInfoString(ACCOUNT_CURRENCY); // Валюта депозита
   string symbol_currency = SymbolInfoString(_Symbol, SYMBOL_CURRENCY_PROFIT); // Валюта прибыли инструмента

   if(base_currency != symbol_currency) 
   {
      // Если валюта депозита и валюта прибыли не совпадают, требуется конвертация
      string conversion_pair = symbol_currency + base_currency;

      // Проверяем, существует ли прямая котировка
      if(SymbolSelect(conversion_pair, true))
      {
         double conversion_rate = SymbolInfoDouble(conversion_pair, SYMBOL_BID);
         tick_value = tick_size * conversion_rate;
      }
      else
      {
         // Если прямой котировки нет, проверяем обратную котировку
         string inverse_pair = base_currency + symbol_currency;
         if(SymbolSelect(inverse_pair, true))
         {
            double conversion_rate = SymbolInfoDouble(inverse_pair, SYMBOL_BID);
            tick_value = tick_size / conversion_rate;
         }
         else
         {
            // Если не существует ни прямой, ни обратной котировки, выводим сообщение об ошибке
            Print("Не удалось найти конверсионную пару для ", symbol_currency, " и ", base_currency);
         }
      }
   }
   else
   {
      tick_value = tick_size; // Если валюты совпадают, просто берем tick_size
   }
}
 
Gennady Mazur:
Есть ли альтернативные способы получения этой величины?

Есть в свойствах символа.

SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_VALUE);
Rashid Umarov #:

Ваш вопрос относится к MQL5?

Вероятней всего это mql4. Вопрос в разделе об mql4 и ищется альтернатива MarketInfo() которой в mql5 нет.
 
Rashid Umarov #:

Ваш вопрос относится к MQL5?

Попробуйте такой код, не првоерял

спасибо, попробую...

 
Alexey Viktorov #:

Есть в свойствах символа.

это для мкл5, знаю, хотя тоже не всегда срабатывает...
а мне для мкл4 надо...

 
Gennady Mazur #:

это для мкл5, знаю, хотя тоже не всегда срабатывает...
а мне для мкл4 надо...

Я и говорю об mql4

Информация об инструменте - Состояние окружения - Константы, перечисления и структуры - Справочник MQL4
Информация об инструменте - Состояние окружения - Константы, перечисления и структуры - Справочник MQL4
  • docs.mql4.com
Информация об инструменте - Состояние окружения - Константы, перечисления и структуры - Справочник MQL4