Почемуто больше 4 цифр после запятой не дает.Проверял следующим
кодом.
double var=0.123456789;
for(i=0;i<8;i++)
{
Print(" Digits = ",i,"-->",NormalizeDouble(var,i));
}
2006.05.13 01:04:31 txInd USDCHF,Daily: Digits = 7-->0.1235
2006.05.13 01:04:31 txInd USDCHF,Daily: Digits = 6-->0.1235
2006.05.13 01:04:31 txInd USDCHF,Daily: Digits = 5-->0.1235
2006.05.13 01:04:31 txInd USDCHF,Daily: Digits = 4-->0.1235
2006.05.13 01:04:31 txInd USDCHF,Daily: Digits = 3-->0.123
2006.05.13 01:04:31 txInd USDCHF,Daily: Digits = 2-->0.12
2006.05.13 01:04:31 txInd USDCHF,Daily: Digits = 1-->0.1
2006.05.13 01:04:31 txInd USDCHF,Daily: Digits = 0-->0
------------------------------
void Print( ...)
Печатает некоторое сообщение в журнал экспертов. Параметры могут иметь любой тип. Количество параметров не может превышать 64.
Массивы нельзя передать в функцию Print(). Массивы должны быть напечатаны поэлементно.
Данные типа double выводятся с 4 десятичными цифрами после точки. Чтобы получить большую точность, следует использовать функцию DoubleToStr().
Данные типов bool, datetime и color будут напечатаны в виде чисел.
Чтобы печатать значения datetime как строку с датой, следует использовать функцию TimeToStr().
------------------------------
double NormalizeDouble( double value, int digits)
Округление числа с плавающей запятой до указанной точности.
Рассчитываемые значения StopLoss, TakeProfit, а также значения цены открытия
отложенных ордеров должны быть нормализованы с точностью, значение
которой хранится в предопределенной переменной Digits.
Параметры:
value - Величина с плавающей точкой.
digits - Формат точности, число цифр после десятичной точки (0-8).
Пример:
double var1=0.123456789;
Print(NormalizeDouble(var1,5));
// вывод: 0.12346
реальный вывод после этого действия 0.1235
Пример:
double var1=0.123456789;
Print(NormalizeDouble(var1,5));
// вывод: 0.12346
реальный вывод после этого действия 0.1235
И по умолчанию Print выводит числа с плавающей запятой до четвертого знака. Чтобы получить более детальный вывод, необходимо использовать DoubleToStr, например:
Print("Value: ",DoubleToStr(var1,5));Функция DoubleToStr самостоятельно произведет нормализацию до указанного количества знаков.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Почемуто больше 4 цифр после запятой не дает.Проверял следующим кодом.
double var=0.123456789;
for(i=0;i<8;i++)
{
Print(" Digits = ",i,"-->",NormalizeDouble(var,i));
}
2006.05.13 01:04:31 txInd USDCHF,Daily: Digits = 7-->0.1235
2006.05.13 01:04:31 txInd USDCHF,Daily: Digits = 6-->0.1235
2006.05.13 01:04:31 txInd USDCHF,Daily: Digits = 5-->0.1235
2006.05.13 01:04:31 txInd USDCHF,Daily: Digits = 4-->0.1235
2006.05.13 01:04:31 txInd USDCHF,Daily: Digits = 3-->0.123
2006.05.13 01:04:31 txInd USDCHF,Daily: Digits = 2-->0.12
2006.05.13 01:04:31 txInd USDCHF,Daily: Digits = 1-->0.1
2006.05.13 01:04:31 txInd USDCHF,Daily: Digits = 0-->0