Не работает MarketInfo (Symbol(), MODE_STOPLEVEL)

 

При выводе через

MarketInfo (Symbol(), MODE_STOPLEVEL)

Получаю 0. В чем дело? Пробую на демо счете.

Скажите, как же полить значение минимального стоп-уровня? 

 

У многих брокеров стоплевел равен нулю. У брокера A****i, к примеру, он хоть и равен нулю, но на самом деле используется размер двойного спреда.

Для таких случаев в коде делается вилка:

   m_symbolInfo.digits          = (int) SymbolInfoInteger(m_symbol, SYMBOL_DIGITS);
   m_symbolInfo.tickSize        = SymbolInfoDouble(m_symbol, SYMBOL_TRADE_TICK_SIZE);   
   m_symbolInfo.stopLevel       = MarketInfo(m_symbol, MODE_STOPLEVEL) * m_symbolInfo.point;
   
   // Коррекция Stop Level ля тех ДЦ, в которых его вроде бы нет (но на самом деле есть - скрытый) и для тех ДЦ, у которых есть. Для последних увеличивается на тик для повышения надежности
   if (m_symbolInfo.stopLevel == 0)
   {
      if (!m_isECN)
         m_symbolInfo.stopLevel = NormalizeDouble(2 * m_symbolInfo.spread, m_symbolInfo.digits);
   }
   else
      m_symbolInfo.stopLevel = NormalizeDouble(m_symbolInfo.stopLevel + m_symbolInfo.tickSize, m_symbolInfo.digits);

 m_isECN - выносится в настроечные параметры. Пользователь сам должен определить, относится ли счет к ECN-типу или нет. На ECN-счетах стоплевел, как правило, нулевой без "пряток".

 
Благодарю!