Ошибки, баги, вопросы - страница 2798

 
Alexey Viktorov:

Интересно, а вы посмотрели документацию или просто взяли описание функции из моего сообщения?

Я так подозреваю, что у вас графические объекты это только трендовые. Если это так, то зачем вам префикс? Там ведь есть ещё удаление по типу объекта

соответственно ничего не надо было менять в проекте, а просто написать

)))))))))))))

Конечно же, я смотрел документацию. И да, всё можно! Но я сделал так... И что, это не работает или каким-то образом мешает?...

А в проекте, там всё куда сложнее. Говорил выше об этом...
 
Artyom Trishkin:

Это лишь частный случай. Префикс - общий и универсальный. При том, что удаление всех трендовых линий коснётся и не принадлежащих программе объектов.

Согласен. chart_id: 0 (текущий график). Значит только на этом графике. А если там будут другие программы, то можно добавить ID к каждому имени объекта и вызвать ObjectsDeleteAll  с соответствующим префиксом и функция ничего путать не будет. Вот, почему я говорил в сообщениях выше, что именование объектов у меня сложное и мне нужно было подумать, прежде чем использовать данную функцию. Но Алексей на меня обиделся, еще и его друг... Зря!

 
Mihail Matkovskij:

Это почему? chart_id: 0 (текущий график). Значит только на этом графике. А если там будут другие программы, то есть еще такое понятие, как ID. Если его добавлять к каждому имени объекта, то функция ObjectsDeleteAll ничего путать не будет. Вот, почему я говорил в сообщениях выше, что именование объектов у меня сложное и мне нужно было подумать, прежде чем использовать данную функцию. Но Алексей на меня обиделся, еще и его друг... Зря!

Мозг-то включите перед тем как ответить :)

ID, вписанный в имя объекта - это и есть некий префикс, по идентификации которого и удаляются объекты программы.

А теперь поглядите на какой код я писал свой ответ Алексею, и как его код удалит только нужные вам объекты, в которых НЕ будет вписан идентификатор, и который оставит на графике "чужие" объекты, не принадлежащие программе?

Ответ мой был Алексею на этот код с таким сообщением Алексея:

соответственно ничего не надо было менять в проекте, а просто написать

ObjectsDeleteAll(0, 0, OBJ_TREND);
)))))))))))))
 
Artyom Trishkin:

Мозг-то включите перед тем как ответить :)

ID, вписанный в имя объекта - это и есть некий префикс, по идентификации которого и удаляются объекты программы.

А теперь поглядите на какой код я писал свой ответ Алексею, и как его код удалит только нужные вам объекты, в которых НЕ будет вписан идентификатор, и который оставит на графике "чужие" объекты, не принадлежащие программе?

Ответ мой был Алексею на этот код с таким сообщением Алексея:

Отредактировал. Вы правильно ответили. Это я немного перепутал. Другое хотел сказать.

 
Mihail Matkovskij:

Но Алексей на меня обиделся, …

Не дождёшься… Я только за справедливость. Не надо выставлять свои огрехи, а они бывают у всех и у меня тоже, за баги терминала.

Есть один свежий пример: Некоторое время назад я с удовольствием пользовался такой примочкой, правый клик на переменной, «Перейти к определению» и чтобы вернуться на ту самую переменную я нажимал клавишь на крыске «Назад». Но вот сегодня заметил что это перестало работать. Причина??? Вчера обновился до 2530… Я даже высказался в адрес разработчиков нецензурной лексикой, но вдруг вспомнил что ещё и крыску пришлось поменять. Открыл МЕ 2474 и опа………………… и там не работает. А если-бы мне сразу пришла СМС'ка в голову написать всё что я подумал о разработчиках? Как-бы это выглядело.

Это я к тому, что не надо спешить, прежде чем писать о багах, поищите огрехи в своём коде.

 
Alexey Viktorov:

Не дождёшься… Я только за справедливость. Не надо выставлять свои огрехи, а они бывают у всех и у меня тоже, за баги терминала .

А кто выставляет?  https://www.mql5.com/ru/forum/1111/page2795#comment_17290368 . Надеюсь, прочли на этот раз внимательно?... Сколько мне еще раз нужно повториться, чтобы до вас наконец дошло и вы не писали здесь ерунду?!

 
Mihail Matkovskij:

А кто выставляет?  https://www.mql5.com/ru/forum/1111/page2795#comment_17290368 . Надеюсь, прочли на этот раз внимательно?... Сколько мне еще раз нужно повториться, чтобы до вас наконец дошло и вы не писали здесь ерунду?!

Я только за справедливость.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

Mihail Matkovskij, 2020.07.11 14:47

Сделал исходник, где возникает данный баг:
//+------------------------------------------------------------------+
//|                                           DeleteChartObjects.mq5 |
//|                                      Copyright 2020, © Cyberdev. |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, © Cyberdev."
#property version   "1.00"
#property indicator_chart_window

#property indicator_plots 0

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+

#include <ChartObjects\ChartObjectsLines.mqh>
#include <Arrays\ArrayObj.mqh>

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
//--- input parameters
input int      nBars = 100000;

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int customN_Bars = 0;

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
CArrayObj listOfTrendLines;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit() {
//--- indicator buffers mapping
  int totalBars = iBars(NULL, PERIOD_CURRENT);
  customN_Bars = (nBars < totalBars) ? nBars : totalBars;
//---
  return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[]
) {
  CChartObjectTrend * trend;
  int delta = rates_total - customN_Bars;
  int shift;
  int i;
  for(i = 0; i < customN_Bars; i++) {
    shift = delta + customN_Bars - i - 1;
    trend = new CChartObjectTrend();
    if(trend.Create(0, "trend"+(string)i, 0, time[shift], low[shift], time[shift], high[shift]))
      listOfTrendLines.Add(trend);
  }
  return(rates_total);
}

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason) {
  
  CChartObjectTrend * trend;
  
  int i = listOfTrendLines.Total() - 1;
  for(; i >= 0; i--) {
    trend = dynamic_cast <CChartObjectTrend *> (listOfTrendLines.At(i));
    
    if(CheckPointer(trend) == POINTER_INVALID)
      continue;
    
    delete trend;
  }
}
//+------------------------------------------------------------------+

Действия для демонстрации бага.

1. Бросить индикатор на график.

2. Удалить индикатор с графика.

3. Нажать Ctrl+B, затем в окне нажать кнопку "List all" и увидеть не удаленные объекты.

Objects

У меня их осталось аж 294 из 100000.

Если уменьшить значение входного параметра nBars, то баг не проявляется.


 
Alexey Viktorov:

Я только за справедливость.



Так в том сообщении не было сказано, какой это баг, моей программы или баг терминала. Я подумал, что это баг терминала. Но Рашид Умаров мне всё объяснил и я его понял. По моему всё предельно ясно. Никакого бага терминала не было, это я ошибся в своих предположениях. Вы же преследуете меня с каким-то маниакальным энтузиазмом. Я спросил, в чём причина, вы ответили:

Давно-бы замолчал и я не продолжал-бы.

Вот она, причина...

Перестаньте же вы заниматься ерундой наконец! Взрослый человек (я надеюсь)...

 
Mihail Matkovskij:

Так в то сообщении не было сказано, какой это баг, моей программы или баг терминала. Я подумал, что это баг терминала. Но Рашид Умаров мне всё объяснил и я его понял. По моему всё предельно ясно. Никакого бага терминала не было, это я ошибся в своих предположениях. Вы же преследуете меня с каким-то маниакальным энтузиазмом. Я спросил, в чём причина, вы ответили:

Вот она, причина...

Перестаньте же вы заниматься ерундой наконец! Взрослый человек (я надеюсь)...

Ладно. В кувырке переобулся. Выдал как баг терминала и ………… всё живите как знаете.

 
Подключение хранилища

  https://storage.mql5.io   не возможно авторизоваться.