Добрый день, подскажите пожалуйста как сделать обновление хай, лоу или атр
Имеется код, в нем при нажатии на кнопку зоны строются, но вот беда они строются по текущему ДАННЫМ В ДАННЫЙ МОМЕНТ ВРЕМЕНИ (ХАЙ ЛОУ и АТР)
Если же Хай, Лоу или Атр сменились зоны значения не поменяют
Пожалуйста помогите, что можно сделать
Спасибо всем кто дочитал
В коде имеется проверка на новый бар (isNewBar). Она не позволяет менять данные чаще, чем 1 раз на один бар. Уберите ее и данные будут обновляться с каждым тиком.
P. S. В функции DrawTXT лучше использовать изменение свойств объекта, если он уже существует, а не удаление объекта и его новое создание. Иначе получите мерцание графического объекта. Особенно хорошо это видно в визуализаторе.
- www.mql5.com
Добрый день, подскажите пожалуйста как сделать обновление хай, лоу или атр
Имеется код, в нем при нажатии на кнопку зоны строются, но вот беда они строются по текущему ДАННЫМ В ДАННЫЙ МОМЕНТ ВРЕМЕНИ (ХАЙ ЛОУ и АТР)
Если же Хай, Лоу или Атр сменились зоны значения не поменяют
Пожалуйста помогите, что можно сделать
Спасибо всем кто дочитал
из OnCalculate возвращайте или 0 или rates_total-1 (что нить разумное меньшее чем rates_total), тогда OnCalculate будет вызываться каждый тик, а не только при открытии баров
Я уже говорил ему об этом в другой теме. Он ничего не слышит и понимать не хочет. Не дождавшись ответа типа «делай с нами, делай как мы…» решил создать отдельную тему. А тут опять такие-же ответы…………
из OnCalculate возвращайте или 0 или rates_total-1 (что нить разумное меньшее чем rates_total), тогда OnCalculate будет вызываться каждый тик, а не только при открытии баров
не понятно что это даст?
то, что Вы вернули после расчетов в rates_total, это значение Вы получаете в prev_calculated на следующем тике
не понятно что это даст?
то, что Вы вернули после расчетов в rates_total, это значение Вы получаете в prev_calculated на следующем тике
если возвращать ровно rates_total - то OnCalculate будет вызван только на баре (на открытии), а не на тике.
логика у терминала примерно такая - каждый тик, если число баров не равно тому что вернул OnCalculate, то надо его вызвать. То есть OnCalculate должен(был, по замыслу) возвращать сколько баров рассчитаны навсегда.
если возвращать ровно rates_total - то OnCalculate будет вызван только на баре (на открытии), а не на тике.
Вы ошибаетесь, каждый тик запускается OnCalculate(), не зависит от того, что Вы считали, что заполняли в индикаторные буфера и что возвращали на предыдущем тике при выходе через return
логика у терминала примерно такая - каждый тик, если число баров не равно тому что вернул OnCalculate, то надо его вызвать. То есть OnCalculate должен(был, по замыслу) возвращать сколько баров рассчитаны навсегда.
там нет логики, все проще:
- пришел тик вызов OnCalculate()
- переключили ТФ - запуск OnCalculate()
- вызвали из ЕА индикатор - запуск OnCalculate()
терминал ничего не контролирует, только инициирует запуск OnCalculate()
программист сам контролирует и расчитывает необходимое количество баров, примерно так нужно делать чтобы каждый тик пересчитывать бар №1 и бар №0:
int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { //--- int i,limit; //--- Первый вызов индикатора или смена таймфрейма или подгрузка данных из истории if(prev_calculated==0)limit=rates_total-1; else limit=rates_total-prev_calculated+1; //--- Основной цикл расчета //Print("limit = ",limit); for(i=limit; i>=0; i--) { } //--- return(rates_total); }
в другом случае зоны остаются на месте как только кончается бар. а чтобы они построились на новом баре необходимо нажать кнопку 2 раза. Пожалуйста поясните вот этот момент.
Спасибо
Ребят спасибо всем кто откликнулся, но вот вопрос в чем функция isNewBar как раз нужна для того чтобы зоны перестраивались на новый бар, а старые удалялись
в другом случае зоны остаются на месте как только кончается бар. а чтобы они построились на новом баре необходимо нажать кнопку 2 раза. Пожалуйста поясните вот этот момент.
Спасибо
Как вот вам ответить чтобы не обидеть? Вот ведь объяснял всё
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Помогите пожалуйста с 1 проблемой
Alexey Viktorov, 2020.08.24 08:01
Два вопроса:
Вот это как читается?
if(!ObjectGetInteger(0,"KNOPKA",OBJPROP_STATE,false))
По моему «если не false» равно «если true» зачем было писать именно так?
Зачем объекты удалять и создавать новые? Разве не проще поменять им координаты?
И после проверки состояния кнопки, «если нажата» то в конце этого блока её обязательно вернуть в исходное положение
ObjectSetInteger(0, "KNOPKA", OBJPROP_STATE, false)

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Добрый день, подскажите пожалуйста как сделать обновление хай, лоу или атр
Имеется код, в нем при нажатии на кнопку зоны строются, но вот беда они строются по текущему ДАННЫМ В ДАННЫЙ МОМЕНТ ВРЕМЕНИ (ХАЙ ЛОУ и АТР)
Если же Хай, Лоу или Атр сменились зоны значения не поменяют
Пожалуйста помогите, что можно сделать
Спасибо всем кто дочитал