Fehler, Irrtümer, Fragen - Seite 2828

 
fxsaber:

Im Moment gibt es eine Reihe identischer Dateien, die sich nur durch die letzte Ziffer der Erweiterung unterscheiden.

Sie befinden sich in verschiedenen Ordnern. Sind sie symverknüpft oder so?
 
Alexey Navoykov:
Sie befinden sich in verschiedenen Ordnern. Sind sie durch einen Symlink verbunden?

In MQL5 gemeinsam für beide Terminals.

 
Wie kann ich die Sprache der MT5-Oberfläche ändern? Ich glaube, früher gab es einen Schalter im Menü, jetzt kann ich ihn nicht mehr finden.
 
Stanislav Korotky:
Wie kann ich die Sprache der MT5-Oberfläche ändern? Ich glaube, früher gab es einen Schalter im Menü, jetzt kann ich ihn nicht mehr finden.

 
Ich bin neulich auf eine merkwürdige Situation gestoßen - der Indikator auf TF M1 ermittelt den Eröffnungskurs des Tagesbalkens nicht korrekt. Der Indikator ist seit etwa 3 Jahren in Gebrauch, und ich hatte vorher keine Probleme damit. Die Verschiebung war sehr signifikant, etwa 500 Pips, zur gleichen Zeit, am Morgen zeigte er korrekte Daten, aber am Nachmittag lag er bereits. Die Änderung der TF hat nicht geholfen, nur die Änderung der TF der Indikatorberechnung in den Indikatoreinstellungen selbst hat geholfen. Ich weiß nicht, wie ich es reproduzieren kann. Solche Pannen sind beim automatischen Handel beängstigend.
 

Beim Versuch, eine Ressource zu erstellen, "beschwert" sich der Compiler über die BMP-Datei mouse.bmp

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

Bei direkter Verwendung tritt jedoch kein Fehler auf und das Bild wird korrekt angezeigt.

#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); 
  }
//+------------------------------------------------------------------+

Datei befindet sich im Archiv.

Herausgeber


Das Verhalten in MT4 ist das gleiche...

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

Beim Versuch, eine Ressource zu erstellen, "schwört" der Compiler auf die BMP-Datei mouse.bmp

Bei direkter Verwendung tritt jedoch kein Fehler auf und das Bild wird korrekt angezeigt.

Datei befindet sich im Archiv.

Herausgeber


Das Verhalten in MT4 ist das gleiche...

Er will keine 8-Bit-Maps schlucken.
Besser in 24 oder 32 Bit konvertieren.

32-Bit ist zu bevorzugen, wenn Sie einen Alphakanal benötigen, dann können Sie ein Bild auf einem transparenten Hintergrund erhalten, anstatt eines rechteckigen Hintergrunds, der das Diagramm verdeckt.

In diesem Fall müssen Bitmaps über ResourceReadImage in ein Array konvertiert werden und COLOR_FORMAT_ARGB_NORMALIZE muss verwendet werden.

Dateien:
Images.zip  3 kb
 
Guten Tag, folgender Fehler [MT4 (1280) / ME (2375)] ist nach einem Update aufgetreten :

Scope-Erweiterung über Template-Parameter zum Zugriff auf Funktionen mit Rückgabewert.

Beispiel 1:Aufrufen einer Funktion einer Basisklasse.
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();
}  
Wenn der Zugriff auf eine ungültige Funktion über eine Erweiterung des Anwendungsbereichs oder ohne Weitergabe des Rückgabewerts erfolgt, ist das in Ordnung.

Beispiel 2: Aufrufen einer statischen Funktion einer Klasse.
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>();
}  

Vor dem Update hat es funktioniert. In MT5/MetaEditor 2560 funktioniert es auch gut.
Документация по MQL5: Основы языка / Операторы / Оператор возврата return
Документация по MQL5: Основы языка / Операторы / Оператор возврата return
  • www.mql5.com
Оператор возврата return - Операторы - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Nicht dasselbe Verhalten bei Select-Funktionen.
void OnStart()
{
  PositionSelectByTicket(0); // OK
  OrderSelect(0);            // return value of 'OrderSelect' should be checked
}
 
Guten Tag, nach dem Update ist folgender Fehler aufgetreten [MT4 (1280) / MetaEditor (2375)]:

Template function overload in class body, template parameter overrides correct function version.
(Für globale Funktionen - das Überladen zu erlauben, ist in Ordnung.)
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();
}
Grund der Beschwerde: