Почему советники с различными индикаторами тестируются с разной скоростью???

 

Всем привет! (поздравляю с победой сборной по футболу над голландцами)!!!!!

Теперь к делу: почему советники с различными индикаторами тестируются с разной скоростью??? у меня два советника на основе пользовательских индикатрах. один тестируется в считанные секунды, другой может час тестировать месячные данные??????!!!!!!

С чем это вязано и как можно это убыстрить???

Заранее благодарен за ответы!

 
Kostay писал (а) >>

Всем привет! (поздравляю с победой сборной по футболу над голландцами)!!!!!

Теперь к делу: почему советники с различными индикаторами тестируются с разной скоростью??? у меня два советника на основе пользовательских индикатрах. один тестируется в считанные секунды, другой может час тестировать месячные данные??????!!!!!!

С чем это вязано и как можно это убыстрить???

Заранее благодарен за ответы!

разные индикаторы имеют разное время расчета

 
YuraZ писал (а) >>

разные индикаторы имеют разное время расчета

Убыстрить время расчета ни как невозможно?

 
Kostay писал (а) >>

Убыстрить время расчета ни как невозможно?

стандартыне - встроенные индикаторы работают очень быстро

если используете внешние то зависит от индикатора в большинстве случаев можно не просто ускорить - а на порядки поднять скорость

вы пользуетесь не своими индикаторами ? т е не собственной разработки ?

тогда выложите сюда может кто и подскажет где покрутить

можно к примеру запретить обращаться к индикатору чаще чем в 5 минут на M5 ( а на H1 какой смысл пересчитввать на H1 индикатор на кадом тике можно пускать раз в час )

будет уже многократное ускорение

 
YuraZ писал (а) >>

можно к примеру запретить обращаться к индикатору чаще чем в 5 минут на M5 ( а на H1 какой смысл пересчитввать на H1 индикатор на кадом тике можно пускать раз в час )

будет уже многократное ускорение

Поясните, пожалуйста.

Я работаю на Н1. Мои операции (как то установка и модификация ордеров) происходят при приходе нового бара. То, что от меня не зависит (СЛ, ТП), - на каждом тике. Использую свои индикаторы (обращение к функциям) и чужие (через iCustom).

Тестирую только на всех тиках. Как я могу увеличить скорость оптимизации? Тестирование на открытии бара и по контрольным точкам не предлагать.
 

Надо сделать, чтобы блок торговли работал 1 раз на бар. Обращение к индикаторы реже чем раз на бар - замедляет работу тестера.

int start(){

   static int LastTime=0;
   bool Error=false;

      if(LastTime!=Time[0]){
        ...Открытие, закрытие ордеров, контроль...
        if(...Ошибка при открытии/закрытии ордера...)Error=true;
      }

   if(!Error)LastTime=Time[0]; // чтобы блок торговли больше не работал на этом баре

   // здесь трейлинги

}

Кроме этого, индикаторы должны просчитываться только на новом баре - использовать IndicatorCounted(). Еще в индикаторах лучше поменьше использовать всякие циклы, лучше использовать побольше буферов, чтобы лишних расчтеов не делать. Например, при расчете простой скользящей можно на каждом баре сумму считать циклом, а можно можно еще один буфер сделать для суммы

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Red

extern int SMAPeriod=14;

double sma[];
double sum[];

int init(){
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,sma);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,sum);
   SetIndexEmptyValue(1,0.0);
   return(0);
}

int start(){
         int limit=Bars-IndicatorCounted();

            for(int i=limit-1;i>=0;i--){
               sum[i]=sum[i+1];
               sum[i]+=(Close[i]-Close[i+SMAPeriod]); 
               sma[i]=sum[i]/SMAPeriod;
            }
   return(0);
}
Причина обращения: