Оптимизационное время в TsLab Api

Автор: Fresto

Оптимизационное время в TsLab Api - Thu Sep 29 2016 05:19 PM

Выучил почти весь синтаксис АПИ, делаю скрипты, но самая основная проблема заключается лишь в оптимизационном времени. Ранее всё высчитывал сам, тут же и в кэш добавляю, и убираю визуализацию во время оптимизации. И всё равно время показывает очень большое ( 5 часов, вместо 1)

Что может быть в коде не так? Уже даже сам код стараюсь оптимизировать. А толку..

P.s. сделал такой же скрипт в визуальном редакторе, открыл его cs файл и никакой разницы, в принципе, не заметил, хотя время оптимизации различается..
Автор: Fresto

Re: Оптимизационное время в TsLab Api - Tue Oct 11 2016 12:00 PM

Может быть разница в том, что в одном случае мы берем свойства объектов Бар, а в другом случае мы берем данные мах, мин, open, close их кэшированного списка. Может в этом и заключается такая большая разница во времени.
Автор: ra81

Re: Оптимизационное время в TsLab Api - Tue Oct 11 2016 12:22 PM

high = sec.HighPrices[i];
low = sec.LowPrices[i];
highM = sec2.HighPrices[i];
lowM = sec2.LowPrices[i];

так нельзя. связано с тем что при обращении к данным массивам сначала идет обращение в кэш и это жрет много времени. посмотрите как реализовано в нативном коде тслаба. обычно перед торговым циклом всегда идет забор этих массивов в локальную переменную и дальше работаем с миссивами из локальных переменных.
Это может сильно влиять.
В общем как я ранее говорил - изучайте статьи на русалго по скорости скриптов ну и нужен опыт. Иначе можно легко написать плохо.
Автор: Fresto

Re: Оптимизационное время в TsLab Api - Tue Oct 11 2016 12:47 PM

Да вот моя и главная проблема - сразу в бой. Без изучения всех тонкостей языка и библиотек TsLab API. Спасибо, видимо, в этом и была причина большого времени оптимизации в сравнении с визуальным редактором.
Автор: Fresto

Re: Оптимизационное время в TsLab Api - Wed Oct 19 2016 10:37 AM

Вот я, кстати, об этом думал, про то, что мы берем свойства объектов sec.Bars[i].Close, sec.Bars[i].High, а в визуальном редакторе там всё забивается в отдельные массивы. И поэтому думал, что брать свойства будет быстрее, чем там массивы Close, Open, Volume, Max, Min. А оказывается наоборот.
Автор: Atomic

Re: Оптимизационное время в TsLab Api - Wed Oct 19 2016 03:19 PM

была такая же проблема, решил так:
объявляем новый лист ASD<double>() в классе.

На последнем баре, передаем сразу весь лист (т.е. к кэшу только один раз обращаемся):
ASD = source.HighPrices;

далее, поциклово (в зависимости от задач) обращаемся уже к ASD. Тогда, внутри этого цикла (i=n, i<m, i++), мы на каждой итерации обращаемся не к кэшу (через source.HighPrices[i] ), а к новому листу.

При такой передаче, скорость этого цикла в 4 раза выше (на входе инструмент).

Также, это явно лучше, чем передавать в инпуты значения и их записывать (отдельные инпуты для Open, Close, Low, High).

Скорость получается такая же, как и для 4 инпутов, но у нас больше данных со входа + еще 3 инпута не занятых.