Предложение по улучшению. - страница 3

 
Так я не понял, у меня правильно или нет по твоему мнению?
 
По-моему мнению - нет. В аську бы перенести подобную переписку, чтоб не захламлять.
 
2Mak

Rosh, меня все устраивает.
Просто в начале я бросил фразу, что несложно и самому написать такую функцию, вот сейчас оправдываюсь/объясняюсь, что имел в виду.
Напомню, там речь шла про поиск бара по времени не совпадающем с хранимым в массиве, например поиск часового бара в который попадает время 12:01

Мне кажется, что не нужно дергать разработчиков по таким вещам, которые уже можно сделать и самим.
Есть вещи, которые невозможно сделать средствами имеющимися в системе.
Вот на эту тему можно было бы подергать ...

Но даже это мне кажется сейчас лишнее.
Лучше всем сосредоточиться на поиске и вычищении багов - их еще много.
А каждая новая фича плодит новые баги.


На сайте в каталоге выложен индикатор - PriceChanel (рабочий вариант под редакцией Романа), тот что строит уровни на текущем таймфрейме с данными бОльшего таймфрейма. Там как раз возможность обратиться по времени сильно помогла бы, хотя на мой взгляд приведенный код очень оптимален, но создание дополнительных массивов сильно потребляет ресурсы, что приводит к тормозам. К примеру: на M30 мне нужно "видеть" границы построенные по таймфрейму=D1, получасовых данных у меня с августа 2004г. , а дневок с 1989 года, т.е. из массивов полезной инфой в данном случае является менее 6%, но мне приходится их держать для того чтобы перебором искать необходимые мне уровни. На моей тачке P4-2800 c 512Мб и WXP на борту, индикатор отрисовывался более 3 минут (и это в офлайне), а при перерасчетах на каждом тике, мне что вешаться :)
Не хотите продемонстрировать изворворотливость ума и показать на примере как реализовать? :)
На всякий пожарный ссылка на индюк http://www.metaquotes.ru/experts/33/PChannel_m%203.mq4
 
По-моему мнению - нет. В аську бы перенести подобную переписку, чтоб не захламлять.
 
Не хотите продемонстрировать изворворотливость ума и показать на примере как реализовать? :)

Не хочу :)
Если только в выходные.

С текстом пока не разбирался, просто запустил с параметрами по умолчанию (в онлайн).
У меня рисует за доли секунды на всех таймфреймах.
Наверное параметры нужно какие-то задать, чтобы задержки увидеть?

Попробовал задать W1 на получасовках, тоже все махом.
Закрыл МТ и запустил заново.
Терминал подвис секунд на 5-10, но у меня там еще куча своего висит на куче чартов.
-------------------

По тексту.
1. наверное часть вычислений можно делать не по новому тику, а по новому бару.
2. Если все же тормозит и история слишком длинная, можно наверное в
   for(i=0,y=0;i<Bars;i++)
   {
          .....................
    }


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

 

На сайте в каталоге выложен индикатор - PriceChanel (рабочий вариант под редакцией Романа), тот что строит уровни на текущем таймфрейме с данными бОльшего таймфрейма. Там как раз возможность обратиться по времени сильно помогла бы, хотя на мой взгляд приведенный код очень оптимален, но создание дополнительных массивов сильно потребляет ресурсы, что приводит к тормозам. К примеру: на M30 мне нужно "видеть" границы построенные по таймфрейму=D1, получасовых данных у меня с августа 2004г. , а дневок с 1989 года, т.е. из массивов полезной инфой в данном случае является менее 6%, но мне приходится их держать для того чтобы перебором искать необходимые мне уровни. На моей тачке P4-2800 c 512Мб и WXP на борту, индикатор отрисовывался более 3 минут (и это в офлайне), а при перерасчетах на каждом тике, мне что вешаться :)
Не хотите продемонстрировать изворворотливость ума и показать на примере как реализовать? :)
На всякий пожарный ссылка на индюк http://www.metaquotes.ru/experts/33/PChannel_m%203.mq4

Вот простой код

//+------------------------------------------------------------------+
//|                                                         Test.mq4 |
//|                      Copyright © 2005, MetaQuotes Software Corp. |
//|                                        https://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, MetaQuotes Software Corp."
#property link      "https://www.metaquotes.net"

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Red
//---- input parameters
extern int       PeriodMin=1440;
//---- buffers
double ExtMapBuffer1[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,ExtMapBuffer1);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//---- TODO: add your code here
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   datetime daytimes[];
   int bigshift;
   int shift;
   int    counted_bars=IndicatorCounted();
//---- TODO: add your code here
   ArrayCopySeries(daytimes,MODE_TIME,Symbol(),PeriodMin);
  
 
   for (shift=Bars;shift>=0;shift--)
      {
   if(Time[shift]>=daytimes[0]) bigshift=0;
   else
     {
      bigshift = ArrayBsearch(daytimes,Time[shift],WHOLE_ARRAY,0,MODE_DESCEND);
      if(Period()<PERIOD_D1) bigshift++;
     }
 
 
//      bigshift=MathFloor(shift*Period()/PeriodMin);
//      ExtMapBuffer1[shift]=iCustom(NULL,PeriodMin,"GATO",22,300,120,50,6,0,bigshift);
      ExtMapBuffer1[shift]=iCustom(NULL,PeriodMin,"PChannel_m 3",10,0,bigshift);
      
      }
//----
   return(0);
  }
//+------------------------------------------------------------------+




Воткни сколько надо линий и обращайся к ним .

 
Тут чего-то в перемешку все уже. По прайс-ченэл - не совсем он доделан, нужно добавлять counted_bars=IndicatorCounted() ..... и т.д. Оптимизировать короче.
 
2Mak

можно наверное ... сделать цикл покороче?


цикл там оптимальный справа налево, как только получасовки кончаются, так и дневки не трогаются, на дневках тоже справа на лево, а вот массивы созданные с дневок - затормаживают, попробовал руками уменьшил историю дневок - результат положительный, а как уменьшить массив в индикаторе??? история та нужна, да % полезного использования очень низкий (если взять пятиминутки, и четырехчасовки когда лимит базы исчерпан, то из полученного массива будет использоваться только 1/48 часть, т.е. около 2%)
Причина обращения: