[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 470
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Разные приёмы? Какие, например?if (NormalizeDouble(a, 4)==NormalizeDouble(b, 4)) { ... }
if (NormalizeDouble(a, 4)==NormalizeDouble(b, 4)) { ... }
Так тоже пробовал, и на всякий случай вместо Digits писал 4, потом 5, потом 6... Не работает!
https://www.mql5.com/ru/articles/1561
Спасибо! Действительно, статья очень познавательна. Но в MetaEditor я не нашел функции bool CompareDoubles...
https://www.mql5.com/ru/articles/1561
Или, видимо, я не совсем понимаю, а точнее, совсем не понимаю, что такое библиотека?
Или, видимо, я не совсем понимаю, а точнее, совсем не понимаю, что такое библиотека?
Функция для сравнения действительных чиселПодскажите, пожалуйста, как тут быть.
хочу из файла прочитать числа в соответствующие массивы.
числа в файле имеют вид: 1.2121;1.2323;1.3434;1.4545
завожу для них массивы: double s1[], s2[], r1[], r2[]
на этапе инициализации читаю так:
но, массивы, к сожалению, не заполняются...
Посоветуйте, как тут быть....
Посоветуйте, как тут быть....
Во-первых, в csv файлах элементы разделяются знаком "," а не ";"
Во-вторых, массивы у Вас должны заполняться первым элементом каждой строки файла, т.к. Вы сначала извлекаете всю строку коммандой FileReadString, затем преобразуете ее в одно вещественное число, а следующая комманда FileRead уже работает со следующей строкой файла.
Можно организовать чтение так:
for(;;) {
str=FileReadString(Handle);
s1[k] =StrToDouble(StringSubstr(str,0,6));
s2[k] =StrToDouble(StringSubstr(str,7,6));
r1[k] =StrToDouble(StringSubstr(str,14,6));
r2[k] =StrToDouble(StringSubstr(str,21,6));
k++;
if(FileIsEnding(Handle)) break;
}
Должно работать... но не факт :)
Во-первых, в csv файлах элементы разделяются знаком "," а не ";"
Во-вторых, массивы у Вас должны заполняться первым элементом каждой строки файла, т.к. Вы сначала извлекаете всю строку коммандой FileReadString, затем преобразуете всю строку в одно вещественное число, а следующая комманда FileRead уже работает со следующей строкой файла.
Можно организовать чтение так:
for(;;) {
str=FileReadString(Handle);
s1[k] =StrToDouble(StringSubstr(str,0,6));
s2[k] =StrToDouble(StringSubstr(str,7,6));
r1[k] =StrToDouble(StringSubstr(str,14,6));
r2[k] =StrToDouble(StringSubstr(str,21,6));
k++;
if(FileIsEnding(Handle)) break;
}
Должно работать... но не факт :)
Разделитель по умолчанию ";", хотя можно использовать любой.Что-то вы не то пишите...
Разделитель по умолчанию ";", хотя можно использовать любой.CSV - Comma Separated Values. Именно "," является используемым по умолчанию разделителем. Разделение с помощью ";" распространено гораздо реже, и я не уверен, что в MQL4 оно вообще поддерживается.
Что-то вы не то пишите...
Что конкретно Вам не понравилось в том что я пишу?..