Как получить уникальное число во время тестирования?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Francuz
157
Francuz  

Пишу робота для тестирования стратегий.

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

Собственно у меня вопрос, как во время тестирования получить гарантированно уникальное число?

Vitalii Ananev
15850
Vitalii Ananev  
Francuz:

Пишу робота для тестирования стратегий.

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

Собственно у меня вопрос, как во время тестирования получить гарантированно уникальное число?


Генерируйте GUID.

Alexander Bereznyak
29490
Alexander Bereznyak  

пробовали GetTickCount

Francuz
157
Francuz  
Vitalii Ananev:

Генерируйте GUID.


Неудобочитаемая вещь. Как быстро ориентироваться в файлах из таких последовательностей 6F9619FF-8B86-D011-B42D-00CF4FC964FF?

Francuz
157
Francuz  
Alexander Bereznyak:

пробовали GetTickCount


Не будет работать как надо при перезапуске терминала.

Maxim Kuznetsov
19581
Maxim Kuznetsov  
Francuz:

Пишу робота для тестирования стратегий.

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

Собственно у меня вопрос, как во время тестирования получить гарантированно уникальное число?

создать файл с заранее известным именем а потом переименовать от его времени создания. То есть создаём файл temp-report.csv , считываем его дату-время и переименовываем в 2017.09.27-16.31.csv
Nikolay Ivanov
36765
Nikolay Ivanov  

Для имени файла лучше подойдет порядковый номер итерации, а не случайное число.

Slava
Модератор
12309
Slava  
Francuz:

Не будет работать как надо при перезапуске терминала.

Почему?
Francuz
157
Francuz  
Maxim Kuznetsov:
создать файл с заранее известным именем а потом переименовать от его времени создания. То есть создаём файл temp-report.csv , считываем его дату-время и переименовываем в 2017.09.27-16.31.csv

Идея конечно хорошая, но https://www.mql5.com/ru/docs/standardlibrary/fileoperations функции работы с файлами не позволяют получить дату создания файла.

Документация по MQL5: Стандартная библиотека / Файлы
Документация по MQL5: Стандартная библиотека / Файлы
  • www.mql5.com
Стандартная библиотека / Файлы - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Francuz
157
Francuz  
Slava:
Почему?

При закрытии терминала и перезагрузке компьютера диапазон начнёт отсчитываться повторно, что неизбежно приведет к появлению одинаковых имён. Кроме того, даже если не перезапускать машину у этого буфера системное ограничение в 49 дней. Так что появление дубликатов неизбежно.

Maxim Kuznetsov
19581
Maxim Kuznetsov  
Francuz:

Идея конечно хорошая, но https://www.mql5.com/ru/docs/standardlibrary/fileoperations функции работы с файлами не позволяют получить дату создания файла.

не трогайте каку...:-)

FileGetInteger(fileDescription,FILE_CREATE_DATE)

123
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий