Попросили перевести индикатор с МТ4 на МТ5.
В индикаторе важный элемент - стрелка. Создаю стрелку. А она выводится с нулевым временем.
Не понимаю, что делаю неправильно. В МТ4 тоже самое работает.
Результат работы:
Стрелка должна выводиться в районе вертикальной линии.
Может, кто подскажет, что я делаю не так. Заранее благодарю.
Код:
если объект namePoint уже есть (например с прежнего неверного запуска) то ничего и не поменяется, как был 0 так и останется
Попросили перевести индикатор с МТ4 на МТ5.
В индикаторе важный элемент - стрелка. Создаю стрелку. А она выводится с нулевым временем.
Не понимаю, что делаю неправильно. В МТ4 тоже самое работает.
Результат работы:
Стрелка должна выводиться в районе вертикальной линии.
Может, кто подскажет, что я делаю не так. Заранее благодарю.
Код:
Код рабочий, стрелка отображается. Скорее всего, проблема в неправильной проверке. Вместо
if(ObjectFind(0,namePoint)!=0)
более надежный вариант
if(ObjectFind(0,namePoint)<0)
Ведь объект может быть и в первом, и во втором окне (если вдруг таковые имеются).
поскольку у Вас индикатор, попробуйте прорисовывать стрелки буфером, например так:
//---
SetIndexBuffer(2, SELL);
SetIndexStyle(2, DRAW_ARROW,0,1,clrLightCoral);
SetIndexArrow(2,226);
SetIndexLabel(2,"SELL");
//---
SetIndexBuffer(3, BUY);
SetIndexStyle(3, DRAW_ARROW,0,1,clrDodgerBlue);
SetIndexArrow(3,225);
SetIndexLabel(3,"BUY");
а в Вашем случае, я бы написал эту строчку так:
ObjectSetInteger(0,namePoint,OBJPROP_COLOR,clrBlue);
плюсом, Вы перерисовываете существующую стрелку, а если ее еще нет вообще, то она и не появится
поэтому можно попробовать так:
if(ObjectFind(0,namePoint)>=0)
Попросили перевести индикатор с МТ4 на МТ5.
В индикаторе важный элемент - стрелка. Создаю стрелку. А она выводится с нулевым временем.
Не понимаю, что делаю неправильно. В МТ4 тоже самое работает.
Результат работы:
Стрелка должна выводиться в районе вертикальной линии.
Может, кто подскажет, что я делаю не так. Заранее благодарю.
Код:
поскольку у Вас индикатор, попробуйте прорисовывать стрелки буфером, например так:
а в Вашем я бы написал эту строчку так:
плюсом, Вы перерисовываете существующую стрелку, а если ее еще нет вообще, то она и не появится
поэтому лучше так:
Индикатор без буферов. Картинки надо выводить. Скрипт не подходит. Стрелку нельзя в буфер загонять. С ее помощью картинки перемещаются по графику.
Стрелка не перерисовывается. Проверка проводится для... если стрелка была нечаянно удалено, то она восстанавливается. Это
if(ObjectFind(0,namePoint)>=0)
не правильно. Если объект есть, зачем его создавать.
Вы не проверяете что возвращают iTime() и iLow(). А они могут вернуть не то, что ожидаете...
Поэтому я и не люблю МТ5. Переделывал под него свой индикатор. Сталкивался с подобными подводными камнями... несколько лет назад прекратил общение с МТ5.
---------------
Если распечатывается в строке на картинке под графиком цена и время равные нулю, то в свойствах объекта видно - время==0, а вот цена не нулевая.
Индикатор без буферов. Картинки надо выводить. Скрипт не подходит. Стрелку нельзя в буфер загонять. С ее помощью картинки перемещаются по графику.
Стрелка не перерисовывается. Проверка проводится для... если стрелка была нечаянно удалено, то она восстанавливается. Это
не правильно. Если объект есть, зачем его создавать.
вот еще момент, в целом стрелка:
ObjectCreate(name,OBJ_ARROW,0,Time[i],Open[i],0,0,0,0);
ObjectSet(name,OBJPROP_ARROWCODE,225);
ObjectSet(name,OBJPROP_COLOR,DeepSkyBlue);
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Попросили перевести индикатор с МТ4 на МТ5.
В индикаторе важный элемент - стрелка. Создаю стрелку. А она выводится с нулевым временем.
Не понимаю, что делаю неправильно. В МТ4 тоже самое работает.
Результат работы:
Стрелка должна выводиться в районе вертикальной линии.
Может, кто подскажет, что я делаю не так. Заранее благодарю.
Код: