Доброго времени суток. Начал изучать графику и в предоставленном ниже коде пытаюсь чтобы рисовались прерывистые линии от координаты открытия ордера до координаты текущей цены, но линия не рисуется... Подскажите пожалуйста в чем ошибка
- Графика. Canvas. Вопрос по линиям.
- Не все позиции закрываются.
- Вторая координата трендовой линии. Подскажите?
Anton Novokhatskii:
Доброго времени суток. Начал изучать графику и в предоставленном ниже коде пытаюсь чтобы рисовались прерывистые линии от координаты открытия ордера до координаты текущей цены, но линия не рисуется... Подскажите пожалуйста в чем ошибка
Доброго времени суток. Начал изучать графику и в предоставленном ниже коде пытаюсь чтобы рисовались прерывистые линии от координаты открытия ордера до координаты текущей цены, но линия не рисуется... Подскажите пожалуйста в чем ошибка
Нужно смотреть, что там с объектом canvas: как он создается, как обновляется. В приведенном отрывке кода видно только то, что он уничтожается.
Для начала попробуйте рисовать линии при помощи обычных графических объектов (названия функций начинаются на "Object"). Когда отладите, то можно будет переделать на Canvas.
Ihor Herasko #:
Не согласен, Игорь. Пунктирные линии на объектах это жесть в плане производительности и алгоритма очищения, ибо будут множиться бесконтрольно. Сразу Canvas.
Нужно смотреть, что там с объектом canvas: как он создается, как обновляется. В приведенном отрывке кода видно только то, что он уничтожается.
Для начала попробуйте рисовать линии при помощи объектов. Когда отладите, то можно будет переделать на Canvas.
функция Lines() прогоняется каждый тик. Т.е. с наступлением нового тика, все линии удаляются, т.е.: canvas.Destroy(), а затем линии должны рисоваться заново, по координатам новой цены. Но дело в том, что даже если убрать canvas.Destroy(), линии все равно не рисуются. С Object намного проще сделать это, но функционал не такой гибкий, поэтому хочу использовать Canvas
Anton Novokhatskii #:
функция Lines() прогоняется каждый тик. Т.е. с наступлением нового тика, все линии удаляются, т.е.: canvas.Destroy(), а затем линии должны рисоваться заново, по координатам новой цены. Но дело в том, что даже если убрать canvas.Destroy(), линии все равно не рисуются. С Object намного проще сделать это, но функционал не такой гибкий, поэтому хочу использовать Canvas
Destroy убивает Canvas. Необходимо использовать Erase(). функция Lines() прогоняется каждый тик. Т.е. с наступлением нового тика, все линии удаляются, т.е.: canvas.Destroy(), а затем линии должны рисоваться заново, по координатам новой цены. Но дело в том, что даже если убрать canvas.Destroy(), линии все равно не рисуются. С Object намного проще сделать это, но функционал не такой гибкий, поэтому хочу использовать Canvas
Рекомендую обратить внимание на мою библиотеку iCanvas. Особенно если Вы используете координаты цена-время(бар)
![Easy Canvas Easy Canvas](https://c.mql5.com/36/61/easy-canvas.jpg)
Easy Canvas
- www.mql5.com
Данная библиотека и класс iCanvas упростит написание программ с применением Canvas.
Именно. На данный момент я пытаюсь понять почему
canvas.Line(m_position.Time(),m_position.PriceOpen(),iTime(_Symbol,PERIOD_CURRENT,0),Ask(_Symbol),clrBlue);
не работает. Даже если убрать дестрой и настройку стиля. Впринципе ничего не рисуется
Спасибо большое, почитаю как работает, и попробую применить)
использовал оба варианта, ничего не рисуется)) еще почитаю что можно сделать
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь