У меня вот есть один этап кода, при полной загрузке котировок на 30 минутном графике думает на четырех котловом проце и 3-мя гигами оперативки! минуты 4. Можно ли его как то оптимизировать что бы думал шустрее ?
Размер массива около 60 000 строк, параметр kolichestvo задается, по умолчанию равен 5-ти! Функция
Оптимизировать можно. Но по кусочку это делать не стоит.
Количество котлов, кажись, ни на что не влияет. Влияет оператива, но ее вроде как немало. Вообще-то столько строк - многовато.
Конкретно этот кусок я б поправил так:
for(i=(ArraySize(ArrayStrg)/6)-kolichestvo;i>0;i--) ///Размер массива порядка 60 000 строк! { int ii; sam=""; for(j=0,ii=i;j<kolichestvo;j++,ii++) { check_Mass[j][0] = StrToDouble(ArrayStrg[ii][5]); //Отвечает за время Time check_Mass[j][1] = StrToDouble(ArrayStrg[ii][3]); //Отвечает за Максимум High check_Mass[j][2] = StrToDouble(ArrayStrg[ii][4]); //Отвечает за минимум Low check_Mass[j][3] = StrToDouble(ArrayStrg[ii][1]); //Отвечает за закрытие Close check_Mass[j][4] = StrToDouble(ArrayStrg[ii][2]); //Отвечает за открытие Open if(StrToDouble(ArrayStrg[ii][1]) > StrToDouble(ArrayStrg[ii][2]) || StrToDouble(ArrayStrg[ii][1]) < StrToDouble(ArrayStrg[ii][2])) { if(StrToDouble(ArrayStrg[ii][1]) > StrToDouble(ArrayStrg[ii][2])) { check_Mass[j][5] = 0;//если закрытие выше открытия значит свеча бычья } else { check_Mass[j][5] = 1;//если закрытие ниже открытия значит свеча медвежья } } else {check_Mass[j][5] = 2;}//если закрытие ниже открытия значит свеча доже //sam = sam + check_Mass[j][1]+" =>"; count++; } arrc++; //Alert(ArraySize(check_Mass)); if(chek_Type(check_Mass,mass,kolichestvo)==1) { for(j=0,ii=i;j<kolichestvo;j++,ii++) { Buf_0[ii] = StrToDouble(ArrayStrg[ii][3])+ 0.0004; Buf_1[ii] = StrToDouble(ArrayStrg[ii][4]) - 0.0004; } } sov = sov + chek_Type(check_Mass,mass,kolichestvo); //Вызываем проверку на совпадение по типу свечей... }
Всем спасибо за комменты, буду думать! Попробую упростить, если уменьшить кол-во строк то статистические данные не будут полными, а следовательно будет утеряна какая то часть данных которая возможно будет влиять на определенный период работы советника.
Количество данных конечно имеет значение, но нужно сперва саму логику оптимизировать. Отказываться от строковых переменных и многое другое.
В чем главная причина такого типа данных - строчного? Почему, скажем, не double? У Вас разные валютные пары?
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
У меня вот есть один этап кода, при полной загрузке котировок на 30 минутном графике думает на четырех котловом проце и 3-мя гигами оперативки! минуты 4. Можно ли его как то оптимизировать что бы думал шустрее ?
Размер массива около 60 000 строк, параметр kolichestvo задается, по умолчанию равен 5-ти! Функция