Как программно отличить плод ПРОФЕССИОНАЛА от плода ДИЛЕТАНТА? - страница 14

 
Vinin:


При желании Ваш код можно немного ускорить. При оптимизации это будет существенно.

Это так, задачка на выходные 


Это не мой код:) Комментарии мои:)
 
Блин, заинтриговали.
 
Речь обо всем коде индикатора, или только о приведенном мной отрывке?
 
grell:
Блин, заинтриговали.


Только о профессионализме это ничего не скажет. Немного об эффективных алгоритмах. Не более.

Все таки к профессионалам я себя не отношу 

 
grell:
Речь обо всем коде индикатора, или только о приведенном мной отрывке?
Только о приведенном коде. Остального же мы не видим (извинюсь, что говорю во множественном числе - зрителей хватает)
 
Ок, в воскресенье отпишусь, а может и раньше.
 
grell:
Ок, в воскресенье отпишусь, а может и раньше.


Логические операции самые тяжелые (тяжелее только операции с массивами). Надо от лишних избавиться.

И чему равен limit? 

 
Vinin:


Логические операции самые тяжелые (тяжелее только операции с массивами). Надо от лишних избавиться.

И чему равен limit? 


Чаще всего Limit избавляет от пересчета всех значений индикатора на текущем баре. А значит при тестировании, особенно по ценам открытия, индикатор будет полностью пересчитываться. Так что можно просто ограничиться нужным количеством баров для расчета.
 
Не такая уж и универсальная задача. Но можно внести еще один extern dept. Больше вариантов не вижу, увы.
 
//+------------------------------------------------------------------+
//| Песнь об аллигаторе                                              |
//+------------------------------------------------------------------+
int start()
  {
                                   
   for(int i=0; i<dept; i++)
     {
      ExtBlueBuffer[i]=iMA(NULL,0,JawsPeriod,0,MODE_SMMA,PRICE_MEDIAN,i); //А почему у тебя такой рот? 
      ExtRedBuffer[i]=iMA(NULL,0,TeethPeriod,0,MODE_SMMA,PRICE_MEDIAN,i); //А почему у тебя такие зубы?
      ExtLimeBuffer[i]=iMA(NULL,0,LipsPeriod,0,MODE_SMMA,PRICE_MEDIAN,i); //А почему у тебя такие губы?
     }
   return(0);
  }
Причина обращения: