![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Добрый день. А Вы не в курсе, можно ли делать цветные свечи без заливки? То-есть, выделять разным цветом только границы свечей, а тело свечи, чтобы оставалось таким, как в настройках графика?
Цвет баров отвечает за обводку, цвет свечей отвечает за тела свечей, всё стандартными настройками чарта.
А вот если рисовать индикаторами то да, получается или кривовато или затратно (это если нужно отобразить свои данные).
1. Да.
2. Да.
3. Да, это заморочка. Но интересная и разобравшись один раз, может пригодиться потом для других задач. Обводить с помощью методов класса для создания пользовательской графики. Посмотрите группу Рисование примитивов. Там есть: LineVertical, LineHorizontal и т.д.
P.S. Также нужно будет определять масштаб графика, чтобы определить длину линий по ширине свечи:
При использовании канвы не нужны стандартные графические объекты: трендлайны и пр.
На канве по сути все рисуется попиксельно. Есть конечно для упрощения фигуры и линии, но внутри смысл тот же.
Создаешь "холст", с помощью придания цвета/прозрачности нужным пикселям создается картинка.
В нужный момент обновляешь/перерисовываешь весь холст или нужную часть.
Вот так это работает (подсветка линий с помощью обводки на канве):
//---
Обвести свечи немного сложнее. При скроллинге графика можно определять состояние левой кнопки мыши и обновлять только тогда, когда она отжата (видно на видео).
Цвет баров отвечает за обводку, цвет свечей отвечает за тела свечей, всё стандартными настройками чарта.
А вот если рисовать индикаторами то да, получается или кривовато или затратно (это если нужно отобразить свои данные).
Canvas, как оказалось, при сдвиге графика остаётся на месте:
При перемещении мышки над канвасом в строке состояния отображаются все значения свечи: OHLC. Значит задача сводится к синхронизации ширины свечи на графике и ширины свечи на канвасе
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Цена в пиксель
tol64, 2014.10.19 12:28
...
P.S. Также нужно будет определять масштаб графика, чтобы определить длину линий по ширине свечи:
и синхронизации отображения свечи на графике и на канвасе - чтобы не было смещения.
Красиво.
А как при этом выглядит график загрузки процессора? Это ресурсоемко?
Вот такой результат получился:
Перерисовка графика производится в таймере через указанное во внешних параметрах количество миллисекунд. Начал от 240 мс и далее уменьшаю интервал каждый раз в 2 раза до 15 мс.Теперь видео (кстати, при включении записи, в диспетчере задач видно, насколько возросла нагрузка на процессор):
...
и синхронизации отображения свечи на графике и на канвасе - чтобы не было смещения.
Или более экономный вариант, как показывал здесь:
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Цена в пиксель
tol64, 2014.10.19 12:50
Вот так это работает (подсветка линий с помощью обводки на канве):
//---
Обвести свечи немного сложнее. При скроллинге графика можно определять состояние левой кнопки мыши и обновлять только тогда, когда она отжата (видно на видео).
Да. Для экономной перерисовки (обновления) графики, имеет смысл запускать таймер на обновление только при движении мыши и при нажатой левой клавише.