Пользовательские символы. Ошибки, баги, вопросы, предложения. - страница 12

 
fxsaber:

Баг 16.

Раньше CustomTicksAdd формировала бары из тиков, что относились к текущим суткам. Сейчас и этого нет.

Похоже, этот баг связан с багом №14.

Удаление символа из обзора рынка стало возможным по следующей причине. Вызов подряд CustomSymbolCreate - CustomSymbolDelete - CustomSymbolCreate с одним и тем же именем кастомного символа приводило к тому, что сбивался идентификатор символа. Поэтому при проверке, можно ли удалить символ из обзора рынка график этого символа не находился (идентификатор испорчен), и символ спокойно удалялся. Это исправлено.

При применении тика на график возможно то же самое - поиск графика по идентификатору символа не давал результата

 
fxsaber:

Баг 15.

На символе этого советника (с удаленной ChartSetSymbolPeriod-строкой) запускаем такой индикатор

Выдает только нули.

Совершенно справедливо.

При вызове CustomRatesUpdate все счётчики изменений сбрасываются и индикаторы пересчитываются с нуля

 
Slava:

Совершенно справедливо.

При вызове CustomRatesUpdate все счётчики изменений сбрасываются и индикаторы пересчитываются с нуля

В чем логика такого решения? Ведь есть же неизменные бары слева.

 
fxsaber:

В чем логика такого решения? Ведь есть же неизменные бары слева.

prev_calculated содержит значение, которое было возвращено на предыдущем вызове OnCalculate

Индикаторописатель может возвращать любое значение, исходя из собственной логики. Поэтому нет никакого смысла пробегать по всем индикаторам и менять значение prev_calculated на собственное рассчитанное с учётом таймфрейма значение. И ресурсоёмко это, может даже оказаться неоправданно ресурсоёмко.

Гораздо честнее выставить 0, как в начале, когда ещё ничего не считалось

 
Slava:

prev_calculated содержит значение, которое было возвращено на предыдущем вызове OnCalculate

Индикаторописатель может возвращать любое значение, исходя из собственной логики. Поэтому нет никакого смысла пробегать по всем индикаторам и менять значение prev_calculated на собственное рассчитанное с учётом таймфрейма значение. И ресурсоёмко это, может даже оказаться неоправданно ресурсоёмко.

Гораздо честнее выставить 0, как в начале, когда ещё ничего не считалось

Тогда как быть, когда на кастомном символе после каждого проброса тика индикаторы полностью пересчитываются из-за этого нулевого значения?

Индикаторы специально пишутся, чтобы не тормозить Терминал, а тут все начинает происходить наоборот.

 
fxsaber:

Тогда как быть, когда на кастомном символе после каждого проброса тика индикаторы полностью пересчитываются из-за этого нулевого значения?

Не должно быть такого. Проверим

 
Slava:

Не должно быть такого. Проверим

Уточню, что проброс тиков из прошлого - это не только CustomTicksAdd, но и RatesUpdate. Ведь даже рабочая TicksAdd не формировала бары ранее текущих суток. Приходится их формировать самостоятельно. Ну и получаем нулевой prev_calculated из-за этого.

 
fxsaber:

Уточню, что проброс тиков из прошлого - это не только CustomTicksAdd, но и RatesUpdate. Ведь даже рабочая TicksAdd не формировала бары ранее текущих суток. Приходится их формировать самостоятельно. Ну и получаем нулевой prev_calculated из-за этого.

По-любому при замене, обновлении, удалении баров все индикаторы будут пересчитываться с нуля. Это не обсуждается.

Добавление тиков должно работать по-штатному, то есть тики - свежие, сегодняшние, а не вчерашние-позавчерашние.

Запустил Вашего эксперта из описания бага 11, затем запустил индикатор с принтом на каждом OnCalculate

Вот логи

2019.06.07 08:11:34.240 CustomHistoryTick (EURUSD,H1)   CustomSymbolCreate(Name,NULL,_Symbol) = true
2019.06.07 08:11:34.243 CustomHistoryTick (EURUSD,H1)   CustomRatesDelete(Name,0,0) = 0
2019.06.07 08:11:34.243 CustomHistoryTick (EURUSD,H1)   SymbolSelect(Name,false) = true
2019.06.07 08:11:34.243 CustomHistoryTick (EURUSD,H1)   CustomSymbolDelete(Name) = true
2019.06.07 08:11:34.243 CustomHistoryTick (EURUSD,H1)   CustomSymbolCreate(Name,NULL,_Symbol) = true
2019.06.07 08:11:34.321 CustomHistoryTick (EURUSD,H1)   CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,(TimeCurrent()-3600)*1000) = 1114
2019.06.07 08:11:46.158 Custom Moving Average (EURUSD11608,M1)  13  prev_calculated=0  begin=0  data=1.126668940063615
2019.06.07 08:11:46.173 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=13  begin=0  data=0.2989269387755102
2019.06.07 08:11:46.209 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989283673469387
2019.06.07 08:11:46.228 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989297959183673
2019.06.07 08:11:46.246 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989312244897959
2019.06.07 08:11:46.271 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989312244897959
2019.06.07 08:11:46.305 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989283673469387
2019.06.07 08:11:46.399 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989269387755102
2019.06.07 08:11:46.427 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989255102040816
2019.06.07 08:11:46.460 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989269387755102
2019.06.07 08:11:46.494 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989255102040816
2019.06.07 08:11:46.521 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989269387755102
2019.06.07 08:11:46.561 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989283673469387
2019.06.07 08:11:46.586 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989283673469387
2019.06.07 08:11:46.614 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989297959183673
2019.06.07 08:11:46.645 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989283673469387
2019.06.07 08:11:46.676 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989297959183673
2019.06.07 08:11:46.708 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989283673469387
2019.06.07 08:11:46.775 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989283673469387
2019.06.07 08:11:46.803 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989269387755102
2019.06.07 08:11:46.835 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989283673469387
2019.06.07 08:11:46.869 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989269387755102
2019.06.07 08:11:46.898 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989255102040816
2019.06.07 08:11:46.930 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989255102040816
2019.06.07 08:11:46.972 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.298924081632653
2019.06.07 08:11:46.993 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989226530612245
2019.06.07 08:11:47.024 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.298924081632653
2019.06.07 08:11:47.050 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989255102040816
2019.06.07 08:11:47.085 Custom Moving Average (EURUSD11608,M1)  15  prev_calculated=14  begin=0  data=0.4171804373177843
2019.06.07 08:11:47.116 Custom Moving Average (EURUSD11608,M1)  15  prev_calculated=15  begin=0  data=0.4171790087463557
2019.06.07 08:11:47.175 Custom Moving Average (EURUSD11608,M1)  15  prev_calculated=15  begin=0  data=0.4171775801749271
2019.06.07 08:11:47.198 Custom Moving Average (EURUSD11608,M1)  15  prev_calculated=15  begin=0  data=0.4171790087463557
2019.06.07 08:11:47.215 Custom Moving Average (EURUSD11608,M1)  15  prev_calculated=15  begin=0  data=0.4171790087463557
2019.06.07 08:11:47.242 Custom Moving Average (EURUSD11608,M1)  15  prev_calculated=15  begin=0  data=0.4171775801749271
2019.06.07 08:11:47.270 Custom Moving Average (EURUSD11608,M1)  15  prev_calculated=15  begin=0  data=0.4171761516034985
2019.06.07 08:11:47.302 Custom Moving Average (EURUSD11608,M1)  15  prev_calculated=15  begin=0  data=0.4171775801749271
2019.06.07 08:11:47.335 Custom Moving Average (EURUSD11608,M1)  15  prev_calculated=15  begin=0  data=0.4171790087463557
2019.06.07 08:11:47.370 Custom Moving Average (EURUSD11608,M1)  15  prev_calculated=15  begin=0  data=0.4171761516034985
2019.06.07 08:11:47.398 Custom Moving Average (EURUSD11608,M1)  15  prev_calculated=15  begin=0  data=0.4171804373177843
2019.06.07 08:11:47.434 Custom Moving Average (EURUSD11608,M1)  15  prev_calculated=15  begin=0  data=0.4171790087463557
2019.06.07 08:11:47.466 Custom Moving Average (EURUSD11608,M1)  15  prev_calculated=15  begin=0  data=0.4171775801749271
2019.06.07 08:11:47.494 Custom Moving Average (EURUSD11608,M1)  15  prev_calculated=15  begin=0  data=0.4171775801749271
2019.06.07 08:11:47.528 Custom Moving Average (EURUSD11608,M1)  15  prev_calculated=15  begin=0  data=0.4171775801749271
2019.06.07 08:11:47.586 Custom Moving Average (EURUSD11608,M1)  15  prev_calculated=15  begin=0  data=0.4171775801749271
2019.06.07 08:11:47.617 Custom Moving Average (EURUSD11608,M1)  15  prev_calculated=15  begin=0  data=0.4171775801749271
2019.06.07 08:11:47.646 Custom Moving Average (EURUSD11608,M1)  15  prev_calculated=15  begin=0  data=0.41717472303207
2019.06.07 08:11:47.679 Custom Moving Average (EURUSD11608,M1)  15  prev_calculated=15  begin=0  data=0.4171775801749271
2019.06.07 08:11:47.716 Custom Moving Average (EURUSD11608,M1)  16  prev_calculated=15  begin=0  data=0.5185379258642233
2019.06.07 08:11:47.740 Custom Moving Average (EURUSD11608,M1)  16  prev_calculated=16  begin=0  data=0.5185364972927947

То есть, при нормальной ситуации (тики сегодняшние, как и должно быть всегда) всё правильно работает. И тики добавляются, и индикатор считается экономно

 
Slava:

По-любому при замене, обновлении, удалении баров все индикаторы будут пересчитываться с нуля. Это не обсуждается.

Добавление тиков должно работать по-штатному, то есть тики - свежие, сегодняшние, а не вчерашние-позавчерашние.

Запустил Вашего эксперта из описания бага 11, затем запустил индикатор с принтом на каждом OnCalculate

Вот логи

То есть, при нормальной ситуации (тики сегодняшние, как и должно быть всегда) всё правильно работает. И тики добавляются, и индикатор считается экономно

Разве это правильное утверждение?

Щелкните по изображению, чтобы увидеть анимацию.


Более того, если сейчас 00:00:01, то не получится через CustomTicksAdd досформировать бар, который был всего две секунды назад.

 
fxsaber:

Разве это правильное утверждение?

Для тестера позавчерашний тик на позавчерашний же момент времент является свежим, сегодняшним.

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

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