Ошибки, баги, вопросы - страница 3126
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Формируешь структуру данных или массив структур хоть в советнике, хоть в индикаторе, и отправляешь ее в ресурс.
Канвас сам по себе работает с графическим ресурсом (OBJ_BITMAP_LABEL/ OBJ_BITMAP). Так что остается сообщить имя ресурса в другое приложение и оно легко получит доступ к пикселям. Также нужно будет передать формат пикселя. И можно хоть читать пиксели хоть менять их с помощью другого CCanvas. В нем есть метод CCanvas::Attach для присоединение его к существующему ресурсу.
А какие проблемы, Андрей?
Формируешь структуру данных или массив структур
Ни каких проблем! Просто лишние телодвижения, о них и говорю.
Любой буферный индикатор может быть прочитан любым другим индикатором или советником, а для канваса нужна кастумная прослойка.
Например, у меня есть советник, который получает список запущенных индикаторов, а потом создает их на указанном списке инструментов/ТФ и потом собирает с них сигналы (и шлет в телеграм). Так вот любой буферный индикатор можно просто запустить на чарте, и он будет подхвачен автоматом. А канвас-индикатор придется подключать вручную, а потом и всю остальную работу вручную прописывать.
Нужно унифицировать работу с канвас-индикаторами. И, боюсь, что в результате такой унификации получатся ... буферные индикаторы ))
А какие проблемы, Андрей?
короче не нашел и даже не искал
Ни каких проблем! Просто лишние телодвижения, о них и говорю.
Любой буферный индикатор может быть прочитан любым другим индикатором или советником, а для канваса нужна кастумная прослойка.
Например, у меня есть советник, который получает список запущенных индикаторов, а потом создает их на указанном списке инструментов/ТФ и потом собирает с них сигналы (и шлет в телеграм). Так вот любой буферный индикатор можно просто запустить на чарте, и он будет подхвачен автоматом. А канвас-индикатор придется подключать вручную, а потом и всю остальную работу вручную прописывать.
Нужно унифицировать работу с канвас-индикаторами. И, боюсь, что в результате такой унификации получатся ... буферные индикаторы ))
Канвас сам по себе работает с графическим ресурсом (OBJ_BITMAP_LABEL/ OBJ_BITMAP). Так что остается сообщить имя ресурса в другое приложение и оно легко получит доступ к пикселям. Также нужно будет передать формат пикселя. И можно хоть читать пиксели хоть менять их с помощью другого CCanvas. В нем есть метод CCanvas::Attach для присоединение его к существующему ресурсу.
короче не нашел и даже не искал
Интересно, в каких случаях если индикатор запущен а его окна не существует? А когда окно неактивно (пользователь переключился на другой чарт или свернул его), то что ресурс выгружается из памяти, попросту удаляется?
Здесь пожалуй соглашусь. Мне приходилось создавать мультизадачного робота. Первый экземпляр приложения создает задачи и создает чарты для них, затем применяет специальный шаблон с тем же роботом. Далее первый робот создает задачи, а роботы созданные автоматом их выполняют. Передача данных осуществляется через ресурсы. Туда передаются строки числа и структуры. Здесь на сайте есть пример передачи данных по http (если мне не изменяет память). Но там сначала идут данные о структурах, их размерах и типах, а потом сами данные. В своём эксперте я решил сделать проще, передал строки и числа через массив uchar-ов в виде строк, что в разы упростило чтение/запись. А вот в буферы индикаторов как-то не доводилось записывать байты и читать их оттуда. Но уже вижу один недостаток данного способа, это ограниченность байтов количеством баров индикатора. Хотя, в каждой ячейке массива по 8 байт. Может быть и не такой уж большой недостаток. Кто знает...
Интересно, в каких случаях если индикатор запущен а его окна не существует?
Имел ввиду использование iCustom
А когда окно неактивно (пользователь переключился на другой чарт или свернул его), то что ресурс выгружается из памяти, попросту удаляется?
это было лишь мое предположение, так как особого смысла формирования изображений при свернутом окне нет. Как это реализовано в MT - не проверял, но сталкивался с чем-то подобным. Забыл нюансы.
Во всяком случае вряд ли ресурс удаляется, но и не обновляется со времением. Т.е. не работает CCanvas::Update
Имел ввиду использование iCustom
Получается, через ресурс и буферы можно передавать значения, а через ресурс Канваса нет. Интересная задача получается, вызов индикатора с выводом на Канвас с помощью iCustom. Такого я не пробовал. Мне кажется в данном случае возможны шибки. А может быть, такой индикатор, загруженный через iCustom вообще не будет работать?...
Думаю, ResourceCreate работает, но результат не выводится с помощью ChartRedraw. Обращения к функции идут, но система понимает, что чарт обновлять не надо пока он неактивен. Но если бы не работал ResourceCreate, то представьте, что индикатор обновил данные на произвольном тике в момент когда чарт неактивен, но ресурс Канваса не обновился. А потом пользователь решил активировать данный неактивный чарт и посмотреть на индикатор (на Канву). И получается такая ситуация, что тик был, а Канва осталась прежней, как была до момента смены чарта пользователем. А если в период неактивности било множество тиков?... То индикатор их бы обработал конечно, но не один результат не отобразился бы на Канве.
Думаю, ResourceCreate работает, но результат не выводится с помощью ChartRedraw.
Да, наверное, Вы правы. Скорей всего так и будет.
И для экономии ресурсов правильно бы контролировать активность окна и не формировать битмап, если окно не активно.
Стоит проверить, а не строить предположений.