voidOnStart()
{
string s = "";
double p = 0;
p = Point;
p = NormalizeDouble(p, Digits);
s = DoubleToString (p);
Alert(s);
}
Хотел сделать так, чтобы Алерт показывал нормализованную стоимость пункта. Но вот возвращает 0.00001000, вроде должен бы нормализоваться, после функции NormalizeDouble?
Хотел сделать так, чтобы Алерт показывал нормализованную стоимость пункта. Но вот возвращает 0.00001000, вроде должен бы нормализоваться, после функции NormalizeDouble?
Спасибо, помогло! А что делать, если нужно при помощи Point-а сделать математические операции? При выводе его Алертом выводится 16-ричная цифра 1е-005.0. После нормализации - 0.00001000. Для отображения нужно перевести в строковый вид, но со строкой же не сделаешь арифметические операции. Как бы сделать так, чтобы отсечь лишние 3 нуля в конце, и при этом иметь возможность совершения математических операций?
JoinDoe: Спасибо, помогло! А что делать, если нужно при помощи Point-а сделать математические операции? При выводе его Алертом выводится 16-ричная цифра 1е-005.0. После нормализации - 0.00001000. Для отображения нужно перевести в строковый вид, но со строкой же не сделаешь арифметические операции. Как бы сделать так, чтобы отсечь лишние 3 нуля в конце, и при этом иметь возможность совершения математических операций?
И чем Вас мешают лишние нули?
Хранение и отображение чисел - немного разные вещи
JoinDoe: Спасибо, помогло! А что делать, если нужно при помощи Point-а сделать математические операции? При выводе его Алертом выводится 16-ричная цифра 1е-005.0. После нормализации - 0.00001000. Для отображения нужно перевести в строковый вид, но со строкой же не сделаешь арифметические операции. Как бы сделать так, чтобы отсечь лишние 3 нуля в конце, и при этом иметь возможность совершения математических операций?
Да ничего с ним делать не нужно. Используйте как есть. 1e-005 - это экспоненциальная форма записи. Само число не меняется от того в каком виде вы его отображаете.
В коде есть индикаторный буфер при помощи которого на графике рисуется некоторая линия. По прошествии N-баров необходимость в этой линии отпадает, но индикатор продолжает потреблять память.
Возник вопрос - если просто обнулить значения буфера для баров, выходящих за пределы {0-N} - приведет ли это к высвобождению памяти?
atztek: В коде есть индикаторный буфер при помощи которого на графике рисуется некоторая линия. По прошествии N-баров необходимость в этой линии отпадает, но индикатор продолжает потреблять память.
Возник вопрос - если просто обнулить значения буфера для баров, выходящих за пределы {0-N} - приведет ли это к высвобождению памяти?
Правильно ли я понимаю, единственный способ избежать перерасхода памяти индикаторными буферами - изначально выделить для них некоторый диапазон (например от 0 до 2000) и не превышать его?
atztek: Правильно ли я понимаю, единственный способ избежать перерасхода памяти индикаторными буферами - изначально выделить для них некоторый диапазон (например от 0 до 2000) и не превышать его?
Единственный способ - указать в настройках терминала минимальное количество отображаемых баров
Vinin: Единственный способ - указать в настройках терминала минимальное количество отображаемых баров
Если я правильно понял что Вы предлагаете то этот вариант мне не подходит. То о чем говорю я это ограничиться пределом последних 0-2000 баров (2000 для примера). При появлении нового бара переписывать значения буферов с добавлением в 0-й буфер нового бара и соответственно удалением последнего выбывающего бара. Правда этот цикл будет несколько нагружать CPU.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Хотел сделать так, чтобы Алерт показывал нормализованную стоимость пункта. Но вот возвращает 0.00001000, вроде должен бы нормализоваться, после функции NormalizeDouble?
Хотел сделать так, чтобы Алерт показывал нормализованную стоимость пункта. Но вот возвращает 0.00001000, вроде должен бы нормализоваться, после функции NormalizeDouble?
DoubleToStr() поможет
Спасибо, помогло! А что делать, если нужно при помощи Point-а сделать математические операции? При выводе его Алертом выводится 16-ричная цифра 1е-005.0. После нормализации - 0.00001000. Для отображения нужно перевести в строковый вид, но со строкой же не сделаешь арифметические операции. Как бы сделать так, чтобы отсечь лишние 3 нуля в конце, и при этом иметь возможность совершения математических операций?
И чем Вас мешают лишние нули?
Хранение и отображение чисел - немного разные вещи
Спасибо, помогло! А что делать, если нужно при помощи Point-а сделать математические операции? При выводе его Алертом выводится 16-ричная цифра 1е-005.0. После нормализации - 0.00001000. Для отображения нужно перевести в строковый вид, но со строкой же не сделаешь арифметические операции. Как бы сделать так, чтобы отсечь лишние 3 нуля в конце, и при этом иметь возможность совершения математических операций?
По прошествии N-баров необходимость в этой линии отпадает, но индикатор продолжает потреблять память.
Возник вопрос - если просто обнулить значения буфера для баров, выходящих за пределы {0-N} -
приведет ли это к высвобождению памяти?
В коде есть индикаторный буфер при помощи которого на графике рисуется некоторая линия.
По прошествии N-баров необходимость в этой линии отпадает, но индикатор продолжает потреблять память.
Возник вопрос - если просто обнулить значения буфера для баров, выходящих за пределы {0-N} -
приведет ли это к высвобождению памяти?
Нет
изначально выделить для них некоторый диапазон (например от 0 до 2000) и не превышать его?
Правильно ли я понимаю, единственный способ избежать перерасхода памяти индикаторными буферами -
изначально выделить для них некоторый диапазон (например от 0 до 2000) и не превышать его?
Единственный способ - указать в настройках терминала минимальное количество отображаемых баров
То о чем говорю я это ограничиться пределом последних 0-2000 баров (2000 для примера). При появлении нового бара переписывать значения буферов с добавлением в 0-й буфер нового бара и соответственно удалением последнего выбывающего бара. Правда этот цикл будет несколько нагружать CPU.