Как ускорить обработку скрипта на API
1. Замерить время работы скрипта
Для того чтобы что то улучшить, это надо измерить. Поэтому хорошая практика замерять выполнение скрипта. В начале скрипта ставим: var sw = Stopwatch.StartNew(); В конце: ctx.Log($"Time: {sw.Elapsed}", MessageType.Info, true); После выполнения скрипта в логе будет написано время выполнения. Также можно замерять отдельные участки кода. Пример:
2. Получить необходимые данные из ISecurity до цикла
Это касается свойств в ISecurity: ClosePrices, OpenPrices, HighPrices, LowPrices, Volumes. Внутри них есть кеширование, из-за этого получение этих данных будет медленным. Поэтому рекомендуется получить все нужные данные перед торговым циклом и в цикле их использовать. var closePrices = sec.ClosePrices; var openPrices = sec.OpenPrices; var highPrices = sec.HighPrices; var lowPrices = sec.LowPrices; var volumes = sec.Volumes;
Пример:
3. Создавать объекты до цикла
По возможности создавать необходимые объекты до цикла, в котором они используются. Например, есть такой код, в котором используется время:
Создание TimeSpan лучше вынести до цикла:
4. Использовать кеширование индикаторов
Подробнее тут: Кэширование.
Last updated