Errores, fallos, preguntas - página 2828

 
fxsaber:

Por el momento, hay un montón de archivos idénticos que sólo se diferencian en el último dígito de la extensión.

Están en carpetas diferentes. ¿Están vinculados entre sí o algo así?
 
Alexey Navoykov:
Están en carpetas diferentes. ¿Están vinculados por un enlace simbólico?

En el MQL5 común a ambos Terminales.

 
¿Cómo puedo cambiar el idioma de la interfaz de MT5? Creo que antes había un conmutador en el menú, ahora no lo encuentro.
 
Stanislav Korotky:
¿Cómo puedo cambiar el idioma de la interfaz de MT5? Creo que antes había un conmutador en el menú, ahora no lo encuentro.

 
El otro día me encontré con una situación extraña: el indicador de TF M1 no determina correctamente el precio de apertura de la barra diaria. El indicador se ha utilizado durante unos 3 años, y no tuvo ningún problema antes. El cambio fue muy significativo, unos 500 pips, a la vez, por la mañana mostraba datos correctos, pero por la tarde ya mentía. El cambio de TF no ayudó, sólo el cambio de TF del cálculo del indicador en la propia configuración del indicador ayudó. No sé cómo reproducirlo. Este tipo de fallos son aterradores cuando se negocia de forma automática.
 

Al intentar crear un recurso, el compilador se "queja" del archivo BMP mouse.bmp

unsupported image format 'C:\Users\pc\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\Files\Images\MyBMP\mouse.bmp'   

Aunque, si se utiliza directamente, no hay ningún error y la imagen se muestra correctamente.

#property strict
string label_name="currency_label";        // имя объекта OBJ_BITMAP_LABEL 
#resource "\\Files\\Images\\MyBMP\\Style-Pause-icon.bmp";    // путь к файлу каталог_данных_терминала\MQL4\Files\Images\MyBMP\... 
//#resource "\\Files\\Images\\MyBMP\\mouse.bmp";    
string press      ="::Files\\Images\\MyBMP\\Style-Pause-icon.bmp";    // RESOURCE
string unpress    ="\\Files\\Images\\MyBMP\\mouse.bmp";  // путь к файлу каталог_данных_терминала\MQL4\... 
//+------------------------------------------------------------------+ 
//| Expert initialization function                                   | 
//+------------------------------------------------------------------+ 
int OnInit() 
  { 
//--- создадим кнопку OBJ_BITMAP_LABEL, если ее еще нет 
   if(ObjectFind(0,label_name)<0) 
     { 
      //--- попробуем создать объект OBJ_BITMAP_LABEL 
      bool created=ObjectCreate(0,label_name,OBJ_BITMAP_LABEL,0,0,0); 
      if(created) 
        { 
         //--- привяжем кнопку к правому верхнему углу графика 
         ObjectSetInteger(0,label_name,OBJPROP_CORNER,CORNER_RIGHT_UPPER); 
         //--- теперь настроим свойства объекта 
         ObjectSetInteger(0,label_name,OBJPROP_XDISTANCE,100); 
         ObjectSetInteger(0,label_name,OBJPROP_YDISTANCE,50); 
         //--- сбросим код последней ошибки в 0 
         ResetLastError(); 
         //--- загрузим картинку для состояния кнопки "Нажата" 
         bool set=ObjectSetString(0,label_name,OBJPROP_BMPFILE,0,press); 
         //--- проверим результат 
         if(!set) 
           { 
            PrintFormat("Не удалось загрузить картинку из файла %s. Код ошибки %d",press,GetLastError()); 
           } 
         ResetLastError(); 
         //--- загрузим картинку для состояния кнопки "Отжата" 
         set=ObjectSetString(0,label_name,OBJPROP_BMPFILE,1,unpress); 
          
         if(!set) 
           { 
            PrintFormat("Не удалось загрузить картинку из файла %s. Код ошибки %d",unpress,GetLastError()); 
           } 
         //--- отдадим графику команду на обновление, чтобы кнопка появилась сразу же, не дожидаясь тика 
         ChartRedraw(0); 
        } 
      else 
        { 
         //--- объект создать не удалось, сообщим об этом 
         PrintFormat("Не удалось создать объект OBJ_BITMAP_LABEL. Код ошибки %d",GetLastError()); 
        } 
     } 
//--- 
   return(INIT_SUCCEEDED); 
  } 
//+------------------------------------------------------------------+ 
//| Expert deinitialization function                                 | 
//+------------------------------------------------------------------+ 
void OnDeinit(const int reason) 
  { 
//--- удалим объект с графика  
   ObjectDelete(0,label_name); 
  }
//+------------------------------------------------------------------+

está en el archivo.

Editor


El comportamiento en MT4 es el mismo...

Документация по MQL5: Общие функции / ResourceCreate
Документация по MQL5: Общие функции / ResourceCreate
  • www.mql5.com
[in]  Относительный путь к файлу, содержащему данные для ресурса. Если путь начинается с обратной косой черты "\" (пишется "\\"), то файл ищется относительно папки Если второй вариант функции вызывается для...
Archivos adjuntos:
Images.zip  3 kb
 
Mikhail Dovbakh:

Al intentar crear un recurso, el compilador "jura" el archivo BMP mouse.bmp

Aunque, si se utiliza directamente, no hay ningún error y la imagen se muestra correctamente.

está en el archivo.

Editor


El comportamiento en MT4 es el mismo...

No quiere tragarse los mapas de 8 bits.
Mejor convertir a 24 o 32 bits.

Los 32 bits son preferibles cuando se necesita el canal alfa, entonces se puede obtener una imagen sobre un fondo transparente en lugar de un fondo rectangular que cubra el gráfico.

En ese caso, los mapas de bits deben ser convertidos a una matriz a través de ResourceReadImage y se debe utilizar COLOR_FORMAT_ARGB_NORMALIZE.

Archivos adjuntos:
Images.zip  3 kb
 
Buenas tardes, después de una actualización se ha producido el siguiente error [MT4 (1280) / ME (2375)]:

Ampliación del ámbito a través del parámetro de la plantilla para acceder a funciones con valor de retorno.

Ejemplo 1:Llamada a una función de una clase base.
class _f
{
public:
   
   bool f(){ return false; }
   
   void g(){ Print("g");   }   
};

template<typename F>
class run_f : public F
{
public:

   bool f(){ return F::f(); } //<--- '::' - unexpected token

   void g(){ F::g(); }        //<--- OK
};


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

void OnStart() 
{ 
   run_f<_f> r;
   
   r.f();
   r.g();
}  
Si accedemos a una función void a través de la expansión del ámbito o sin promover el valor de retorno, está bien.

Ejemplo 2: Llamada a una función estática de una clase.
class _f
{
public:
   
   static bool static_f(){ return true; } 
   static void static_g(){}    
};

template<typename F>
bool call_static()
{
   return F::static_f(); //<--- '::' - unexpected token and function not defined
   
   F::static_f();       //<--- OK (не используем возварщаемое значение)
   
   //F::static_g();     //<--- OK (void функция)
   
   return true;  
}

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

void OnStart() 
{ 
   call_static<_f>();
}  

Funcionaba antes de la actualización. En MT5/MetaEditor 2560 también funciona bien.
Документация по MQL5: Основы языка / Операторы / Оператор возврата return
Документация по MQL5: Основы языка / Операторы / Оператор возврата return
  • www.mql5.com
Оператор возврата return - Операторы - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
No es el mismo comportamiento para las funciones Select.
void OnStart()
{
  PositionSelectByTicket(0); // OK
  OrderSelect(0);            // return value of 'OrderSelect' should be checked
}
 
Buenas tardes, tras la actualización se ha producido el siguiente error [MT4 (1280) / MetaEditor (2375)]:

Sobrecarga de función de plantilla en el cuerpo de la clase, el parámetro de la plantilla anula la versión correcta de la función.
(Para las funciones globales - permitir la sobrecarga funciona bien.)
template<typename T>
class template_class{};

class X
{  
public:

   template<typename T>
   void f(const template_class<T>&) 
   {
      Print("T");
      
      T * obj = NULL;
   }
   
   void f(const template_class<string>&) 
   {
      Print("string");
   }
   
   void call()
   {
      template_class<string> ts;
      
      f(ts);    //Вызывает версию Т, а должен string.
   }
};

void OnStart()
{
   X x;
   
   x.call();
}