Логотип, нет объекта на графике

 

 Здравствуйте.   Помогите с логотипом ,формат мт5 , сделал вроде все, но на графике не отображается логотип, не создается. В журнале терминала, ошибку не пишет. 

файл помесил в папку:  мт5\\\\files  

Имя файла: logo

подскажите, что сделал не так ?

//+------------------------------------------------------------------+

//|                        // Отображение логотипа                   |

//+------------------------------------------------------------------+    
    

    // Получение пути к файлу логотипа

    string logoFilename = "logo.bmp"; // Имя файла логотипа

    string logoPath = TerminalInfoString(TERMINAL_DATA_PATH) + "\\MQL5\\Files\\" + logoFilename; // Полный путь к файлу логотипа
    

    // Отображение логотипа

    int chartId = (int)ChartFirst();

    if(chartId != 0)

    {

        ChartSetInteger(chartId, CHART_AUTOSCROLL, false); // Отключаем автопрокрутку графика

        // Получаем ширину и высоту графика

        int chartWidth = (int)ChartGetInteger(200, CHART_WIDTH_IN_PIXELS);

        int chartHeight = (int)ChartGetInteger(300, CHART_HEIGHT_IN_PIXELS);

        // Получение ширины и высоты логотипа

        int logoWidth = 200; // Замените это на реальную ширину вашего логотипа

        int logoHeight = 200; // Замените это на реальную высоту вашего логотипа

        // Установка координат для логотипа

        int logoX = chartWidth - logoWidth - 10; // 10 пикселей отступа от правого края графика

        int logoY = 10; // 10 пикселей отступа от верхнего края графика

        // Создание логотипа на графике

        long logoHandle = ObjectCreate(chartId, "logo", OBJ_BITMAP, 0, 0, 0);

        if(logoHandle != -1) 

        {

            ObjectSetInteger(chartId, "logo", OBJPROP_XDISTANCE, logoX); // Устанавливаем координату X

            ObjectSetInteger(chartId, "logo", OBJPROP_YDISTANCE, logoY); // Устанавливаем координату Y

            ObjectSetString(chartId, "logo", OBJPROP_BMPFILE, logoPath); // Устанавливаем полный путь к файлу логотипа

        }

        else 

        {

            Print("Failed to create logo object.");

        }

    }

    else

    {

        Print("No chart found.");

    }

    


Документация по MQL5: Константы, перечисления и структуры / Константы графиков / Свойства графиков
Документация по MQL5: Константы, перечисления и структуры / Константы графиков / Свойства графиков
  • www.mql5.com
Свойства графиков - Константы графиков - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Внимательно читайте документацию. В частности о пути к файлу.
 
Alexey Viktorov #:
Внимательно читайте документацию. В частности о пути к файлу.

да, само собой, может я в строке не так указал путь ?

 
Vetalson 1988 #:

да, само собой, может я в строке не так указал путь ?

Просто logoFileName. Полный путь указывать не нужно.

 
Ihor Herasko #:

Просто logoFileName. Полный путь указывать не нужно.

    // Получение пути к файлу логотипа


    string logoFilename = "logo.bmp"; // Имя файла логотипа

    // Отображение логотипа

    int chartId = (int)ChartFirst();

    if(chartId != 0)

    {

        ChartSetInteger(chartId, CHART_AUTOSCROLL, false); // Отключаем автопрокрутку графика

        // Получаем ширину и высоту графика

,,,,,,,,,,,,,,,,,,,,


убрал , ни чего не поменялось . на графике экрана нажал все объекты, думал сразу может за графиком логотип, но нет объекта на экране.

 
2024.03.16 22:26:12.562  trader (EURUSD,H1) Логотип успешно создан. Идентификатор объекта:0

2024.03.16 22:26:12.562  trader (EURUSD,H1) Координаты логотипа установлены: X =-210, Y =10


создал проверки на наличие ошибок, все равно нет логотипа ,логотип формат bmp 200x200

не пойму ,что не так. пробовал удалять из папки files  логотип, тогда да выдает ошибку, нет файла .


 
Vetalson 1988:

 Здравствуйте.   Помогите с логотипом ,формат мт5 , сделал вроде все, но на графике не отображается логотип, не создается. В журнале терминала, ошибку не пишет. 

файл помесил в папку:  мт5\\\\files  

Имя файла: logo

подскажите, что сделал не так ?

Лучше для лого использовать png
 
Nikolai Semko #:
Лучше для лого использовать png

переделал : 

//+------------------------------------------------------------------+


//|                        // Отображение логотипа                   |


//+------------------------------------------------------------------+    

   


// Получение пути к файлу логотипа

   string logoFilename = "osiris.png"; // Имя файла логотипа "osiris. png "

   if (!FileIsExist(logoFilename))

{

    Print("Файл логотипа не найден:", logoFilename);

    return; // Если файл не найден, выходим из функции OnInit()

}


    // Добавляем код для отображения логотипа

    int chartId = (int)ChartFirst();

    if(chartId != 0)

    {

        ChartSetInteger(chartId, CHART_AUTOSCROLL, false); // Отключаем автопрокрутку графика

        

        // Получаем ширину и высоту графика

        int chartWidth = (int)ChartGetInteger(0, CHART_WIDTH_IN_PIXELS);

        int chartHeight = (int)ChartGetInteger(0, CHART_HEIGHT_IN_PIXELS);

        

        // Получение ширины и высоты логотипа

        int logoWidth = 200; // Замените это на реальную ширину вашего логотипа

        int logoHeight = 200; // Замените это на реальную высоту вашего логотипа

        // Установка координат для логотипа

        

        int logoX = chartWidth - logoWidth -10; // 10 пикселей отступа от правого края графика

        int logoY = 10; // 10 пикселей отступа от верхнего края графика

        // Создание логотипа на графике

        

        long logoHandle = ObjectCreate(chartId, "logo", OBJ_BITMAP, 0, 0, 1000);

        if(logoHandle != -1) 

        {

             Print("Логотип успешно создан. Идентификатор объекта:", logoHandle);

            ObjectSetInteger(chartId, "logo", OBJPROP_XDISTANCE, logoX); // Устанавливаем координату X

            ObjectSetInteger(chartId, "logo", OBJPROP_YDISTANCE, logoY); // Устанавливаем координату Y

            ObjectSetString(chartId, "logo", OBJPROP_BMPFILE, logoFilename); // Устанавливаем путь к файлу логотипа

            Print("Координаты логотипа установлены: X =", logoX, ", Y =", logoY);

        }

        else 

        {

            Print("Ошибка при создании логотипа.");

        }

    }

    else

    {

        Print("No chart found.");

    }

не помогло ошибка в эксперте  :

2024.03.16 23:38:49.545  trader (EURUSD,H1) Логотип успешно создан. Идентификатор объекта:0

2024.03.16 23:38:49.545  trader (EURUSD,H1) Координаты логотипа установлены: X =1204, Y =10



 
Vetalson 1988 #:

переделал : 

//+------------------------------------------------------------------+


//|                        // Отображение логотипа                   |


//+------------------------------------------------------------------+    

   


// Получение пути к файлу логотипа

   string logoFilename = "osiris.png"; // Имя файла логотипа "osiris. png "

   if (!FileIsExist(logoFilename))

{

    Print("Файл логотипа не найден:", logoFilename);

    return; // Если файл не найден, выходим из функции OnInit()

}


    // Добавляем код для отображения логотипа

    ...

 

--

 
Vetalson 1988 #:

переделал : 

не помогло ошибка в эксперте  :

#include "Png.mqh" // https://www.mql5.com/en/code/45439
#resource "logo.png" as uchar png_logo[]

CPng logo(png_logo, true,10,10);
//+------------------------------------------------------------------+
int OnInit() {
   logo.Resize(100);
   logo._CreateCanvas(10, 10);
   return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
void OnTick() {}
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam) {
   if (id == CHARTEVENT_CHART_CHANGE) {
      long w;
      ChartGetInteger(0,CHART_WIDTH_IN_PIXELS,0,w);
      ObjectSetInteger(0,logo.C.m_objname,OBJPROP_XDISTANCE,w-logo.C.m_width-logo._C.m_width-10);
      ObjectSetInteger(0,logo._C.m_objname,OBJPROP_XDISTANCE,w-logo._C.m_width-10);
      ChartRedraw();
   }
}


Файлы:
PngLogo.zip  36 kb
 
Vetalson 1988 #:
...

Вставляйте правильно код -

----------------‌

MQL5.community - Памятка пользователя 

Кнопка  Исходный кодпредназначена для вставки исходного кода в текст сообщения. При нажатии появляется пустое окно, в которое необходимо вставить код и далее нажать кнопку Вставить. Для отмены вставки кода необходимо нажать кнопку Отмена.

Причина обращения: