Код выкладываю, а тестер всё равно тормозит!

 
Дабы меня не обвиняли в голословности, выкладываю собственноручно мной отловленный в дебрях программы кусок кода ,который дико тормозит тестер.
И что в нем такого особенного, что в 178 он пашет как из пушки, а в 180 тормозит???


//+------------------------------------------------------------------------+
//| Функция определения тренда |
//+------------------------------------------------------------------------+

extern int TenkanSen=8, KijunSen=5;

int Trend() // Возвращает int переменную, если -1 - то нижний тренд, если 1 - то верхний
{
int znak=0;
double tksenStart=iIchimoku(NULL, 0, 9, 26, 52, MODE_TENKANSEN, 3);
double tksenEnd=iIchimoku(NULL, 0, 9, 26, 52, MODE_TENKANSEN, 3+TenkanSen);
double kjsenStart=iIchimoku(NULL, 0, 9, 26, 52, MODE_KIJUNSEN, 4);
double kjsenEnd=iIchimoku(NULL, 0, 9, 26, 52, MODE_KIJUNSEN, 4+KijunSen);

// Проверяем Down тренд...
// ... по Ишимоку
if (tksenStart<tksenEnd && kjsenStart!=kjsenEnd) znak=-1;

// Проверяем Up тренд...
// ... по Ишимоку
if (tksenStart>tksenEnd && kjsenStart!=kjsenEnd) znak=1;

return(znak);
}

// конец функции
//+------------------------------------------------------------------------+

?... вот в чем вопрос ! :)
 
То есть, я так понимаю, никто не знает, почему при вызове внутренней функции, содержащей вызов даных индикаторов, начинаются тормоза? Сие есть тайна за семью печатями? :( Печально...
 
То есть, я так понимаю, никто не знает, почему при вызове внутренней функции, содержащей вызов даных индикаторов, начинаются тормоза? Сие есть тайна за семью печатями? :( Печально...


Нормальный код. Надо посмотреть, как ты его вызываешь. Если каждый тик, то будет тормозить.
 
Функция данная вызывается побарно.
Вопрос не в том, будет не будет тормозить. Она не тормозит! На ДРУГИХ билдах. А на 180 - тормозит!
 
К сожалению, это не код эксперта, а лишь вырванный фрагмент.
По фрагменту никто теста провести не может, не так ли?

Приходится повторять: если есть вопрос по экспертам, то без кода эксперта не стоит надеяться на ответ.
Жаль, что раз за разом появляются однотипные вопросы без кода.
 
Хм... Там же всё стандартное, чего его выкладывать то было?
Надо весь - вот вам весь. Вызывает другой индикатор, но так же успешно безуспешно не работает!


extern int ADX=18, ADXPM=18, ADXPer=10;
datetime prevtime;

//| Функция определения тренда |

int Trend() // Возвращает int переменную, если -1 - то нижний тренд, если 1 - то верхний
{
int znak=0;

if (iADX(NULL, 0, ADXPer, PRICE_CLOSE, MODE_MAIN, 1)>ADX && iADX(NULL, 0, ADXPer, PRICE_CLOSE, MODE_MINUSDI, 1)>ADXPM) znak=-1;

if (iADX(NULL, 0, ADXPer, PRICE_CLOSE, MODE_MAIN, 1)>ADX && iADX(NULL, 0, ADXPer, PRICE_CLOSE, MODE_PLUSDI, 1)>ADXPM) znak=1;

return(znak);
}

// конец функции
//+------------------------------------------------------------------------+


//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----

//----------------------------------------------------------------------------------/

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{

if(prevtime != Time[0])
{
prevtime = Time[0];

// Проверяем ПОКУПКИ
if (Trend()==-1) Print("Покупка!");

// Проверяем ПРОДАЖИ
if (Trend()==1) Print("Продажа!");

}

//----

return(0);
}
 
Если надо ещё информации - система Windows 2000, Celeron 2.4GHz, 512 RAM
 
Запустил на 180 билде:
1) прогон на 17000 баров - меньше секунды в режиме open prices
2) в режиме тестирования с перебором 23 значений первого параметра - 3 секунды.

Не заметил ни одного тормоза.
Может стоит сначала определиться, что понимаете под тормозами?

И почему тело функции Trend() вдруг заменилось с Ишимоки на iADX ?
 
Вот и меня удивляет - в чем тут дело!

По времени - сейчас скажу:
тестирование на периоде с 2003-01-01 по сейчас - все тики - после закачки внутренних периодов - 105 секунд.
Тут же запускаю его на 178 с теми же параметрами - 15 секунд.

Заменил Ишимоку на ADX - просто короче текст, суть та же (я сейчас гонял на ADX).
Из-за чего такая ерунда - понять не могу!
 
Причем на OpenPrices гоняет быстро и там и тут (что не удивительно).
А вот как только идет фрактальная интерполяция, как я понимаю - тут то и начинается "волшебство"....
 
Скачай версию 180 для установки с сайта. Удали свою. Сотри все папки которые удалятор не удалит и переустанови метатрейдер из нового установщика.

PS. Папку с экспертами своими сохрани.