У многих брокеров стоплевел равен нулю. У брокера 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-счетах стоплевел, как правило, нулевой без "пряток".
Благодарю!
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
При выводе через
MarketInfo (Symbol(), MODE_STOPLEVEL)
Получаю 0. В чем дело? Пробую на демо счете.
Скажите, как же полить значение минимального стоп-уровня?