Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
за один такт чего, процессора
Условно говоря, да. Если говорить строго, то за один такт процессора может выполниться несколько команд.
Но здесь я специально сказал "1 такт на фоне 1 000 000 тактов". То есть, не надо париться с этим вопросом - просто выставляйте нужный флаг и всё.
Условно говоря, да. Если говорить строго, то за один такт процессора может выполниться несколько команд.
Но здесь я специально сказал "1 такт на фоне 1 000 000 тактов". То есть, не надо париться с этим вопросом - просто выставляйте нужный флаг и всё.
А технически возможно ли восемь динамических массивов из функции OnCalculate в одну структуру определить?
Тогда был бы удобен еще один вариант функции, ну типа такого:
flag - смена направления индексации для членов структуры.
А технически возможно ли восемь динамических массивов из функции OnCalculate в одну структуру определить?
Вот тут как раз очень бы пригодились указатели на массивы. Но их почему-то не хотят вводить. Слава Богу, есть хоть указатели на классы.
В Стандартной Библиотеке имеются классы таймсерий, и я давно на их основе уже сделал класс-контейнер, который работает, как единое целое:
class CMySeriesContainer: public CMySeriesContainerI
{
protected:
static const string CSV_SEPARATOR;
static const string HEADER_CSV_STRING;
CMyOpen* m_pmoOpen;
CMyHigh* m_pmhHigh;
CMyLow* m_pmlLow;
CMyClose* m_pmcClose;
CMySpread* m_pmsSpread;
CMyTime* m_pmtTime;
CMyTickVolume* m_pmtvTickVolume;
CMyRealVolume* m_pmrvRealVolume;
CPricePrecisionController m_ppPrecController;
// Функция пробегается по всем таймсериям, и возвращает значение минимального размера таймсерии
int _GetMinSeriesSize();
....
// Продолжение класса
..
Было бы, действительно, удобно, если бы были указатели на массивы, в принципе, вся функциональность у меня вынесена в интерфейс предка CMySeriesContainerI, думаю, рано или поздно появятся указатели на массивы - у меня все готово для этого
То есть, не надо париться с этим вопросом - просто выставляйте нужный флаг и всё.
Профилируя несложный индикатор, обратил внимание на 1.42% времени потраченных на ArraySetAsSeries:
Дольше всего отрабатывала установка индексации для buffer_AO.
Понятно, что такое кол-во вызовов - не показатель. Но сам факт - что это ни разу не "1 такт на фоне 1 000 000 тактов" - на лицо.
Профилируя несложный индикатор, обратил внимание на 1.42% времени потраченных на ArraySetAsSeries:
Дольше всего отрабатывала установка индексации для buffer_AO.
Понятно, что такое кол-во вызовов - не показатель. Но сам факт - что это ни разу не "1 такт на фоне 1 000 000 тактов" - на лицо.
Для замера ArraySetAsSeries это существенно, более 50% показанного Вами времени занял сбор данных профилировки
Всю функцию OnCalculate, которую профилировали, покажите
Да нечего там особо показывать - цикл по барам, заполнение буферов по простым правилам в несколько иф-ов. Если надо, в сервис-деск сброшу.
К тому же учтите, что сборка данных профилировки тоже занимает такты.
Для замера ArraySetAsSeries это существенно, более 50% показанного Вами времени занял сбор данных профилировки
Этого не учел, действительно профилирование отличается от обычной работы.
Будет ли корректно замерить время выполнения с помощью нового микро-секундного таймера (разделив замеры на 2 части OnCalculate)?
Вообще, новый билд стал работать как-то иначе (в лучшую сторону).
Например, явно сдвинулась с места работа с памятью (выгрузкой индикаторов).
Но проявились другие узкие места. У меня, например, в сложной панели, основанной на стандартной библиотеке, стал занимать 70% ArrayResize( m_controls, i+1, 16) в функции Add() для элементов панели =)
Добавил резерв на большее кол-во элементов, и проблема пропала.