[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 315

 
chief2000 >>:

Вопрос - как это работает (оптимизация Индикаторов):

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

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

СтОит ли в таком случае добавить проверку на количество баров (если баров стало больше, то только тогда и перерисовываем)

чтобы разгрузить CPU компьютера или выигрыш будет минимальный и не стоит с этим возиться?

Стоит, и ещё вместо удаления можно установку ObjectCreate поставить через проверку if(ObjectFind(RectangleSell)==-1){ ObjectCreate()}

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

if(MA_Fast[i+1]>MA_Slow[i+1]) {
   string RectangleSell = StringConcatenate("RECTANGLE_", StartBoxTime);   
   if(ObjectFind(RectangleSell)==-1){
      ObjectCreate(RectangleSell, OBJ_RECTANGLE, 0,  StartBoxTime,BoxLow,  EndBoxTime,BoxHigh);
     }
   ObjectSet(RectangleSell, OBJPROP_STYLE, STYLE_SOLID);
   ObjectSet(RectangleSell, OBJPROP_RAY, False);
   ObjectSet(RectangleSell, OBJPROP_WIDTH, 1);
   ObjectSet(RectangleSell, OBJPROP_BACK , True);
   ObjectSet(RectangleSell, OBJPROP_COLOR, ColorSell);
}
 
Vinin >>:

Надо синхронизацию по времени добавить.

Наверняка есть наработки, можете показать как реализовать на МА!

 
Vladimir11 >>:

Подскажите, я работаю на графике дней.

И хочу обратится к данным по минуткам. Они у меня обновляются или там старые данные?

Если в режиме реального времени, то обновляются, если в тестере по D1 то данные M.. по последним барам (реального времени а не тестируемого).

 

Это мой первый пост на форуме. Изучаю MQL4. Не знаю был ли такой вопрос раньше я не нашёл. Думаю что нужно применить функцию IndicatorCounted но как не знаю подскажите пожалуйста. Закачал котировки 300 тысяч а теперь при запуске индикаторы подвисают понимаю что нужно поставить условие чтоб щиталось не всех котировок а только заданное, напрмер 3000 но и пересчитывать каждый раз все 3000 тоже не зачем, значит нужна IndicatorCounted а как составить условие не знаю чтоб и щитало только последних 3000 и не пересчитывало поновой уже пройденные.

Спасибо за ответ.

 
depth_finde >>:

Это мой первый пост на форуме. Изучаю MQL4. Не знаю был ли такой вопрос раньше я не нашёл. Думаю что нужно применить функцию IndicatorCounted но как не знаю подскажите пожалуйста. Закачал котировки 300 тысяч а теперь при запуске индикаторы подвисают понимаю что нужно поставить условие чтоб щиталось не всех котировок а только заданное, напрмер 3000 но и пересчитывать каждый раз все 3000 тоже не зачем, значит нужна IndicatorCounted а как составить условие не знаю чтоб и щитало только последних 3000 и не пересчитывало поновой уже пройденные.

Спасибо за ответ.

Да примерно так

int start()
  {
   int counted_bars = IndicatorCounted();
//----
   if(counted_bars < 0) 
       return(-1);
//----
   if(counted_bars > 0) 
       counted_bars --;
   int pos = Bars - counted_bars;  
//----
   while(pos >= 0) 
     {
       ma1_buffer[pos] = iMA(NULL, 0 , Period1*Коэфициент, 0, Метод_Вычисления_МА, Низ,  pos);
       ma2_buffer[pos] = iMA(NULL, 0 , Period1*Коэфициент, 0, Метод_Вычисления_МА, Верх, pos);
       ma3_buffer[pos] = iMA(NULL, 0 , Period2*Коэфициент, 0, Метод_Вычисления_МА, Низ,  pos);
       ma4_buffer[pos] = iMA(NULL, 0 , Period2*Коэфициент, 0, Метод_Вычисления_МА, Верх, pos);
       ma5_buffer[pos] = iMA(NULL, 0 , Period3*Коэфициент, 0, Метод_Вычисления_МА, Низ,  pos);
       ma6_buffer[pos] = iMA(NULL, 0 , Period3*Коэфициент, 0, Метод_Вычисления_МА, Верх, pos);
       pos--;
       
     }
     
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
costy_ писал(а) >>

Если в режиме реального времени, то обновляются, если в тестере по D1 то данные M.. по последним барам (реального времени а не тестируемого).

Ответил в личке

 
costy_ писал(а) >>

Да примерно так

Наверно нет потому что так как вы показали при первом запуске будет прощитано не 3000 а 300000 котировок,все сколько есть.

 
depth_finde >>:

Наверно нет потому что так как вы показали при первом запуске будет прощитано не 3000 а 300000 котировок,все сколько есть.

Ну да, только один раз, потом изменившиеся!!!

Чтобы индикатор на всем графике прорисовался а не на его части.

 
Vinin >>:

Ответил в личке

Огромное спасибо!

 
costy_ писал(а) >>

Ну да, только один раз, потом изменившиеся!!!

Чтобы индикатор на всем графике прорисовался а не на его части.

Вот в том и суть чтоб щитать не все 300 тысяч и 5 минут ждать пока загрузиться а щитать 3000 при первом запуске а потом только изменившиеся.

А если таких индикаторов пять на графике то процесс загрузки будет 25 минут.

Причина обращения: