Добрый день!
При разработке и использовании скрипта на апи возник вопрос - как увеличить скорость его расчета.
Когда скрипт работает с большим количеством обсчитываемых баров на истории возникают тормоза в работе агента.
Это проблема решается, если поставить ограничение макс. баров, например, равное 1000 считается относительно быстро. Но вот если считать все бары, которые есть на истории, то это занимает уже более 20 секунд на расчет, что никуда не годиться. Хочется понять общую методологию поиска "узких" мест в коде, которые и тормозят расчёт? Или может так быть, что эта скорость для такого количества баров, с учетом конкретных условий алгоритма вполне нормальна?
Списки в коде при расчетах условий входа-выхода, стопов и индикаторов не применяю, вместо них использую массивы.
Также не использую доступ ценам вида sec.ClosePrices[i], использую доступ через sec.Bars[i].
Что еще упустил из того, что может тормозить расчёты, и главное какими способами эти участки кода можно поискать при помощи откладки, чтобы понять какой из методов считается быстро, а какой долго?
Вот сообщения лога:
18:06:11.27 127 Агент 'Плазма': Скрипт выполнен успешно за 24341мс. (14575 баров, время 08.07.2016 23:49:00)
18:14:46.37 127 Агент 'Плазма': Скрипт выполнен успешно за 86мс. (1000 баров, время 08.07.2016 23:49:00)
Тут явно какая-то нелинейная зависимость, 1000 баров считается 86мс, но 14000 баров считается значительно дольше 86*14мс... Как будто что-то подвисает или забивается ) Хотелось бы понять, где можно поискать решение проблемы.