Fehler, Irrtümer, Fragen - Seite 2660

 
Igor Makanu:

brauchen einen ID - lokalen Agenten im Tester, bin mir nicht sicher, warum es diese Funktion nicht gibt

TerminalInfoString(TERMINAL_DATA_PATH);
 

Ich wiederhole das, damit es nicht in der Beliebigkeit untergeht)

1. bitte beraten, wenn ich Chart öffnen ChartOpen(), dann wie kann ich wieder Fokus (Aktivität, Sichtbarkeit) auf meinem Chart, von dem mein EA arbeitet, ohne es zu schließen.

2. wer weiß, warum Bid, Ask nicht mit dem Chartpreis übereinstimmen Close[0]https://www.mql5.com/ru/forum/160683/page1082#comment_15152111

 
fxsaber:

Ja, das habe ich auch gesucht, aber ich dachte nicht, dass es der richtige Ort dafür ist.

So bekommen Sie die Nummer eines Agenten.

string path = TerminalInfoString(TERMINAL_DATA_PATH);
string agent = StringSubstr(path,StringLen(path)-4);
 

MT5 Bug (Build 2342) Kompilierungsfehler beim Aufruf einer Template-Funktion mit expliziten Argumenttypen, wenn diese von einer überladenen Nicht-Template-Funktion aufgerufen wird.

template<typename T>
class B{
public:
   void func(const T value){
      printf("1\r\n");
      func<T>(value);             //'func<int>' - ambiguous call to overloaded function with the same parameters        
   };
   
   template<typename TT>
   void func(const TT){
      printf("2\r\n");
   };
   
};


void OnStart(){
   B<int> b;
   b.func(1);
   b.func(1.1);
}
 

Der Fehler MT5 (Build 2342) erzeugt einen Kompilierungsfehler beim Generieren von Code für eine Vorlagenfunktion, obwohl eine überladene Vorlagenfunktion mit einer passenden Signatur für die übergebenen Parameter vorhanden ist.
C++ online:https://onlinegdb.com/HyxjmV-DVI

#ifdef __cplusplus
    #include <iostream>
#endif


class C{
public:
   struct A{
      char aaa;
   };
   
   template<typename T>
   void test(A&, T&, T&, void* = NULL){
      printf("1");
   }
   
   template<typename T>
   void test(T&, T&, T&){
      printf("2");
   }
};

struct B : public C::A{
   char data;
};

struct D{
   char data;
};


void OnStart(){
   C c;

   B b;
   D d;
   
   c.test(b, b, b);    // should be: 2       
   c.test(b, d, d);    // should be: 1       //Compile Error: template parameter ambiguous, could be 'B' or 'D'
}

int main(){
   OnStart();
   return 0;
}
 
Sergey Dzyublik :

Der Fehler MT5 (Build 2342) erzeugt einen Kompilierungsfehler beim Generieren von Code für eine Vorlagenfunktion, obwohl eine überladene Vorlagenfunktion mit einer passenden Signatur für die übergebenen Parameter vorhanden ist.
C++ online: https://onlinegdb.com/HyxjmV-DVI

Haben Sie jemals von Metaquotes eine Rückmeldung über Ihre harte Testarbeit erhalten?
 

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Wanzen, Wanzen, Fragen

Sergey Dzyublik, 2020.02.28 22:21

class C{
public:
   struct A{
      char aaa;
   };
};

struct B : public C::A{
   char data;
};
Ich habe diese Funktion nie implementiert, vielen Dank.
 
Alain Verleyen:
Haben Sie jemals von Metaquotes eine Rückmeldung über Ihre harte Testarbeit erhalten?

Ja und nein.
Ich habe mich nicht beschwert, aber ein gutes Wort schadet nie.

 
Es gibt keine Möglichkeit, das folgende Problem zu lösen:
Wie erhält man eine "partielle Spezialisierung" für die Testfunktion, um die zu übergebenden Parameter zu unterscheiden und in jedem Fall einen anderen Algorithmus auszuführen?
Ich werde Ihnen gerne helfen, danke.

C++ online mit erwartetem Verhalten(https://onlinegdb.com/rycNVNDN8).
class C{
public:
   struct A{
   public:
      char aaa;
      
      A (char value = 0) : aaa(value){}
      void set(char value){
         aaa = value; 
      };
      char get(){return aaa;}
   };
   
   void test(A&, A& a1, A& a2){
      printf("1");
      a1.aaa = a2.aaa;
   }
   
   template<typename T>
   void test(A&, T& d1, T& d2){
      printf("2");
      d1.set(d2.get());
   }
};

struct B : public C::A{};


struct D{
private:
   char data;
public:  
   D(char value = 0) : data(value){}
   void set(char value){
      data = value; 
   };
   char get(){return data;}
};


void OnStart(){
   C c;

   B b;
   D d;
   
   c.test(b, b, b);    // 2      should be: 1
   c.test(b, d, d);    // 2      should be: 2   
}
 
Sergey Dzyublik:
Es gibt keine Möglichkeit, das folgende Problem zu lösen:
Wie erhält man eine "partielle Spezialisierung" für die Testfunktion, um die zu übergebenden Parameter zu unterscheiden und in jedem Fall einen anderen Algorithmus auszuführen?
Ich werde Ihnen gerne helfen, danke.
class C{
public:
   struct A{
      char aaa;
   };
   
   /*void test(A&, A&, A&){
      printf("1");
   }*/
   
   template<typename T>
   void test(A&, T&, T&){
      if (sizeof(T)==sizeof(A)) printf("1");
      else                      printf("2");
   }
};

struct B : public C::A{
   char data;
};

struct D{
   char data;
};


void OnStart(){
   C c;

   B b;
   D d;
   
   c.test(b, b, b);    // 2      should be: 2 
   c.test(b, d, d);    // 1      should be: 1    
}