Индикаторы: Portfolio Optimizer - страница 27

 
Весь глюк происходит из-за рассинхронизации. На момент прихода нового бара по остальным инструментам портфеля не всегда тик приходит в это же время и получается что для портфеля смещаются некоторые бары в расчёте для отрисовки. То есть к примеру по трём инструментам уже нулевой (нынешний бар) есть, а по двум этот бар не нулевой а первый по отношению нынешнего бара. И вот с приходом очередной минуты всё выравнивается, ибо в мт5 бары строятся из минутных.
Единственный выход это отрисовывать портфель с приходом нового бара по последним известным ценам, и только на моменте +1 минута пересчитывать перерисовку, ибо обычно за первую почти всегда приходит тик по каждому инструменту.
В своих поделках делал с таймером до 20 секунд и даже такая пауза не решала эту проблему, именно через минуту всё отрисовывалось как положено.
Добавлю , что на минутном ты этого глюка не избежать, каждую минуту отрисовывается по разному история портфеля, но нулевой (нынешний) бар имеет актуальную цену.
 
Anatolii Zainchkovskii:
Весь глюк происходит из-за рассинхронизации. На момент прихода нового бара по остальным инструментам портфеля не всегда тик приходит в это же время и получается что для портфеля смещаются некоторые бары в расчёте для отрисовки. То есть к примеру по трём инструментам уже нулевой (нынешний бар) есть, а по двум этот бар не нулевой а первый по отношению нынешнего бара. И вот с приходом очередной минуты всё выравнивается, ибо в мт5 бары строятся из минутных.
Единственный выход это отрисовывать портфель с приходом нового бара по последним известным ценам, и только на моменте +1 минута пересчитывать перерисовку, ибо обычно за первую почти всегда приходит тик по каждому инструменту.
В своих поделках делал с таймером до 20 секунд и даже такая пауза не решала эту проблему, именно через минуту всё отрисовывалось как положено.
Добавлю , что на минутном ты этого глюка не избежать, каждую минуту отрисовывается по разному история портфеля, но нулевой (нынешний) бар имеет актуальную цену.

рассинхронизация по номерам баров вроде не должна влиять ведь я запрашиваю для каждого символа номер бара по дататайму

 
Anatolii Zainchkovskii:
ибо в мт5 бары строятся из минутных.

Так модельер и менеджер под МТ4 писан же

 
Anatolii Zainchkovskii:
Весь глюк происходит из-за рассинхронизации. На момент прихода нового бара по остальным инструментам портфеля не всегда тик приходит в это же время и получается что для портфеля смещаются некоторые бары в расчёте для отрисовки. То есть к примеру по трём инструментам уже нулевой (нынешний бар) есть, а по двум этот бар не нулевой а первый по отношению нынешнего бара. И вот с приходом очередной минуты всё выравнивается, ибо в мт5 бары строятся из минутных.
Единственный выход это отрисовывать портфель с приходом нового бара по последним известным ценам, и только на моменте +1 минута пересчитывать перерисовку, ибо обычно за первую почти всегда приходит тик по каждому инструменту.
В своих поделках делал с таймером до 20 секунд и даже такая пауза не решала эту проблему, именно через минуту всё отрисовывалось как положено.
Добавлю , что на минутном ты этого глюка не избежать, каждую минуту отрисовывается по разному история портфеля, но нулевой (нынешний) бар имеет актуальную цену.

Да Анатолий, спасибо-вы подробно описали. Визуально происходит, как вы и описываете. А если ввести усреднение портфеля МА периодом от 2 до 5 и уже смотреть пробитие уровней уже  МА .  Это может помочь? как считаете?

 

Можно попробовать мониторить все символы формулы, навскидку примерно так:

#include <monitor.mqh>


MultiSymbolMonitor monitor;


void OnInit()
{
  ...
  monitor.reset();
  for(int i = 0; i < MAX_SYMBOLS; i++)
  {
    if(StringLen(SYMBOLS[i]))
    {
      monitor.attach(SYMBOLS[i]);
    }
  }
  ...
}

int OnCalculate(...)
{
  if(Time[0] == saved_time && monitor.check() == 0) // no changes
  {
    UpdateLastBar();
  }
  else
  {
    monitor.refresh();
    UpdateFullChart();
  }

  saved_time = Time[0];
  return rates_total;
}

Класс монитора прилагается.

Файлы:
monitor.mqh  2 kb
crc64.mqh  11 kb
 
Stanislav Korotky:

Можно попробовать мониторить все символы формулы, навскидку примерно так:

Класс монитора прилагается.

спасибо! через некоторое время попробую

 
Aleksandr Volotko:

Да, состряпаю какой нить портфель, включу запись скринов и рано или поздно глюк себя проявит. Ну и шаблон, соответственно, будет.

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

Вот так вот всё нормально себе работает:


пока в какой-то момент не происходит такая хня:

а с приходом нового минутного бара всё нормализуется

---

отчего так я без понятия, автор пока тоже, нужна помощь зала я так понимаю

в прицепе шаблон и скрины за час, делались с интервалом 10 сек

Файлы:
terminal.zip  5520 kb
terminal.tpl  12 kb
 
Автор уже приблизительно догадывается, что это связано с принудительной перерисовкой (удалением и повторным созданием) линий, и в ближайшее время планируется убрать принудительную перерисовку, также линии не будут переименовываться при включении Movable Lines, что должно предотвратить странную проблему, когда линии проваливаются в чужой подвал чужого индикатора... также планируется упростить блок фильтров пучка, убрать составные фильтры, потому что за всё время ими никто не пользовался, даже сам автор...
 
transcendreamer:
Автор уже приблизительно догадывается,

нет, надо знать точно, помощь ещё никому не мешала

и не надо спешить убирать что-то, оно никому не мешает

 
Aleksandr Volotko:

нет, надо знать точно, помощь ещё никому не мешала

и не надо спешить убирать что-то, оно никому не мешает

маловероятно чтобы кому-то было интересно ковыряться в моём глючнокоде

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