Индикаторы: ID Lite Info MA

 

ID Lite Info MA:

Индикатор показывает значения Moving Averages (MA), дельты между значениями и дельты между МА.

Автор: Dina Paches

 
Возможность видеть в таблице, в её пятой (последней) нижней строке основной части по оси Y, расстояния в пунктах между самими МА, отступами от МА или, при необходимости, размеры свечей(баров) между:
  • HIGH и LOW,
  • или HIGH и OPEN,
  • или HIGH и CLOSE,
  • или OPEN и CLOSE,
  • или LOW и OPEN
  • или LOW и CLOSE

(ну или в обратном порядке, и/или с учётом отступов, и/или с учётом нужного десятичного знака) я добавила  в индикатор недавно.

/*Изначально писала его с четырьмя строками в основной части таблицы (без последней пятой нижней).*/

Однако при добавлении новой возможности не обошлось и без пусть и несущественного, но всё-таки бага.

В общем, в опубликованной версии 1.59 индикатора, в блоке кода функции void TableCreate(), разово создающей таблицу при установке индикатора на чарт или при "разворачивании" таблицы после минимизации, вот эта строка кода, задающая переменной "toolTip" текст всплывающей подсказки для первой, третьей и пятой строк основной части таблицы (по оси Y):

toolTip=(y==(COUNT_BUFFERS-1))?toolTip=toolTipM1:toolTipM2;

- это не фича из серии "чтоб наверняка", а осталось от таблицы прежнего варианта индикатора. И оптимальнее её удалить из вот такой части кода функции void TableCreate():

      toolTip=(y==(COUNT_BUFFERS-1))?toolTip=toolTipM1:toolTipM2;//<--это лишняя строка
      switch(y)
        {
         case 1:toolTip=toolTipM1;break;
         case 3:toolTip=toolTipM2;break;
         case 5:toolTip="MA1 - MA2";heightObjK=heightObjMin;break;
        }

В другом блоке кода этой же функции void TableCreate(), идущем ниже и формирующем вторую и четвёртую по оси Y строки основной части таблицы, похожую строку не нужно удалять. Поскольку там она задаёт текст всплывающей подсказки для второй и четвёртой строк по оси Y основной части таблицы:

      toolTip=(y==COUNT_BUFFERS)?toolTip=toolTipM1:toolTipM2;
      yDisK=yDis+((heightObj+heightObjMin)*(y-k))+((DISTANCE_XY*COUNT_BUFFERS)*(y-k));
      for(int x=0;x<ARRAY_SIZE_X;x++)
        {
Сейчас выходные и подправленную версию индикатора в кодобазе не представляется возможным переопубликовать.

Поэтому, если вы уже скачали этот индикатор, то удалите, пожалуйста, у себя ту лишнюю строку.

Если же опасаетесь вмешиваться в код самостоятельно, то пока не будет опубликована в кодобазе подправленная версия, то и с этой лишней строкой при работе индикатора нет каких-либо заметных нагрузок на терминал и/или комп.

В том числе, поскольку за счёт применения оператора цикла do while (если он вам не по душе, можете заменить его на просто оператор цикла while), нет "повторной долбёжки" двукратных повторов по переприсваиванию значения переменной "toolTip" по отношению к каждой ячейке на каждом [y][x] двумерных массивов.
/*поэтому повторное переприсвоение той переменной происходит разово, при переходе цикла к следующей "черезстроке" по оси Y (в том участке кода формируются три строки основной части таблицы - первая, третья и пятая).*/

Приношу извинение за доставленное неудобство.


P./S.: Так-то, этот индикатор работает шустро и, в том числе, за счёт множества проверочных условий, не создаёт при работе существенных нагрузок на торговый терминал и/или комп. При замерах, с помощью функции GetTickCount(), времени полной обработки данных от установки индикатора на чарт в OnInit до полного пересчёта в OnCalculate (с учётом работы вспомогательных функций по подготовке, обработке и отображению данных), индикатор показывает 0 ms и с той лишней строкой (в одной секунде 1000 ms):


/*На этом скрине нумерация строк кода чуть отличается в бОльшую сторону, поскольку для замеров временно добавляла у себя в код строки для замеров. На постоянной основе или длительно, активные строки для замеров не стоит держать в коде, насколько понимаю, поэтому в опубликованном в кодобазе коде строк для замеров нет. В порядке эксперимента вы можете конечно же перепроверить скорость по времени, добавив себе в код, временно и не надолго, строки для замеров.*/


Кроме того, несмотря на то, что и сейчас индикатор работает шустро, при необходимости вы можете оптимизировать работу этого индикатора ещё больше самостоятельно. Например, полностью исключив обращения к функции iMA, заменив их функциями на основе содержащихся в файле MovingAverages.mqh.  

 

P./S.: Ну и ещё раз, на всякий случай упомяну, хоть и написала об этом в описании, что этот индикатор, в том виде, что есть, не подходит для отображения меняющихся потиково значений на нулевом (текущем) баре. Поскольку изначально не предназначался для отображения ещё не сформировавшихся (находящихся в процессе формирования) значений на ещё не сформировавшемся (формирующемся) баре.

Поэтому в код включены дополнительные проверки и условия на то, чтоб указанный в свойствах индикатора первый бар не был нулевым (в таблице первый бар - справа).

 
Ну всё, подправленная версия была переопубликована в кодобазе.  /*я только сейчас добралась до компа и узнала об этом, поэтому пишу об этом только сейчас*/
 

Дина, не стоит так переживать за бесплатно опубликованный код!

По крайней мере, пока нет реальных недовольных пользователей )

 

Спасибо, Андрей, за поддержку!

Она значима для меня от вас, тем более, поскольку, в том числе, у меня сложилось стойкое мнение, что вы склонны относится к своим лично трудам со здоровым перфекционизмом. Вне зависимости, платные они или нет.

 
Dina Paches:

Спасибо, Андрей, за поддержку!

Она значима для меня от вас, тем более, поскольку, в том числе, у меня сложилось стойкое мнение, что вы склонны относится к своим лично трудам со здоровым перфекционизмом. Вне зависимости, платные они или нет.

Дина, перфекционизм здоровым не бывает, это болезнь ))

Сам стараюсь лечиться. 

 

Искренне считала и считаю, что бывает. 

Тем более, что внимание к деталям, если, конечно, только на них не зацикливаться, может ко-о-онкретно помогать (и, без преувеличений, спасать) в жизни. Стоит ли тогда от этого "лечиться"? )

 
Dina Paches:

Искренне считала и считаю, что бывает. 

Тем более, что внимание к деталям, если, конечно, только на них не зацикливаться, может ко-о-онкретно помогать (и, без преувеличений, спасать) в жизни. Стоит ли тогда от этого "лечиться"? )

Внимание к деталям - это прекрасно. Когда оно в удовольствие ) 

 

Два разных мировоззрения. И сколь бы умным не был на том конце собеседник, сколько бы Вы не приводили выраженную в словах народную мудрость, что все кроется в деталях, в мелочах, в нюансах…Вас не поймут. С поговорками скорее всего согласятся, и только. Другое мировоззрение, другой темперамент и неумение воспринять новое (нет навыка – не сформирован) – разделят надежнее бетонной стены.

Кому то сейчас ходьба в удовольствие. Но не в прошлом. В прошлом начинать ходить было тяжело.

Кто-то находит удовольствие в достигнутом. Кто-то в процессе. Другие в процессе и результатах. Я понимаю первых и вторых, но живу как третьи. Уверен, что делать дело нужно хорошо, а лучше безупречно. Делать хорошо – это навык. Как обучишь себя, таким и будешь. Закончу поговоркой: посеешь случай – пожнешь привычку. Посеешь привычку – пожнешь характер. Посеешь характер – пожнешь судьбу.

P.S. Лечиться от хорошего)) …так в американских фильмах поступают люди получившие суперспособности. Называют себя уродами и пытаются освободиться от силы, или ума и стать нормальными, как все. В итоге пройдя через трудности он добивается своего и все оканчивается хорошо. Киногерой становится как все – нормальным - слабым, слепым и глухим) 

 

Мимо проходил..)) 

 
vlad70243:
...

Мимо проходил..)) 

Заходите ещё.

Интеллектуальным удовольствием было вас прочитать!


P./S.: Андрея (komposter) я хорошо поняла, в том числе, потому что давно его вижу/читаю. Он, как и многие из особенно "старичков" этого сайта, неординарный.

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


P./S.: Получилось, похоже, что при озвучивании своих думок, не те слова подобрала. В итоге, как не "на одной волне" с вашим постом. Sorry.

В общем, точнее будет, что и Андрей и я всё-таки взаимно поняли друг друга, думаю. Как-то так, если кратко.

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