Обсуждение статьи "Визуализируем оптимизацию торговой стратегии в MetaTrader 5" - страница 3 1234567 Новый комментарий Denis Kirichenko 2018.02.26 12:04 #21 Rashid Umarov: @Dennis Kirichenko Вы распаковали самостоятельно картинки из архива EasyAndFastGUI.zip ? Пришлось все картинки приложить ZIP-файлом, другого варианта на текущий момент просто нет.Да, я сам распаковал и скопировал. Нужно было сделать по-другому? У меня вот так сейчас: Anatoli Kazharski 2018.02.26 13:35 #22 Dennis Kirichenko: Да, я сам распаковал и скопировал. Нужно было сделать по-другому? У меня вот так сейчас:Всё правильно. Покажите список графических объектов, созданных экспертом перед вылетом с графика в начале оптимизации (Ctrl + B). Denis Kirichenko 2018.02.26 17:01 #23 Anatoli Kazharski: Всё правильно. Покажите список графических объектов, созданных экспертом перед вылетом с графика в начале оптимизации (Ctrl + B).На всякий случай уточню, что объекты скрыты. Чтобы их вывести в список, жму на кнопку "Все". Anatoli Kazharski 2018.02.26 17:12 #24 Dennis Kirichenko: ...То есть, по каким-то причинам у Вас не создаётся объект для рисования кнопки: //--- Проверьте наличие отмеченных ниже картинок: //--- И вот этот вопрос остался без ответа: Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий Обсуждение статьи "Визуализируем оптимизацию торговой стратегии в MetaTrader 5" Anatoli Kazharski, 2018.02.26 11:10 Теперь уже понятнее. Но вот я не могу ответить на вопрос, почему так получается. Какая-то проблема вот в этом методе класса CCanvas из стандартной библиотеки: //+------------------------------------------------------------------+ //| Attach new object with bitmap resource | //+------------------------------------------------------------------+ bool CCanvas::Attach(const long chart_id,const string objname,ENUM_COLOR_FORMAT clrfmt=COLOR_FORMAT_XRGB_NOALPHA) { if(OBJ_BITMAP_LABEL==ObjectGetInteger(chart_id,objname,OBJPROP_TYPE)) { string rcname=ObjectGetString(chart_id,objname,OBJPROP_BMPFILE); rcname=StringSubstr(rcname,StringFind(rcname,"::")); if(ResourceReadImage(rcname,m_pixels,m_width,m_height)) { m_objname=objname; m_rcname=rcname; m_format=clrfmt; m_objtype=OBJ_BITMAP_LABEL; //--- success return(true); } } //--- failed return(false); } //--- И непонятно, почему у одних пользователей проблема проявляется, а у других нет. Вы не вносили изменения в этот класс? Вопросы от начинающих MQL5 Обсуждение статьи "SQLite: нативная Бета-версия платформы MetaTrader 5 Denis Kirichenko 2018.02.26 17:41 #25 Кнопки есть. СБ никогда не правлю. В класс CCanvas::Attach() изменения не вносил. Вот он: //+------------------------------------------------------------------+ //| Attach new object with bitmap resource | //+------------------------------------------------------------------+ bool CCanvas::Attach(const long chart_id,const string objname,ENUM_COLOR_FORMAT clrfmt=COLOR_FORMAT_XRGB_NOALPHA) { if(OBJ_BITMAP_LABEL==ObjectGetInteger(chart_id,objname,OBJPROP_TYPE)) { string rcname=ObjectGetString(chart_id,objname,OBJPROP_BMPFILE); rcname=StringSubstr(rcname,StringFind(rcname,"::")); if(ResourceReadImage(rcname,m_pixels,m_width,m_height)) { m_objname=objname; m_rcname=rcname; m_format=clrfmt; m_objtype=OBJ_BITMAP_LABEL; //--- success return(true); } } //--- failed return(false); } Anatoli Kazharski 2018.02.26 17:56 #26 Dennis Kirichenko: Кнопки есть. СБ никогда не правлю. В класс CCanvas::Attach() изменения не вносил. Вот он: В таком случае ничем помочь не могу. KR 0 12:44:52.304 MacdSampleWithFrames (EURUSD,H1) CElement::CreateCanvas > Не удалось присоединить холст для рисования к графику: 4016 //--- Ошибка 4016 означает: ERR_RESOURCE_NOT_FOUND4016Ресурс с таким именем в EX5 не найден //--- Если кто-нибудь ещё тестировал примеры из статьи, прошу рассказать о результатах. Воспроизводится ли ещё, у кого-нибудь такая проблема? Помощь в кодировании Как кодировать? Обсуждение статьи "Графические интерфейсы Denis Kirichenko 2018.02.26 18:00 #27 А не может ли быть причиной то, что у меня корневая папка имеет вид "C:\Program Files\MetaTrader 5\MQL5" ??? Соответственно ресурсы расположены в C:\Program Files\MetaTrader 5\MQL5\Images. Может проблема с доступом к рисункам? Хотя терминал запускается от имени администратора. Проблемы с открытыми окнами Bridge MT4 (dukascopy) Индикаторы: LinearRegressionLine Anatoli Kazharski 2018.02.26 18:06 #28 Dennis Kirichenko: А не может ли быть причиной то, что у меня корневая папка имеет вид "C:\Program Files\MetaTrader 5\MQL5" ??? Соответственно ресурсы расположены в C:\Program Files\MetaTrader 5\MQL5\Images. Может проблема с доступом к рисункам? Хотя терминал запускается от имени администратора.Не знаю. Попробуйте исследовать этот момент. Ресурсы в коде для формы вот так прописаны: //+------------------------------------------------------------------+ //| Создаёт кнопки на форме | //+------------------------------------------------------------------+ #resource "\\Images\\EasyAndFastGUI\\Controls\\close_black.bmp" #resource "\\Images\\EasyAndFastGUI\\Controls\\close_white.bmp" #resource "\\Images\\EasyAndFastGUI\\Controls\\full_screen.bmp" #resource "\\Images\\EasyAndFastGUI\\Controls\\minimize_to_window.bmp" #resource "\\Images\\EasyAndFastGUI\\Controls\\up_thin_white.bmp" #resource "\\Images\\EasyAndFastGUI\\Controls\\down_thin_white.bmp" #resource "\\Images\\EasyAndFastGUI\\Controls\\help.bmp" //--- bool CWindow::CreateButtons(void) { //--- Если тип программы "скрипт", выйдем if(CElementBase::ProgramType()==PROGRAM_SCRIPT) return(true); //--- Счётчик, размер, количество int i=0,x_size=20; int buttons_total=4; //--- Путь к файлу string icon_file=""; //--- Исключение в области захвата m_right_limit=0; //--- CButton *button_obj=NULL; //--- for(int b=0; b<buttons_total; b++) { //--- if(b==0) { CElementBase::LastId(LastId()-1); m_button_close.MainPointer(this); if(!m_close_button) continue; //--- button_obj=::GetPointer(m_button_close); icon_file ="Images\\EasyAndFastGUI\\Controls\\close_white.bmp"; } else if(b==1) { m_button_fullscreen.MainPointer(this); //--- Выйти, если (1) кнопка не включена или (2) это диалоговое окно if(!m_fullscreen_button || m_window_type==W_DIALOG) continue; //--- button_obj=::GetPointer(m_button_fullscreen); icon_file="Images\\EasyAndFastGUI\\Controls\\full_screen.bmp"; } else if(b==2) { m_button_collapse.MainPointer(this); //--- Выйти, если (1) кнопка не включена или (2) это диалоговое окно if(!m_collapse_button || m_window_type==W_DIALOG) continue; //--- button_obj=::GetPointer(m_button_collapse); if(m_is_minimized) icon_file="Images\\EasyAndFastGUI\\Controls\\down_thin_white.bmp"; else icon_file="Images\\EasyAndFastGUI\\Controls\\up_thin_white.bmp"; } else if(b==3) { m_button_tooltip.MainPointer(this); //--- Выйти, если (1) кнопка не включена или (2) это диалоговое окно if(!m_tooltips_button || m_window_type==W_DIALOG) continue; //--- button_obj=::GetPointer(m_button_tooltip); icon_file ="Images\\EasyAndFastGUI\\Controls\\help.bmp"; } //--- Свойства button_obj.Index(i); button_obj.XSize(x_size); button_obj.YSize(x_size); button_obj.IconXGap(2); button_obj.IconYGap(2); button_obj.BackColor(m_caption_color); button_obj.BackColorHover((b<1)? C'242,27,45' : C'0,150,245'); button_obj.BackColorPressed((b<1)? C'149,68,116' : C'0,160,255'); button_obj.BackColorLocked(m_caption_color_locked); button_obj.BorderColor(m_caption_color); button_obj.BorderColorHover(m_caption_color); button_obj.BorderColorLocked(m_caption_color_locked); button_obj.BorderColorPressed(m_caption_color); button_obj.IconFile(icon_file); button_obj.IconFileLocked(icon_file); if(b==3) { button_obj.TwoState(true); button_obj.IconFilePressed(icon_file); button_obj.IconFilePressedLocked(icon_file); } button_obj.AnchorRightWindowSide(true); //--- Расчёт отступа для следующей кнопки m_right_limit+=x_size-((i<3)? 0 : 1); i++; //--- Создадим элемент if(!button_obj.CreateButton("",m_right_limit,0)) return(false); //--- Добавить элемент в массив CElement::AddToArray(button_obj); } //--- return(true); } Denis Kirichenko 2018.02.26 18:21 #29 Да, Анатолий, я обнаружил вот что. В Ваших примерах кода к статье, в загружаемых файлах, файл MacdSampleWithFrames.mq5 по содержанию кода идентичен файлу MovingAverageWithFrames.mq5. Просьба исправить. Спасибо. Denis Kirichenko 2018.02.26 18:27 #30 Протестировал на другом терминале, где все файлы хранятся в папке %AppData\Roaming\MetaQuotes\Terminal\... Та же ошибка. Что-то где-то не сошлось... 1234567 Новый комментарий
@Dennis Kirichenko Вы распаковали самостоятельно картинки из архива EasyAndFastGUI.zip ? Пришлось все картинки приложить ZIP-файлом, другого варианта на текущий момент просто нет.
Да, я сам распаковал и скопировал. Нужно было сделать по-другому?
У меня вот так сейчас:
Да, я сам распаковал и скопировал. Нужно было сделать по-другому?
У меня вот так сейчас:
Всё правильно.
Покажите список графических объектов, созданных экспертом перед вылетом с графика в начале оптимизации (Ctrl + B).
Всё правильно.
Покажите список графических объектов, созданных экспертом перед вылетом с графика в начале оптимизации (Ctrl + B).
На всякий случай уточню, что объекты скрыты. Чтобы их вывести в список, жму на кнопку "Все".
...
То есть, по каким-то причинам у Вас не создаётся объект для рисования кнопки:
//---
Проверьте наличие отмеченных ниже картинок:
//---
И вот этот вопрос остался без ответа:
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Обсуждение статьи "Визуализируем оптимизацию торговой стратегии в MetaTrader 5"
Anatoli Kazharski, 2018.02.26 11:10
Теперь уже понятнее. Но вот я не могу ответить на вопрос, почему так получается.
Какая-то проблема вот в этом методе класса CCanvas из стандартной библиотеки:
//---
И непонятно, почему у одних пользователей проблема проявляется, а у других нет.
Вы не вносили изменения в этот класс?
Кнопки есть.
СБ никогда не правлю.
В класс CCanvas::Attach() изменения не вносил. Вот он:
Кнопки есть.
СБ никогда не правлю.
В класс CCanvas::Attach() изменения не вносил. Вот он:
В таком случае ничем помочь не могу.
//---
Ошибка 4016 означает:
ERR_RESOURCE_NOT_FOUND
4016
Ресурс с таким именем в EX5 не найден
//---
Если кто-нибудь ещё тестировал примеры из статьи, прошу рассказать о результатах. Воспроизводится ли ещё, у кого-нибудь такая проблема?
А не может ли быть причиной то, что у меня корневая папка имеет вид "C:\Program Files\MetaTrader 5\MQL5" ???
Соответственно ресурсы расположены в C:\Program Files\MetaTrader 5\MQL5\Images.
Может проблема с доступом к рисункам? Хотя терминал запускается от имени администратора.
А не может ли быть причиной то, что у меня корневая папка имеет вид "C:\Program Files\MetaTrader 5\MQL5" ???
Соответственно ресурсы расположены в C:\Program Files\MetaTrader 5\MQL5\Images.
Может проблема с доступом к рисункам? Хотя терминал запускается от имени администратора.
Не знаю. Попробуйте исследовать этот момент.
Ресурсы в коде для формы вот так прописаны:
Да, Анатолий, я обнаружил вот что.
В Ваших примерах кода к статье, в загружаемых файлах, файл MacdSampleWithFrames.mq5 по содержанию кода идентичен файлу MovingAverageWithFrames.mq5.
Просьба исправить. Спасибо.
Протестировал на другом терминале, где все файлы хранятся в папке %AppData\Roaming\MetaQuotes\Terminal\...
Та же ошибка. Что-то где-то не сошлось...