Reusable backtest session (NewSession + RunSegment) #7
Labels
No labels
bug
duplicate
enhancement
help wanted
invalid
project:backtest
project:futures
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Blocks
You do not have permission to read 1 dependency
Reference
trading/tradebot-ng#7
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Описание
Сейчас каждый вызов
backtest.Run()создаёт с нуля: Tinkoff-адаптер, CachedCandlesProvider, ContainerBuilder, Application, прогоняет сессию и всё убивает. При 1200+ вызовах из оптимизатора оверхед на setup/teardown значителен.Предлагаемое решение
Добавить объект
backtest.Session, который создаёт инфраструктуру один раз и даёт прогонять сегменты:Внутреннее устройство:
Sessionхранит Tinkoff-адаптер (с CandleCache) и фабрику трейдеровRunSegmentпересоздаётApplicationиConfigStorage, но использует тот же адаптер/кэшRunостаётся как convenience-обёртка: создаёт сессию, вызываетRunSegment, закрываетЗатрагиваемые файлы
pkg/backtest/session.go(новый) — Session + NewSessionpkg/backtest/run.go—Runиспользует Session внутриinternal/environment/— возможно, нужна доработка для переиспользования адаптераСвязи
strategy-optimizer/internal/eval/runner.go) — после реализации переписатьEvaluateна использование Session вместоbacktest.Runна каждый сегмент