Что быстрее - запись/чтение файла или перебор истории

 

Оптимизация... Больное место всех, кто уже довел свое творение до состояния предсовершенства. Нужно уменьшить кол-во процессов, которые отнимают драгоценное время. Кто работал с записью/чтением файла, насколько это вообще быстро? Мой советник делает перебор сделок в истории, чтобы что-то понять, и это занимает ну блин капец скок времени. Я думаю, сделать запись в файл того что нужно, и оттуда чикать сведения. Причем в файле будут именно нужные сведения, записанные при каждом исполнении. Это должно заменить один дополнительный перебор сделок в истории при каждом исполнении. Короче, будет запись/чтение файла быстрее перебора при каждом исполнении?

 
eugene-last:

Оптимизация... Больное место всех, кто уже довел свое творение до состояния предсовершенства. Нужно уменьшить кол-во процессов, которые отнимают драгоценное время. Кто работал с записью/чтением файла, насколько это вообще быстро? Мой советник делает перебор сделок в истории, чтобы что-то понять, и это занимает ну блин капец скок времени. Я думаю, сделать запись в файл того что нужно, и оттуда чикать сведения. Причем в файле будут именно нужные сведения, записанные при каждом исполнении. Это должно заменить один дополнительный перебор сделок в истории при каждом исполнении. Короче, будет запись/чтение файла быстрее перебора при каждом исполнении?

В файл писать очень долго.

Я добавлял в код советника функцию, которая считает исходы, и обновляет глобальную переменную, которую мы и смотрим.

Либо функция добавляется в Denit и выполняется при завершении тестирования советника по истории сделок - тоже очень удобно и быстро.

Но это смотря какие у вас цели.

 
eugene-last:

Оптимизация... Больное место всех, кто уже довел свое творение до состояния предсовершенства. Нужно уменьшить кол-во процессов, которые отнимают драгоценное время. Кто работал с записью/чтением файла, насколько это вообще быстро? Мой советник делает перебор сделок в истории, чтобы что-то понять, и это занимает ну блин капец скок времени. Я думаю, сделать запись в файл того что нужно, и оттуда чикать сведения. Причем в файле будут именно нужные сведения, записанные при каждом исполнении. Это должно заменить один дополнительный перебор сделок в истории при каждом исполнении. Короче, будет запись/чтение файла быстрее перебора при каждом исполнении?


Начинать надо с максимально оптимизированного кода. Учитывать на какие операции сколько времени уходит.

Но пока это только общие слова. Файловые операции занимают самое большое время

 
eugene-last:

Оптимизация... Больное место всех, кто уже довел свое творение до состояния предсовершенства. Нужно уменьшить кол-во процессов, которые отнимают драгоценное время. Кто работал с записью/чтением файла, насколько это вообще быстро? Мой советник делает перебор сделок в истории, чтобы что-то понять, и это занимает ну блин капец скок времени. Я думаю, сделать запись в файл того что нужно, и оттуда чикать сведения. Причем в файле будут именно нужные сведения, записанные при каждом исполнении. Это должно заменить один дополнительный перебор сделок в истории при каждом исполнении. Короче, будет запись/чтение файла быстрее перебора при каждом исполнении?


Пересматривать в истории только вновь появившиеся ордера, а не все заново с самого начала.

 
rlx:


Пересматривать в истории только вновь появившиеся ордера, а не все заново с самого начала.


Так я не с самого начала, а только со времени появившегося минуса. Есть ограничения... блин ну как долго, 1680 вариантов по генетическому алгоритму аж 15 часов......

А период?! Период 2 недели..... Хоть плачь.

 
eugene-last:


Так я не с самого начала, а только со времени появившегося минуса. Есть ограничения... блин ну как долго, 1680 вариантов по генетическому алгоритму аж 15 часов......

А период?! Период 2 недели..... Хоть плачь.


Я имел ввиду, что вам же нужны какие то параметры от ваших уже закрытых ордеров в истории -- время закрытия, цена, прибыль и тп. Но ведь эти параметры не меняются во времени.

Так зачем же пересматривать все закрытые ордера заново?

0. Инициализация N = 0.

1. Делаете перебор всех закрытых ордеров с индекса N по Total.

2. Получаете нужный параметр. Минимальное значение, максимальное, среднее или еще что то.

3. N теперь будет равно Total-1;

4. Появляется новый закрытый ордер. Total теперь на один больше.

5. Переходите к пункту 1.

Я такое применял для того чтобы контролировать минимальное время между закрытым и вновь открываемым ордером.

Вы просто напишите какие именно параметры и цели нужны, тогда будет понятней - что подойдет, а что нет.

 

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

 
rlx:

1. Делаете перебор всех закрытых ордеров с индекса N по Total.

Хрена. Сортировка истории соответствует сортировке в соотв. табе терминала. Так можно делать только в тестере.
 

Все требуемые данные по ордерам надо хранить в массивах. Перебор массива займёт минимум времени. Плюс для них можно использовать встроенные функции работы с массивами или некоторые индикаторные функции.

 
Meat:

Все требуемые данные по ордерам надо хранить в массивах. Перебор массива займёт минимум времени. Плюс для них можно использовать встроенные функции работы с массивами или некоторые индикаторные функции.


Да... а чем массив внутри советника отличается от массива данных, который возвращает сервер и запихОвает в кэш?
 
eugene-last:

Да... а чем массив внутри советника отличается от массива данных, который возвращает сервер и запихОвает в кэш?
Ну как минимум тем, что отсутствуют вызовы функций. Поэтому это может существенно ускорить работу.
Причина обращения: