Fehler, Irrtümer, Fragen - Seite 2648

 
Vladimir Karputov:

Klicken Sie auf die Überschrift einer der Spalten: Symbol, Ticket, Zeit.

Klicken Sie mit Ihrer LINKEN TASTE.

Es hat geklappt, danke, ich habe schon mehrmals das falsche Paar geschlossen.
 
Сергей Проценко:
Je nach Gewinn, wenn der Gewinn höher ist, gehen Sie nach unten, der andere Auftrag hat einen höheren Gewinn, tauschen Sie die Plätze. Wenn der Gewinn des Euro höher ist als der des Goldes, wird der Auftrag für den Euro am unteren Ende und der Auftrag für das Gold darüber liegen.

Sie haben nach Gewinn sortiert. Wählen Sie ein anderes Sortierkriterium.

 
fxsaber :
Können Sie mir sagen, wie ich einen Kompilierungsfehler umgehen kann?

Es ist nicht so kompliziert, wie es aussieht:

 #define  PRINT(x) ; Print ( #x,  ":" , string (x))

struct STRUCT_BASE
{
   static const int Array[];
};
static const int STRUCT_BASE::Array[] = { 1 , 2 };

struct STRUCT : STRUCT_BASE
{
   int Array2[ sizeof (Array)];
};


void OnStart ()
{
   static const int Array[] = { 1 , 2 };
   int Array2[ sizeof (Array)];
  
  PRINT( ArraySize (Array));             //2 
  PRINT( ArraySize (Array2));           //8
  
  
  STRUCT s;
  PRINT( ArraySize (s.Array));           //2
  PRINT( ArraySize (s.Array2));         //8
}
 
Sergey Dzyublik:

Es ist nicht so kompliziert, wie es aussieht:

Vielen Dank, ich bin nicht bis zur Basisfrage gekommen.

 
Ich kann die Codebasis nicht überprüfen, dieHauptdatei wurde nicht gefunden, aber sie ist da. Bitte finden Sie den Grund heraus (falls die Moderatoren das können). Ich denke darüber nach, wieder in Blogs zu veröffentlichen - dort gibt es solche Probleme nicht.
 
Stanislav Korotky:
Ich kann die Codebasis nicht überprüfen, sie sagt, dass dieHauptdatei nicht gefunden wurde, aber sie ist da. Bitte finden Sie den Grund heraus (falls die Moderatoren das können). Ich denke darüber nach, wieder in Blogs zu veröffentlichen - dort gibt es solche Probleme nicht.

Legen Sie das mq5 in den Ordner "default".

 

Gleich zwei Fragen zum MT5-Compiler (Build 2321):

#define  PRINT(x) ; Print(#x, ":", string(x))
#ifdef __cplusplus
    #include<iostream>
#endif


template<typename T>
class A{
};

template<typename T>
class B : public A<T>{
};


template<typename T>
void func(B<T> &it1){
   printf("C++:1");                      //MQL:2         
}

////ERRROR: 'func' - template functions overloading is not supported yet
//template<typename T>     
//void func(T &it1){ 
//  printf("C++:2");                               
//}
template<typename T>         
void func(T &it1, T* = NULL){
   printf("C++:2");                       //MQL:1        
}

template<typename T>
void func(A<T> &it1){
   printf("C++:3");                       //MQL:3
}


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

int main(){
   OnStart();
   return 0;
}

1. Die Prioritäten der Ausführung von Template-Funktionen in MQL entsprechen nicht denen von Template-Funktionen in C++ (online: https://onlinegdb.com/Hkvz8Hu7L).
Wenn also in C++ alle drei Vorlagenfunktionen vorhanden sind, wird die Vorlagenfunktion mit dem Ergebnis "C++:1" ausgeführt, wenn sie entfernt wird, wird "C++:2" ausgeführt, und wenn sie entfernt wird, wird "C++:3" ausgeführt.
Die Prioritäten in MQL sind ganz anders: "C++:2" gefolgt von "C++:1" und "C++:3".


Es ist nicht klar, warum die erste der beiden Funktionen in MQL verboten ist, während die identische Funktion mit einem Dummy-Parameter bereits erlaubt ist:

//ERRROR: 'func' - template functions overloading is not supported yet
template<typename T>     
void func(T &it1){ 
  printf("C++:2");                               
}

// OK
template<typename T>         
void func(T &it1, T* = NULL){
   printf("C++:2");                              
}
 

Hallo zusammen.

Ist jemand auf das Problem des Testens von Robotern in mehreren Währungen gestoßen?

Werden alle Währungspaare, die für den EA benötigt werden, heruntergeladen?

Ich versuche, zwei Paare zu testen, z.B. EURUSD GBPUSD:

Wenn ich auf EURUSD teste (Test EURUSD GBPUSD), ist das Ergebnis 1,

Wenn wir auf GBPUSD testen (Test EURUSD GBPUSD), ist das Ergebnis 2, d.h. unterschiedlich

Wenn wir USDCHF testen (Test EURUSD GBPUSD) - das Ergebnis ist 3, d.h. unterschiedlich



Die Ergebnisse sind nicht viel anders, ein paar Dutzend Geschäfte (während 2 Monaten), aber das Ergebnis ist anders für jedes Paar (obwohl wir bestimmte EURUSD GBPUSD Paare testen)

Ich gehe gleich davon aus: Der ganze Code arbeitet mit der Variablen Symb , die Symbol() aus der Schleife übernimmt. D.h. einzelner Code, aber innerhalb des Codes wird der Symb-Variable ein eigener Wert zugewiesen.


Kann es sein, dass aufgrund der unterschiedlichen Kurse, Ticks und der Qualität der Historie für verschiedene Paare (wobei EURUSD und GBPUSD immer getestet werden), die Testergebnisse für verschiedene Paare unterschiedlich sind?

D.h.

Kann es sein, dass der Test für EURUSD durchgeführt wurde und für GBPUSD weniger Notierungen benötigt werden?

и

Ist es möglich, dass der Test für GBPUSD eingestellt wurde und weniger Kurse für EURUSD heruntergeladen werden?

 
fxsaber:

Legen Sie das mq5 in den Ordner "default".

Ich weiß sehr wohl, dass das Hauptmodul ohne Ordner sein sollte - es ist der Standardordner, den sie selbst "beenden", indem sie die Optionen auf der rechten Seite der Download-Schaltflächen herunterlassen.

Das funktioniert nicht.

 
In C++ kompiliert es und funktioniert (online: https://onlinegdb.com/Syn90dd7I), aber in MQL der Fehler: "'func' - zweideutiger Aufruf einer überladenen Funktion"

#define  PRINT(x) ; Print(#x, ":", string(x))
#ifdef __cplusplus
    #include<iostream>
#endif


template<typename T>
class A{
};

template<typename T>
class B : public A<T>{
};

template<typename T>
class C : public B<T>{
};


template<typename T>
void func(B<T> &it1){
   printf("C++:1");                      
}

template<typename T>
void func(A<T> &it1){
   printf("C++:2");                      
}


void OnStart(){
   C<int> c;
   func(c);            //ERROR: 'func' - ambiguous call to overloaded function
}

int main(){
   OnStart();
   return 0;
}