Стратегии и роботы > Оптимизация на внешнем датасете

Обсуждение, описание стратегий и роботов, идеи для стратегий
Сергей_С
Сообщения: 6
Зарегистрирован: 19 авг 2025, 11:54
Благодарил (а): 1 раз

Оптимизация на внешнем датасете

Сообщение Сергей_С » 05 фев 2026, 16:53

Бэктестинг, кнопка оптимизировать - Оптимизирую стратегию на внешнем датасете (файле) склейка Ri
Файл парсится ок, оптимизация выполняется ок. Но когда смотришь результат, видно что данные использовались не из локального файла истории, а берутся с сервера альфы по другому инстркменту.

Тестирование, кнопка тестировать - тут видно что данные подтягиваются правильно, из локального текстового файла исторических данных.

Одним словом если Тестировать, то данные локальные подтягиваются корректно, если оптимизировать то данные берутся с сервера несмотря на указание на локальный файл.

Это баг???, что можно сделать?

Сергей_С
Сообщения: 6
Зарегистрирован: 19 авг 2025, 11:54
Благодарил (а): 1 раз

Re: Оптимизация на внешнем датасете

Сообщение Сергей_С » 24 фев 2026, 16:28

Друзья, неужели никто не знает почему при тестировании нормально цепляется внешний файл котировок, а при оптимизации ни как не хочет? Берет котировки с сервера

Аватара пользователя
Den
Сообщения: 382
Зарегистрирован: 09 фев 2016, 15:52
Благодарил (а): 17 раз
Поблагодарили: 5 раз

Re: Оптимизация на внешнем датасете

Сообщение Den » Сегодня, 12:20

Сергей_С писал(а):Друзья, неужели никто не знает почему при тестировании нормально цепляется внешний файл котировок, а при оптимизации ни как не хочет? Берет котировки с сервера


"Тестировать" обычно гоняет стратегию в контексте текущей серии/внешнего файла, который ты привязал в интерфейсе (или который читает твой код).

Оптимизировать почти всегда запускает отдельный оптимизатор/воркеры, которые сами поднимают данные через стандартный DataFeed по инструменту (сервер Альфы), и твоя “внешняя история” либо не прокидывается, либо не поддерживается в оптимизаторе.

Отсюда ровно твой симптом: в тесте локальный файл ок, в оптимизации — вдруг “подменилось” на серверные котировки другого инструмента.

Аватара пользователя
Den
Сообщения: 382
Зарегистрирован: 09 фев 2016, 15:52
Благодарил (а): 17 раз
Поблагодарили: 5 раз

Re: Оптимизация на внешнем датасете

Сообщение Den » Сегодня, 12:39

Идея:
1.
Добавь в стратегию проверку: если внешний файл не загрузился — прекращай расчёт (или кидай исключение/логируй жирно), чтобы оптимизатор не мог “незаметно” перейти на серверные котировки.

после загрузки файла выставляешь флаг Loaded = true

если Loaded == false → return; и/или throw

лог: откуда данные (имя файла/кол-во баров/первые даты)

Это сразу покажет: оптимизатор реально не видит файл или игнорит его.

2.
импорт истории в локальную базу/кэш (не “подключить файл”, а “импортировать как историю инструмента”) - лучший путь.

Суть:

создаёшь (или используешь) локальный инструмент типа RI_CONTINUOUS_LOCAL

импортируешь туда твою “склейку Ri”

оптимизатор уже будет брать не сервер, а локальный кэш, потому что для него это “нормальная история”.

Да, это чуть муторнее, но зато оптимизация будет честной.

3.

Проверь в коде: ты нигде не используешь функции/объекты, которые тянут серверную серию (условно “Instrument/Quotes/History” вместо Input).

Правило для оптимизации:

все расчёты строго через Input.* (то, что тебе прокидывает источник),

никаких скрытых вызовов “получи историю инструмента”.

Если где-то есть такой вызов — оптимизатор будет всегда на сервере.

4.

Обходной путь: “оптимизация” через серию тестов (если оптимизатор принципиально не работает с файлами)

Если выяснится, что оптимизатор в принципе не видит внешний файл, то рабочий обход:

делаешь цикл параметров внутри кода (или запускаешь пачку тестов через скрипт/батник, если АД позволит),

результат пишешь в CSV.

Да, это “самодельный оптимизатор”, но зато данные будут 100% те же.

5.
Чтобы не гадать, сделай так:

В начале Evaluate() один раз (на CurrentIndex == 0 или 1) выведи в лог:

источник (путь файла / “Loaded”)

первые 3 даты/цены, которые видит стратегия

Запусти Тест → смотри лог (даты должны совпасть с файлом)

Запусти Оптимизацию → смотри лог

если Loaded=false или даты другие → оптимизатор не видит файл/фоллбек

если Loaded=true, но даты серверные → оптимизатор игнорит Input и берёт сервер

6.

С высокой вероятностью это либо:

ограничение/баг оптимизатора (внешний файл не поддержан),
либо

файл не доступен воркерам оптимизации, и идёт тихий fallback на сервер.


Вернуться в «Стратегии и роботы»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 7 гостей