Всем здравия!
Удивительная проблема с графическим объектом!
Суть проблемы такова: при открытии текущей свечи на предыдущей появляется стрелка. Она не буферная. Если открыть "Список объектов", то в списке она появляется как объект только при выборе "Отобразить все". Объект - Arrow, есть имя, время, цена и код. Если я на 0-й свече кодом запускаю поиск объекта с типом Arrow и временем Time[1], то мне не находит ни одного объекта. Если же я меняю время на Time[2] и начинаю поиск стрелки через свечу после появления, то все нормально, объект находится.
В чем прикол? Я первый раз с таким встречаюсь.
Индикатор привязан к железу, выложить тут не могу
как гипотеза - в индикаторе не вызвали ChartRedraw после создания стрелки. Или принципиально отрисовали с небольшой задержкой (не зря-же стрелка не буферная)
попробуйте вызвать самостоятельно ChartRedraw на открытии бара и после этого на следующем входе таймера уже искать свою стрелку.
bool needFindArrow=false;
void OnInit() {
EventSetMillisecondTimer(50); // по вкусу, часто
}
void OnTick() {
if (IsNewBar()) {
ChartRedraw() ; // принудительно перерисовать чарт
needFindArrow=true;
return;
}
}
void OnTimer() {
if (needFindArrow) {
/// ТУТ ИЩЕМ СТРЕЛКУ на Time[1]
needFindArrow=false;
}
}
как гипотеза - в индикаторе не вызвали ChartRedraw после создания стрелки. Или принципиально отрисовали с небольшой задержкой (не зря-же стрелка не буферная)
попробуйте вызвать самостоятельно ChartRedraw на открытии бара и после этого на следующем входе таймера уже искать свою стрелку.
bool needFindArrow=false;
void OnInit() {
EventSetMillisecondTimer(50); // по вкусу, часто
}
void OnTick() {
if (IsNewBar()) {
ChartRedraw() ; // принудительно перерисовать чарт
needFindArrow=true;
return;
}
}
void OnTimer() {
if (needFindArrow) {
/// ТУТ ИЩЕМ СТРЕЛКУ на Time[1]
needFindArrow=false;
}
}
Не знаю, на тестере это поможет или надо на реале пробовать?
Забыл написать, что точно при открытии новой свечи алерт срабатывает
Не знаю, на тестере это поможет или надо на реале пробовать?
Забыл написать, что точно при открытии новой свечи алерт срабатывает
кстати, забыл добавить - изначально (до фокусов с таймерами и флагами) стрелку стоит искать после первого обращения к любому буферу индикатора.
то есть сначала обратится к произвольному буферу индикатора, прочесть значение через CopyBuffer() а потом искать стрелку. Чтобы точно гарантировать что уже вызывался OnCalculate индикатора
кстати, забыл добавить - изначально (до фокусов с таймерами и флагами) стрелку стоит искать после первого обращения к любому буферу индикатора.
то есть сначала обратится к произвольному буферу индикатора, прочесть значение через CopyBuffer() а потом искать стрелку. Чтобы точно гарантировать что уже вызывался OnCalculate индикатора
ты гений!!! После обращения к буферу заработало!!!!!!!! Спасибо!!!!!!!!

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Всем здравия!
Удивительная проблема с графическим объектом!
Суть проблемы такова: при открытии текущей свечи на предыдущей появляется стрелка. Она не буферная. Если открыть "Список объектов", то в списке она появляется как объект только при выборе "Отобразить все". Объект - Arrow, есть имя, время, цена и код. Если я на 0-й свече кодом запускаю поиск объекта с типом Arrow и временем Time[1], то мне не находит ни одного объекта. Если же я меняю время на Time[2] и начинаю поиск стрелки через свечу после появления, то все нормально, объект находится.
В чем прикол? Я первый раз с таким встречаюсь.
Индикатор привязан к железу, выложить тут не могу