Раньше CustomTicksAdd формировала бары из тиков, что относились к текущим суткам. Сейчас и этого нет.
Похоже, этот баг связан с багом №14.
Удаление символа из обзора рынка стало возможным по следующей причине. Вызов подряд CustomSymbolCreate - CustomSymbolDelete - CustomSymbolCreate с одним и тем же именем кастомного символа приводило к тому, что сбивался идентификатор символа. Поэтому при проверке, можно ли удалить символ из обзора рынка график этого символа не находился (идентификатор испорчен), и символ спокойно удалялся. Это исправлено.
При применении тика на график возможно то же самое - поиск графика по идентификатору символа не давал результата
В чем логика такого решения? Ведь есть же неизменные бары слева.
prev_calculated содержит значение, которое было возвращено на предыдущем вызове OnCalculate
Индикаторописатель может возвращать любое значение, исходя из собственной логики. Поэтому нет никакого смысла пробегать по всем индикаторам и менять значение prev_calculated на собственное рассчитанное с учётом таймфрейма значение. И ресурсоёмко это, может даже оказаться неоправданно ресурсоёмко.
Гораздо честнее выставить 0, как в начале, когда ещё ничего не считалось
prev_calculated содержит значение, которое было возвращено на предыдущем вызове OnCalculate
Индикаторописатель может возвращать любое значение, исходя из собственной логики. Поэтому нет никакого смысла пробегать по всем индикаторам и менять значение prev_calculated на собственное рассчитанное с учётом таймфрейма значение. И ресурсоёмко это, может даже оказаться неоправданно ресурсоёмко.
Гораздо честнее выставить 0, как в начале, когда ещё ничего не считалось
Тогда как быть, когда на кастомном символе после каждого проброса тика индикаторы полностью пересчитываются из-за этого нулевого значения?
Индикаторы специально пишутся, чтобы не тормозить Терминал, а тут все начинает происходить наоборот.
Уточню, что проброс тиков из прошлого - это не только CustomTicksAdd, но и RatesUpdate. Ведь даже рабочая TicksAdd не формировала бары ранее текущих суток. Приходится их формировать самостоятельно. Ну и получаем нулевой prev_calculated из-за этого.
Уточню, что проброс тиков из прошлого - это не только CustomTicksAdd, но и RatesUpdate. Ведь даже рабочая TicksAdd не формировала бары ранее текущих суток. Приходится их формировать самостоятельно. Ну и получаем нулевой prev_calculated из-за этого.
По-любому при замене, обновлении, удалении баров все индикаторы будут пересчитываться с нуля. Это не обсуждается.
Добавление тиков должно работать по-штатному, то есть тики - свежие, сегодняшние, а не вчерашние-позавчерашние.
Запустил Вашего эксперта из описания бага 11, затем запустил индикатор с принтом на каждом OnCalculate
Вот логи
2019.06.0708:11:34.240 CustomHistoryTick (EURUSD,H1) CustomSymbolCreate(Name,NULL,_Symbol) = true2019.06.0708:11:34.243 CustomHistoryTick (EURUSD,H1) CustomRatesDelete(Name,0,0) = 02019.06.0708:11:34.243 CustomHistoryTick (EURUSD,H1) SymbolSelect(Name,false) = true2019.06.0708:11:34.243 CustomHistoryTick (EURUSD,H1) CustomSymbolDelete(Name) = true2019.06.0708:11:34.243 CustomHistoryTick (EURUSD,H1) CustomSymbolCreate(Name,NULL,_Symbol) = true2019.06.0708:11:34.321 CustomHistoryTick (EURUSD,H1) CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,(TimeCurrent()-3600)*1000) = 11142019.06.0708:11:46.158 Custom Moving Average (EURUSD11608,M1) 13 prev_calculated=0 begin=0 data=1.1266689400636152019.06.0708:11:46.173 Custom Moving Average (EURUSD11608,M1) 14 prev_calculated=13 begin=0 data=0.29892693877551022019.06.0708:11:46.209 Custom Moving Average (EURUSD11608,M1) 14 prev_calculated=14 begin=0 data=0.29892836734693872019.06.0708:11:46.228 Custom Moving Average (EURUSD11608,M1) 14 prev_calculated=14 begin=0 data=0.29892979591836732019.06.0708:11:46.246 Custom Moving Average (EURUSD11608,M1) 14 prev_calculated=14 begin=0 data=0.29893122448979592019.06.0708:11:46.271 Custom Moving Average (EURUSD11608,M1) 14 prev_calculated=14 begin=0 data=0.29893122448979592019.06.0708:11:46.305 Custom Moving Average (EURUSD11608,M1) 14 prev_calculated=14 begin=0 data=0.29892836734693872019.06.0708:11:46.399 Custom Moving Average (EURUSD11608,M1) 14 prev_calculated=14 begin=0 data=0.29892693877551022019.06.0708:11:46.427 Custom Moving Average (EURUSD11608,M1) 14 prev_calculated=14 begin=0 data=0.29892551020408162019.06.0708:11:46.460 Custom Moving Average (EURUSD11608,M1) 14 prev_calculated=14 begin=0 data=0.29892693877551022019.06.0708:11:46.494 Custom Moving Average (EURUSD11608,M1) 14 prev_calculated=14 begin=0 data=0.29892551020408162019.06.0708:11:46.521 Custom Moving Average (EURUSD11608,M1) 14 prev_calculated=14 begin=0 data=0.29892693877551022019.06.0708:11:46.561 Custom Moving Average (EURUSD11608,M1) 14 prev_calculated=14 begin=0 data=0.29892836734693872019.06.0708:11:46.586 Custom Moving Average (EURUSD11608,M1) 14 prev_calculated=14 begin=0 data=0.29892836734693872019.06.0708:11:46.614 Custom Moving Average (EURUSD11608,M1) 14 prev_calculated=14 begin=0 data=0.29892979591836732019.06.0708:11:46.645 Custom Moving Average (EURUSD11608,M1) 14 prev_calculated=14 begin=0 data=0.29892836734693872019.06.0708:11:46.676 Custom Moving Average (EURUSD11608,M1) 14 prev_calculated=14 begin=0 data=0.29892979591836732019.06.0708:11:46.708 Custom Moving Average (EURUSD11608,M1) 14 prev_calculated=14 begin=0 data=0.29892836734693872019.06.0708:11:46.775 Custom Moving Average (EURUSD11608,M1) 14 prev_calculated=14 begin=0 data=0.29892836734693872019.06.0708:11:46.803 Custom Moving Average (EURUSD11608,M1) 14 prev_calculated=14 begin=0 data=0.29892693877551022019.06.0708:11:46.835 Custom Moving Average (EURUSD11608,M1) 14 prev_calculated=14 begin=0 data=0.29892836734693872019.06.0708:11:46.869 Custom Moving Average (EURUSD11608,M1) 14 prev_calculated=14 begin=0 data=0.29892693877551022019.06.0708:11:46.898 Custom Moving Average (EURUSD11608,M1) 14 prev_calculated=14 begin=0 data=0.29892551020408162019.06.0708:11:46.930 Custom Moving Average (EURUSD11608,M1) 14 prev_calculated=14 begin=0 data=0.29892551020408162019.06.0708:11:46.972 Custom Moving Average (EURUSD11608,M1) 14 prev_calculated=14 begin=0 data=0.2989240816326532019.06.0708:11:46.993 Custom Moving Average (EURUSD11608,M1) 14 prev_calculated=14 begin=0 data=0.29892265306122452019.06.0708:11:47.024 Custom Moving Average (EURUSD11608,M1) 14 prev_calculated=14 begin=0 data=0.2989240816326532019.06.0708:11:47.050 Custom Moving Average (EURUSD11608,M1) 14 prev_calculated=14 begin=0 data=0.29892551020408162019.06.0708:11:47.085 Custom Moving Average (EURUSD11608,M1) 15 prev_calculated=14 begin=0 data=0.41718043731778432019.06.0708:11:47.116 Custom Moving Average (EURUSD11608,M1) 15 prev_calculated=15 begin=0 data=0.41717900874635572019.06.0708:11:47.175 Custom Moving Average (EURUSD11608,M1) 15 prev_calculated=15 begin=0 data=0.41717758017492712019.06.0708:11:47.198 Custom Moving Average (EURUSD11608,M1) 15 prev_calculated=15 begin=0 data=0.41717900874635572019.06.0708:11:47.215 Custom Moving Average (EURUSD11608,M1) 15 prev_calculated=15 begin=0 data=0.41717900874635572019.06.0708:11:47.242 Custom Moving Average (EURUSD11608,M1) 15 prev_calculated=15 begin=0 data=0.41717758017492712019.06.0708:11:47.270 Custom Moving Average (EURUSD11608,M1) 15 prev_calculated=15 begin=0 data=0.41717615160349852019.06.0708:11:47.302 Custom Moving Average (EURUSD11608,M1) 15 prev_calculated=15 begin=0 data=0.41717758017492712019.06.0708:11:47.335 Custom Moving Average (EURUSD11608,M1) 15 prev_calculated=15 begin=0 data=0.41717900874635572019.06.0708:11:47.370 Custom Moving Average (EURUSD11608,M1) 15 prev_calculated=15 begin=0 data=0.41717615160349852019.06.0708:11:47.398 Custom Moving Average (EURUSD11608,M1) 15 prev_calculated=15 begin=0 data=0.41718043731778432019.06.0708:11:47.434 Custom Moving Average (EURUSD11608,M1) 15 prev_calculated=15 begin=0 data=0.41717900874635572019.06.0708:11:47.466 Custom Moving Average (EURUSD11608,M1) 15 prev_calculated=15 begin=0 data=0.41717758017492712019.06.0708:11:47.494 Custom Moving Average (EURUSD11608,M1) 15 prev_calculated=15 begin=0 data=0.41717758017492712019.06.0708:11:47.528 Custom Moving Average (EURUSD11608,M1) 15 prev_calculated=15 begin=0 data=0.41717758017492712019.06.0708:11:47.586 Custom Moving Average (EURUSD11608,M1) 15 prev_calculated=15 begin=0 data=0.41717758017492712019.06.0708:11:47.617 Custom Moving Average (EURUSD11608,M1) 15 prev_calculated=15 begin=0 data=0.41717758017492712019.06.0708:11:47.646 Custom Moving Average (EURUSD11608,M1) 15 prev_calculated=15 begin=0 data=0.417174723032072019.06.0708:11:47.679 Custom Moving Average (EURUSD11608,M1) 15 prev_calculated=15 begin=0 data=0.41717758017492712019.06.0708:11:47.716 Custom Moving Average (EURUSD11608,M1) 16 prev_calculated=15 begin=0 data=0.51853792586422332019.06.0708:11:47.740 Custom Moving Average (EURUSD11608,M1) 16 prev_calculated=16 begin=0 data=0.5185364972927947
То есть, при нормальной ситуации (тики сегодняшние, как и должно быть всегда) всё правильно работает. И тики добавляются, и индикатор считается экономно
По-любому при замене, обновлении, удалении баров все индикаторы будут пересчитываться с нуля. Это не обсуждается.
Добавление тиков должно работать по-штатному, то есть тики - свежие, сегодняшние, а не вчерашние-позавчерашние.
Запустил Вашего эксперта из описания бага 11, затем запустил индикатор с принтом на каждом OnCalculate
Вот логи
То есть, при нормальной ситуации (тики сегодняшние, как и должно быть всегда) всё правильно работает. И тики добавляются, и индикатор считается экономно
Разве это правильное утверждение?
Более того, если сейчас 00:00:01, то не получится через CustomTicksAdd досформировать бар, который был всего две секунды назад.
Для тестера позавчерашний тик на позавчерашний же момент времент является свежим, сегодняшним.
Я понял, что Вы хотите сказать. Ваши упражнения с кастомными тиками полугодовой давности имеют ярко выраженный тестерный характер. Ваша ситуация не является нормальной (в смысле обычной практикой)
Баг 16.
Раньше CustomTicksAdd формировала бары из тиков, что относились к текущим суткам. Сейчас и этого нет.
Похоже, этот баг связан с багом №14.
Удаление символа из обзора рынка стало возможным по следующей причине. Вызов подряд CustomSymbolCreate - CustomSymbolDelete - CustomSymbolCreate с одним и тем же именем кастомного символа приводило к тому, что сбивался идентификатор символа. Поэтому при проверке, можно ли удалить символ из обзора рынка график этого символа не находился (идентификатор испорчен), и символ спокойно удалялся. Это исправлено.
При применении тика на график возможно то же самое - поиск графика по идентификатору символа не давал результата
Баг 15.
На символе этого советника (с удаленной ChartSetSymbolPeriod-строкой) запускаем такой индикатор
Выдает только нули.
Совершенно справедливо.
При вызове CustomRatesUpdate все счётчики изменений сбрасываются и индикаторы пересчитываются с нуля
Совершенно справедливо.
При вызове CustomRatesUpdate все счётчики изменений сбрасываются и индикаторы пересчитываются с нуля
В чем логика такого решения? Ведь есть же неизменные бары слева.
В чем логика такого решения? Ведь есть же неизменные бары слева.
prev_calculated содержит значение, которое было возвращено на предыдущем вызове OnCalculate
Индикаторописатель может возвращать любое значение, исходя из собственной логики. Поэтому нет никакого смысла пробегать по всем индикаторам и менять значение prev_calculated на собственное рассчитанное с учётом таймфрейма значение. И ресурсоёмко это, может даже оказаться неоправданно ресурсоёмко.
Гораздо честнее выставить 0, как в начале, когда ещё ничего не считалось
prev_calculated содержит значение, которое было возвращено на предыдущем вызове OnCalculate
Индикаторописатель может возвращать любое значение, исходя из собственной логики. Поэтому нет никакого смысла пробегать по всем индикаторам и менять значение prev_calculated на собственное рассчитанное с учётом таймфрейма значение. И ресурсоёмко это, может даже оказаться неоправданно ресурсоёмко.
Гораздо честнее выставить 0, как в начале, когда ещё ничего не считалось
Тогда как быть, когда на кастомном символе после каждого проброса тика индикаторы полностью пересчитываются из-за этого нулевого значения?
Индикаторы специально пишутся, чтобы не тормозить Терминал, а тут все начинает происходить наоборот.
Тогда как быть, когда на кастомном символе после каждого проброса тика индикаторы полностью пересчитываются из-за этого нулевого значения?
Не должно быть такого. Проверим
Не должно быть такого. Проверим
Уточню, что проброс тиков из прошлого - это не только CustomTicksAdd, но и RatesUpdate. Ведь даже рабочая TicksAdd не формировала бары ранее текущих суток. Приходится их формировать самостоятельно. Ну и получаем нулевой prev_calculated из-за этого.
Уточню, что проброс тиков из прошлого - это не только CustomTicksAdd, но и RatesUpdate. Ведь даже рабочая TicksAdd не формировала бары ранее текущих суток. Приходится их формировать самостоятельно. Ну и получаем нулевой prev_calculated из-за этого.
По-любому при замене, обновлении, удалении баров все индикаторы будут пересчитываться с нуля. Это не обсуждается.
Добавление тиков должно работать по-штатному, то есть тики - свежие, сегодняшние, а не вчерашние-позавчерашние.
Запустил Вашего эксперта из описания бага 11, затем запустил индикатор с принтом на каждом OnCalculate
Вот логи
То есть, при нормальной ситуации (тики сегодняшние, как и должно быть всегда) всё правильно работает. И тики добавляются, и индикатор считается экономно
По-любому при замене, обновлении, удалении баров все индикаторы будут пересчитываться с нуля. Это не обсуждается.
Добавление тиков должно работать по-штатному, то есть тики - свежие, сегодняшние, а не вчерашние-позавчерашние.
Запустил Вашего эксперта из описания бага 11, затем запустил индикатор с принтом на каждом OnCalculate
Вот логи
То есть, при нормальной ситуации (тики сегодняшние, как и должно быть всегда) всё правильно работает. И тики добавляются, и индикатор считается экономно
Разве это правильное утверждение?
Более того, если сейчас 00:00:01, то не получится через CustomTicksAdd досформировать бар, который был всего две секунды назад.
Разве это правильное утверждение?
Для тестера позавчерашний тик на позавчерашний же момент времент является свежим, сегодняшним.
Я понял, что Вы хотите сказать. Ваши упражнения с кастомными тиками полугодовой давности имеют ярко выраженный тестерный характер. Ваша ситуация не является нормальной (в смысле обычной практикой)