Индикаторы: Тиковый индикатор ZoomPrice - страница 4

 
ascerdfg:

Я распаковал mql5.com/ru/code/download/16753.zip и скопировал с сохранением структуры папок.

При компилировании ZoomPrice.mq5 в MetaEditor 5.0 build 2715 выдаёт ошибку: 

zip-файлы в базе кодов давно не обновляются при обновлении исходников. Загружайте каждый файл отдельно.

 

1. В файле Ticks.mqh есть такой код

AmountTicks = this.GetFreshTicks(NewTicks, COPY_TICKS_INFO, (uint)MathMax((this.To - this.LastTime) >> 5, 2000)); // ~2000 ticks/minute

При этом в GetFreshTicks идёт проверка

if ((NewAmount > 0) && (this.Count < NewAmount))

Другими словами, если будут считаны последние несколько тиков, GetFreshTicks массив NewTicks не изменит. Но он не чистится, и будет обработан старый массив со старыми значениями. Как вариант, решается это переносом объявления MqlTick NewTicks[];

    TICK Tick;

    int AmountTicks = 1;

    while (AmountTicks > 0)
    {
      MqlTick NewTicks[];
      AmountTicks = this.GetFreshTicks(NewTicks, COPY_TICKS_INFO, (uint)MathMax((this.To - this.LastTime) >> 5, 2000)); // ~2000 ticks/minute


2. Немного опечаток

Количество тиков в последенем запросе


Пока из-за этого бага https://www.mql5.com/ru/forum/363680/page9#comment_21182494 не могу сказать, всё ли дальше нормально или ещё что не работает.

 

Пока из-за этого бага https://www.mql5.com/ru/forum/363680/page9#comment_21182494 не могу сказать, всё ли дальше нормально или ещё что не работает.

Возможно, имеет смысл перейти на CopyTicksRange.

 
traveller00:

Возможно, имеет смысл перейти на CopyTicksRange.

Индикатор древний. Тогда еще не было даже этой функции. Для правильной работы, конечно, нужно вносить изменения.

 
traveller00:

Возможно, имеет смысл перейти на CopyTicksRange.

Похоже, это рабочий вариант.


3. Есть функция void SetAutoScroll( void ). Если стоит автопереход графика к правому краю, время для ZoomTicks будет вычисляться на основе реального текущего времени через this.Ticks.GetNowTime(). Но кастомные символы не плодят новые тики. В итоге From и To заполнятся значениями из текущего времени, тики для них он не подхватит (новых тиков нет), картинку тиков в итоге покажет старую, но в this.SetTextCross подпишет время текущее.


4. Запрос тиков идёт с левого края интервала. Если интервал идёт 01:00:00-01:01:00, а первый входящий в интервал тик будет в 01:00:30, на левой половине будет дырка.

 
traveller00:

4. Запрос тиков идёт с левого края интервала. Если интервал идёт 01:00:00-01:01:00, а первый входящий в интервал тик будет в 01:00:30, на левой половине будет дырка.

Это было изначально. Не правил специально.

 
fxsaber:

Это было изначально. Не правил специально.

А зачем была нужна дырка, если не секрет?

 
traveller00:

А зачем была нужна дырка, если не секрет?

Сразу вижу, что тика левее не было.

 
ascerdfg:

И у меня теже ошибки.

там вон чуть выше, уважаемый fxsaber скидывал рабочий вариант индикатора, у меня до сих пор работает)