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

[Удален]  
Slawa:
Запросто. Приходит первый тик нового бара. Буфер распределён на 1000 баров и полностью заполнен.

Делаем перераспределение буфера на 1250 баров, копируем в новый буфер 1000 баров из прежнего буфера. Новый буфер выставляем вместо прежнего буфера, прежний буфер удаляем. Добавляем 1001-й бар.

Что значит "как с ним быть"?

Имейте в виду, что все индикаторы одного символа считаются последовательно друг за другом в одном потоке. Если какой-то индикатор тормозит, то тормозится и весь поток обработки символа
Про один поток - это я в курсе. А перераспределение, как я понял, влияет на OnBookEvent() сильнее, чем на OnCalculate()?
 
Alexey Kozitsyn:
Про один поток - это я в курсе. А перераспределение, как я понял, влияет на OnBookEvent() сильнее, чем на OnCalculate()?
Перераспределение производится при приходе нового тика. Сразу после прихода нового тика вне очереди вызывается OnCalculate. И только после этого продолжается обработка событий, поступивших индикатору

Но пока индикатор (любой индикатор на этом символе!) не закончит какой-либо расчёт (OnCalculate, OnTimer, OnChartEvent, OnBookEvent), новый тик не поступит на обработку.
[Удален]  
Slawa:
Перераспределение производится при приходе нового тика. Сразу после прихода нового тика вне очереди вызывается OnCalculate. И только после этого продолжается обработка событий, поступивших индикатору

Но пока индикатор (любой индикатор на этом символе!) не закончит какой-либо расчёт (OnCalculate, OnTimer, OnChartEvent, OnBookEvent), новый тик не поступит на обработку.

Еще, насколько я понимаю, индикаторы на одном символе рассчитываются последовательно, т.е. если я кинул последовательно индикатор i1, i2, i3, то и рассчитываться они будут в том же порядке?

Сейчас для теста добавил еще стандартный МАКД, он последний в списке, посмотрю будет ли на нем подвисание с образованием нового бара. 

 
Alexey Kozitsyn:

Еще, насколько я понимаю, индикаторы на одном символе рассчитываются последовательно, т.е. если я кинул последовательно индикатор i1, i2, i3, то и рассчитываться они будут в том же порядке?

Сейчас для теста добавил еще стандартный МАКД, он последний в списке, посмотрю будет ли на нем подвисание с образованием нового бара. 

По началу - да, расчёт будет в той же последовательности.

Но если Вы будете удалять-добавлять разные индикаторы, то последовательность пересчёта может Вас удивить. Поэтому не закладывайтесь на последовательность
[Удален]  
Slawa:
По началу - да, расчёт будет в той же последовательности.

Но если Вы будете удалять-добавлять разные индикаторы, то последовательность пересчёта может Вас удивить. Поэтому не закладывайтесь на последовательность
Это нужно для того, чтобы проверить, если повиснут мои индикаторы, рассчитается ли последний - стандартный МАКД. Все мои идут перед МАКД.
[Удален]  
Slawa:

Вот о чем я говорил:

 

По GOLD-3.17 образовался новый бар, по всем моим индикаторам, рассчитываемым в OnBookEvent() по этому символу все текущие значения обнулились. По логике индикатора, в момент формирования нового бара буферы не обнуляются, а в них сразу же записывается текущее значение. МАКД не обнулился. Журнал пуст, значит рассинхронизации не было, все значения должны были быть корректны. В данном случае глюк продолжался секунд 5. Вчера ловил по несколько минут глюки.

Все остальные символы - нормально. Повторюсь, в логику индикатора не заложен сброс значений в 0! Поэтому вопрос: при перераспределении новые элементы, по идее, должны содержать мусор. А тут 0.0 и зависание...

Да, еще: если бы завис один индикатор, остальные должны были бы сохранить свои значения?! А тут все, разом обнулились. Есть ситуации, когда такое может быть?
[Удален]  

Аналогичное зависание произошло по BR-3.17:

 

@Slawa есть идеи в какую сторону копать? Может быть есть более оптимальный способ сбора биржевых данных и их отображения?

 

Что делать в случае возникновения такой ошибки при загрузке MQL-программы на график?

2017.02.15 15:13:28.351 MQL5    'TestLibrary.ex5' has newer unsupported version, please update your client terminal

Сервисдеск: #1673705

 
Slawa:
Имейте в виду, что все индикаторы одного символа считаются последовательно друг за другом в одном потоке. Если какой-то индикатор тормозит, то тормозится и весь поток обработки символа
Slawa, одного символа или на одном чарте? Если открыто несколько графиков одного и того же символа, и на них брошены разные индикаторы, они что, все в одном потоке рассчитываются? Или всё-таки каждый чарт в своём потоке?
 

На Metaquotes-Demo лимитники могут иметь отрицательное проскальзывание - не правильно.

Выставите вручную BuyLimit выше Ask...