Стоимость одного лота - страница 2

 
Ihor Herasko:

Только некоторые уточнения. Если функция MarketInfo() вернула 0, то это вовсе не означает отсутствие символа. Может быть банальное отсутствие данных в терминале. Поэтому лучше проверять на наличие ошибок: ERR_UNKNOWN_SYMBOL, ERR_INVALID_FUNCTION_PARAMVALUE и ERR_INTERNAL_ERROR. Также можно уйти от MarketInfo на SymbolInfoDouble, сделав функцию платформонезависимой.

Ну и напоследок - классика жанра )) Иногда будет вылетать по делению на ноль: значение tickValue не проверено. 

Исправил. 

    bool Price2Quote2(double &diff, double price4lot, string symbol = "EURUSD")
    {
        long dig = 0;
        double tickSize, tickValue; 
        if(!SymbolInfoInteger(symbol, SYMBOL_DIGITS, dig))
            return(false); // операция неуспешна
        if(!SymbolInfoDouble(symbol, SYMBOL_TRADE_TICK_SIZE, tickSize))
            return(false); 
        if(!SymbolInfoDouble(symbol, SYMBOL_TRADE_TICK_VALUE, tickValue))
            return(false); 
        if(tickValue > 0)    
        {
            diff = price4lot*tickSize / tickValue;
            diff = NormalizeDouble(diff, (int)dig);
        }
        else
            return false;    
        return true;
    }
 
Alexey Volchanskiy:

Исправил. 

Ну отчитываться то необязательно )) Я ведь не начальник какой-нибудь... Хотя, не скрою, приятно, когда критика воспринимается адекватно. Спасибо.
 
Ihor Herasko:
Ну отчитываться то необязательно )) Я ведь не начальник какой-нибудь... Хотя, не скрою, приятно, когда критика воспринимается адекватно. Спасибо.
Ну раз выложил с ошибкой, то надо и исправленный выложить по идее)) Мне за что, Вам спасибо. Я писал еще на старом MQL4 давным-давно, ну и как-то глаз замылился, типа работает и ладно. А работает в боевых роботах, не на демке )
Причина обращения: