Пишу робота для тестирования стратегий.
После проведения тестирования автоматически создаётся файл. Так как на каждую итерацию тестирования требуется создать файл с уникальным именем, сперва попробовал решить этот вопрос через глобальную переменную терминала. Оказалось что во время тестирования глобальные переменные терминала не работают (точнее работают, но как локальные переменные). Второй попыткой попытался получить время TimeLocal(), и использовать уникальное число в виде количества секунд, прошедших с 01 января 1970 года. Но при тестировании TimeLocal() возвращает время на момент начала истории тестирования.
Собственно у меня вопрос, как во время тестирования получить гарантированно уникальное число?
Генерируйте GUID.
пробовали GetTickCount
Генерируйте GUID.
Неудобочитаемая вещь. Как быстро ориентироваться в файлах из таких последовательностей 6F9619FF-8B86-D011-B42D-00CF4FC964FF?
пробовали GetTickCount
Не будет работать как надо при перезапуске терминала.
Пишу робота для тестирования стратегий.
После проведения тестирования автоматически создаётся файл. Так как на каждую итерацию тестирования требуется создать файл с уникальным именем, сперва попробовал решить этот вопрос через глобальную переменную терминала. Оказалось что во время тестирования глобальные переменные терминала не работают (точнее работают, но как локальные переменные). Второй попыткой попытался получить время TimeLocal(), и использовать уникальное число в виде количества секунд, прошедших с 01 января 1970 года. Но при тестировании TimeLocal() возвращает время на момент начала истории тестирования.
Собственно у меня вопрос, как во время тестирования получить гарантированно уникальное число?
Для имени файла лучше подойдет порядковый номер итерации, а не случайное число.
Не будет работать как надо при перезапуске терминала.
создать файл с заранее известным именем а потом переименовать от его времени создания. То есть создаём файл temp-report.csv , считываем его дату-время и переименовываем в 2017.09.27-16.31.csv
Идея конечно хорошая, но https://www.mql5.com/ru/docs/standardlibrary/fileoperations функции работы с файлами не позволяют получить дату создания файла.

- www.mql5.com
Почему?
При закрытии терминала и перезагрузке компьютера диапазон начнёт отсчитываться повторно, что неизбежно приведет к появлению одинаковых имён. Кроме того, даже если не перезапускать машину у этого буфера системное ограничение в 49 дней. Так что появление дубликатов неизбежно.
Идея конечно хорошая, но https://www.mql5.com/ru/docs/standardlibrary/fileoperations функции работы с файлами не позволяют получить дату создания файла.
не трогайте каку...:-)
FileGetInteger(fileDescription,FILE_CREATE_DATE)

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Пишу робота для тестирования стратегий.
После проведения тестирования автоматически создаётся файл. Так как на каждую итерацию тестирования требуется создать файл с уникальным именем, сперва попробовал решить этот вопрос через глобальную переменную терминала. Оказалось что во время тестирования глобальные переменные терминала не работают (точнее работают, но как локальные переменные). Второй попыткой попытался получить время TimeLocal(), и использовать уникальное число в виде количества секунд, прошедших с 01 января 1970 года. Но при тестировании TimeLocal() возвращает время на момент начала истории тестирования.
Собственно у меня вопрос, как во время тестирования получить гарантированно уникальное число?