В тестере индикатора не работает объект "графическая метка"

 

Здравствуйте! Собственно проблема в том, что не находит файл euro.bmp в тестере стратегий, хотя на графике в реальном времени все работает. Выдает ошибку "не удалось загрузить картинку для режима On! Код ошибки = 5019". В справке ничего не найдено, прошу помочь!

Ниже максимально короткий код


//+------------------------------------------------------------------+
//|                                                         Test.mq5 |
//|                                  Copyright 2021, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots   1
//--- plot Label1
#property indicator_label1  "Label1"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- indicator buffers
double         Label1Buffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   //--- сбросим значение ошибки
   ResetLastError();
//--- создадим графическую метку
   if(!ObjectCreate(0,"name",OBJ_BITMAP_LABEL,0,0,0))
   {
      Print(__FUNCTION__,": не удалось создать объект \"Графическая метка\"! Код ошибки = ",GetLastError());
      return(INIT_SUCCEEDED);
   }
//--- установим картинку
   if(!ObjectSetString(0,"name",OBJPROP_BMPFILE,0,"\\Images\\euro.bmp"))
   {
      Print(__FUNCTION__, ": не удалось загрузить картинку для режима On! Код ошибки = ",GetLastError());
      return(INIT_SUCCEEDED);
   }
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
 //--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
 

Распечатайте путь терминала:

  Print(TerminalInfoString(TERMINAL_DATA_PATH));

Откройте путь в проводнике Windows. 


Это будет ответ на Вашу ошибку.

 
Vladimir Karputov #:

Распечатайте путь терминала:

Откройте путь в проводнике Windows. 


Это будет ответ на Вашу ошибку.

Выдает этот путь  - C:\Program Files\RoboForex - MetaTrader 5_2\Tester\Agent-127.0.0.1-3000. Если я Вас правильно понял, то мой путь с файлом должен быть такой - C:\Program Files\RoboForex - MetaTrader 5_2\Tester\Agent-127.0.0.1-3000\MQL5\Images\euro.bmp ?


 
Tango_X #:

Выдает этот путь  - C:\Program Files\RoboForex - MetaTrader 5_2\Tester\Agent-127.0.0.1-3000. Если я Вас правильно понял, то мой путь с файлом должен быть такой - C:\Program Files\RoboForex - MetaTrader 5_2\Tester\Agent-127.0.0.1-3000\MQL5\Images\euro.bmp ?


Да. Но тестер вычистит этот путь и все удалит. Терминал имеет строгие правила по работе с файлами: поэтому Вы сами должны позаботиться о файлах, если запуск идёт через тестер стратегий. 
Или ещё вариант: разместите Файлы в общей папке и пропишите путь - это кстати самый правильный вариант.
 
Vladimir Karputov #:
Да. Но тестер вычистит этот путь и все удалит. Терминал имеет строгие правила по работе с файлами: поэтому Вы сами должны позаботиться о файлах, если запуск идёт через тестер стратегий. 
Или ещё вариант: разместите Файлы в общей папке и пропишите путь - это кстати самый правильный вариант.

Мне стыдно, я так и не нашел куда положить картинку,  чтобы тестер ее увидел!

P.S. я уже эту картинку запихнул во все директории терминала, но тестер ее все равно не видит!

 
А если прикрепить ресурсом? 
 
Sofiia Butenko #:
А если прикрепить ресурсом? 

за него и говорим, но не выходит. Может у Вас получится

 
Tango_X #:

за него и говорим, но не выходит. Может у Вас получится

Вот так вроде работает

//+------------------------------------------------------------------+
//|                                                          BMP.mq5 |
//|                        Copyright 2021, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_chart_window
#property indicator_plots 0
#resource "\\Images\\euro.bmp"
#resource "\\Images\\dollar.bmp"
//+------------------------------------------------------------------+
//|  Функция создания объекта OBJ_BITMAP_LABEL с помощью ресурса     |
//+------------------------------------------------------------------+
void Image(string name,string rc,int x,int y)
  {
   ObjectCreate(0,name,OBJ_BITMAP_LABEL,0,0,0);
   ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y);
   ObjectSetString(0,name,OBJPROP_BMPFILE,rc);
  }
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit()
  {
//---
   Image("EUR","::Images\\euro.bmp",10,40);
   Image("USD","::Images\\dollar.bmp",10,80);
//----
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   ObjectDelete(0,"EUR");
   ObjectDelete(0,"USD");
//--- удалим объект с графика
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
Причина обращения: