Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 788

 
Igor Zakharov:

Да откуда ж мне знать? Человек, задавший вопрос, использовал именно iLow(), значит нужно ему. Может проще воспринимает, может планирует через входную переменную обращаться к другому символу или таймфрейму (не помню, есть ли в четвёрке copyrates?)

Есть.

 
psyman:

Я не стал выкладывать сюда код, а написал самый простой для упрощения разбора.

Про расскажите подробнее что не так, про максимальную скорость непонятно.

Vladimir Karputov:

Код СТРАШНО ГЛЮЧНЫЙ - так как на каждом тике делается проход ПО ВСЕМ БАРАМ.


В четверке был IndicatorCounted(), какие есть возможности в пятерке я не знаю и даже почитать об этом толком негде.

Такой вариант годится, или можно упростить?

int OnCalculate(....)
{
   int i, Counted_bars;
   
      Counted_bars=IndicatorCounted(); // Количество просчитанных баров 
      i=Bars-Counted_bars-1;           // Индекс первого непосчитанного

      while(i>=0)                      // Цикл по непосчитанным барам
      { 
        .....
        
       i--;                          
      }
}

int IndicatorCounted()
  {
   if(prev_calculated>0) return(prev_calculated-1);
   if(prev_calculated==0) return(0);
   return(0);
  }
 
psyman:


В четверке был IndicatorCounted(), какие есть возможности в пятерке я не знаю и даже почитать об этом толком негде.

Такой вариант годится, или можно упростить?

Справка, форум, статьи - это по Вашему "почитать негде"? Было бы желание. А вообще Вы пишите в теме про старый терминал, а вопросы задаёте по MQL5. Нестыковочка. 

Всё ушёл из темы.

 
psyman:


В четверке был IndicatorCounted(), какие есть возможности в пятерке я не знаю и даже почитать об этом толком негде.

Такой вариант годится, или можно упростить?

Сейчас и в mql4 и в mql5 основная функция индикатора имеет всё что надо

int OnCalculate (const int rates_total,      // размер входных таймсерий
                 const int prev_calculated,  // обработано баров на предыдущем вызове
                 const datetime& time[],     // Time
                 const double& open[],       // Open
                 const double& high[],       // High
                 const double& low[],        // Low
                 const double& close[],      // Close
                 const long& tick_volume[],  // Tick Volume
                 const long& volume[],       // Real Volume
                 const int& spread[]         // Spread
   );

prev_calculated это и есть количество посчитанных баров.

 

Здравствуйте.

Если цена за 60 секунд изменилась на 30 пунктов то отмечу бар

 for(int i=limit; i>=0; i--)
     {
      datetime t_=TimeCurrent();
      if(t_>t_b+60)
        {
         t_b = TimeCurrent();
         pr_b=close[0];
        }
      if(MathAbs(close[0]-pr_b)>=30*Point && t_<t_b+60)
        {
         BufferUP[i]=low[i]-10*Point;
        }

     }

Что не так?

 
lil_lil:

Здравствуйте.

Если цена за 60 секунд изменилась на 30 пунктов то отмечу бар

Что не так?

Почему так

int limit=rates_total-prev_calculated-1;

а не так?

int limit=rates_total-prev_calculated;

Где установка лимита?

   if(limit>1)
     {
      ArrayInitialize(BufferUP,EMPTY_VALUE);
      ArrayInitialize(BufferDN,EMPTY_VALUE);
     }
   if(limit>1)
     {
      limit=rates_total-1;
      ArrayInitialize(BufferUP,EMPTY_VALUE);
      ArrayInitialize(BufferDN,EMPTY_VALUE);
     }

Дальше не глядел

 
Artyom Trishkin:

Почему так

а не так?

Где установка лимита?

Дальше не глядел

Спасибо, но так тоже нет результата. Посмотрите дальше, пожалуйста.

 
lil_lil:

Спасибо, но так тоже нет результата. Посмотрите дальше, пожалуйста.

Это что?

datetime t_=TimeCurrent();

Вы берёте какое время в цикле? Что такое TimeCurrent() ?

 
Здраствуйте! 
Есть в советнике функция получения текста из ссылки....получаю ее вот этой библиотекой:
https://github.com/sergeylukin/mql4-http
Все отлично и вопросов к ней нет!
Проблема в следующем:
В этой ссылке текст систематически обновляется, а терминал этого не воспринимает, даже когда сбрасывает сову с графика и ставишь заново! Помогает только закрытие и открытие терминала вовсе! Может кто знает как это можно исправить?
 
lil_lil:

Здравствуйте.

Если цена за 60 секунд изменилась на 30 пунктов то отмечу бар

Что не так?

Недавно я встречал во фрилансе заказ с похожим заданием. Не этот-ли заказ вы выполняете?

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