Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Попробуйте сделать так:
Посмотерел на минутном ТФ у меня все работает правильно насколько понимаю как он должен работать.Правда я смотрю только индикатор Proboy_Order_F5_.mq4
рисунками я, вроде бы, показала, что проблема имеет место быть. Индикатор необходимо использовать совместно с тремя другими (или их откомпилировать в терминале), т.к. из данного индикатора идут запросы данных этих индикаторов. Кстати, проблема может быть не только в коде данного индикатора, а в тех, к которым идёт ссылка, но разобраться не могу. Дополнительные индикаторы корректно работают на нулевом баре.
В принципе вот стандартная универсальная конструкция прям из справки для пересчета индикатора на нулевом баре:
Т.е. там где у Вас "-1", должен быть "+1". Если надо, пересчитывать занова для большего колличества баров, например, для перерисовывающихся индикаторов пусть на depth баров :
Почему в Bars-сounted_bars-1. Почему минус 1?
Спасибо, я подумаю и попробую использовать Ваш вариант.
"У вас же же не пойми что, зачастую бессмысленные конструкции типа:"
В данном случаи пробовала реализовать предложения решения вопроса, извините, не исправила, как нужно.
Вопрос задаю как раз с целью научиться, исправить ошибки и "бессмысленные конструкции "
Возможно я ошибаюсь, поправьте, пожалуйста, если что-то не так, но данную конструкцию я понимаю следующим образом:
1. int limit;
int counted_bars=IndicatorCounted();
возвращается количество непросчитанных баров
//---- последний посчитанный бар будет пересчитан
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
т.е можно записать так: counted_bars=counted_bars-1 или сразу limit=Bars-counted_bars-1;
например: 100 - всего, 40 - непросчитанных, limit=59, т.е с индекса 59 начинаем просматривать бары.
//---- основной цикл
for(int i=0; i<limit; i++)
двигаемся с 0 бара до 59 (не включительно) справа налево.
2. if(counted_bars>0) limit=Bars-counted_bars-1;
..................................
for(int i=limit; i=>; i--)
в данной конструкции будем просматривать те же бары, но слева налево В чём разница и моя ошибка, если и там и там должен пересчитывается нулевой бар?
К тому же при применении 1. в индикаторе ME_Proboy_F5 зависает терминал.
1. int limit;
int counted_bars=IndicatorCounted();
возвращается количество непросчитанных баров
Функция IndicatorCounted() возвращает реально посчитанное количество баров минус один. Это точно как отче наш. Посмотрите справку там есть.
_bars=counted_bars-1 или сразу limit=Bars-counted_bars-1;
например: 100 - всего, 40 - непросчитанных, limit=59, т.е с индекса 59 начинаем просматривать бары.
Ну такого я от Вас не ожидал)
сразу limit = Bars - (counted_bars -1) = Bars - counted_bars + 1;
Правила раскрытия скобок при арифметических действиях, в первом классе...
в данной конструкции будем просматривать те же бары, но слева налево В чём разница и моя ошибка, если и там и там должен пересчитывается нулевой бар?
Справа налево, слева направо это в общем случае не принципиально
К тому же при применении 1. в индикаторе ME_Proboy_F5 зависает терминал.
Этот индикатор я смотрел бегло 10 секунд, но индикатор Proboy_Order_F5.mq4 его использующий у меня так и висит, и исправно все показывает. Хотя сейчас глянул, я у себя в порядке эксперимента оказывается оставил +200, вместо +1)
Возможно какой-то из индикаторов которые использует Proboy_Order_F5.mq4 перерисовывается по мере поступления новых данных, отсюда и Proboy_Order_F5.mq4 пересчитывающий только последний бар начинает косячить и что-то затирать. Пересмотрите свои индикаторы (вы же их автор? вам и карты в руки, я толком и не могу понять что же они должны делать) с учетом и пониманием выше сказаного, может появятся более конкретные вопросы.
И не говорите, сама от себя не ожидаю иногда.
ME_Proboy_F5 - разобралась в алгоритме, но автор не я.
Спасибо, будем посмотреть.