Fehler, Irrtümer, Fragen - Seite 2809

 
TheXpert:

Mit anderen Worten: Es gibt keinen internen (Standard-)Zugang, aber es gibt einen externen Zugang. Aber um sie zu verwenden, müssen Sie sie ausdrücklich angeben. Das leuchtet mir ein

 
Kompilierungsfehler:
template<typename T> class A {};
class B {
template<typename T> void f( A<T>& );
};
template<typename T>
void B::f( A<T>& ) {} //Error: 'f' - member function already defined with different parameters

aber sonst:

template<typename T> class A {};
class B {
template<typename T> void f( A<T>& ) {} //нормально
};

gut. Welchen Unterschied macht das?

template<typename T> class A {};
template<typename T>
class B {
                     void f( A<T>& );
};
template<typename T>
void B::f( A<T>& ) {} //нормально

ist das auch in Ordnung. Und die Hauptsache ist, dass vor (in Build 2085) es alle normal kompiliert - ohne Fehler!

 

Guten Tag, liebe Experten!

Könnten Sie mir bitte sagen, ob es möglich ist, einen Haltepunkt zu setzen, der zu einem bestimmten Zeitpunkt (auf einem bestimmten Balken) während des Debugging ausgelöst wird? D.h., ich möchte, dass die Geschichte an eine bestimmte Stelle weitergeleitet wird, und an dieser Stelle würde ein Haltepunkt ausgelöst werden, und ich könnte den Debugger an der gewünschten Stelle durchlaufen.

 

Ich habe einen EA im Tester gestartet, Netting. Ich habe mich noch nicht viel mit Limits beschäftigt, meine Frage bezieht sich auf BuyLimit, mit Positionsumkehr.
Lösen sie wirklich mit Slippage zum Besseren aus oder hängt es vom Broker ab? Oder ist es das Falsche im Prüfgerät?

Und aus irgendeinem Grund endete die Linie für die Verkaufsposition nicht an der niedergeschlagenen Grenze, sondern ging weiter über den Bildschirmrand hinaus.


 
1. es gibt einen Befehl "DatabaseImport", in der Dokumentation zu den Parametern Flags Erklärung gibt es nicht genau diese Flags. Ich habe sowohl "0" als auch die Parameter von DatabaseExport ausprobiert, die Kompilierung funktioniert, aber bei der Ausführung wird Fehler 5131 zurückgegeben. In der Dokumentation gibt es keinen solchen Fehler. Weiß jemand, was es mit diesem Fehler auf sich hat? Was ist falsch an dieser Zeile?
DatabaseImport(db,"hist",FilenameHist,DATABASE_IMPORT_HEADER | DATABASE_IMPORT_CRLF | DATABASE_IMPORT_APPEND,";",0,"");
?
2. Warum ist die Linie
         i=DatabaseExport(db,"select * from hist",FilenameHist,DATABASE_EXPORT_HEADER | DATABASE_EXPORT_CRLF | DATABASE_EXPORT_APPEND,";");
Arbeiten und
i=DatabaseExport(db,"hist",FilenameHist,DATABASE_EXPORT_HEADER | DATABASE_EXPORT_CRLF | DATABASE_EXPORT_APPEND,";");
nicht? Mit dem, was in der Dokumentation steht
long  DatabaseExport( 
   int           database,           // хендл базы данных, полученный в DatabaseOpen 
   const string  table_or_sql,       // 




имя таблицы  или SQL-запрос 
   const string  filename,           // имя CSV-файла для экспорта данных 
   uint          flags,              // комбинация флагов 
   const string  separator           // разделитель данных в CSV-файле 
   );
 

d.h. der Tabellenname sollte auch erkannt werden! Was ist los?


w.s. Meine Herren Entwickler, welches zehnte Auge sollte vermuten, dass die Tabelle, in der der Import durchgeführt wird, nicht existiert? und warum müssen Sie den Import exportieren, wenn der Ordner, in dem Sie speichern könnenemql5/files beim Starten gelöscht wird? Wie kann man mit einer permanenten Datei arbeiten? Oder ist es immer notwendig, durch Debugging zu starten und Zeit zu haben, die notwendige Datei vor der Initialisierung einzufügen? Was ist ....
 
AlexInRush:

Guten Tag, liebe Experten!

Könnten Sie mir bitte sagen, ob es möglich ist, einen Haltepunkt zu setzen, der zu einem bestimmten Zeitpunkt (auf einem bestimmten Balken) während des Debugging ausgelöst wird? D.h., ich möchte, dass die Geschichte an eine bestimmte Stelle weitergeleitet wird, und an dieser Stelle würde ein Haltepunkt ausgelöst werden, und ich könnte den Debugger an der gewünschten Stelle durchlaufen.

Im Strategietester gibt es gleich nach dem Start ein Feld mit der Bezeichnung "Blättern bis". In das Feld ganz rechts geben Sie die Zeit ein, bis zu der Sie laufen wollen. Sie halten also in dem Moment an, in dem Sie es brauchen, und setzen dann einen Haltepunkt in den Code, um ihn zu verfolgen.
 
Alexandr Koptelov:
1. es gibt einen Befehl "DatabaseImport", in der Dokumentation zu den Parametern Flags Erklärung gibt es nicht genau diese Flags. Ich habe sowohl "0" als auch die Parameter von DatabaseExport ausprobiert, die Kompilierung funktioniert, aber bei der Ausführung wird ein Fehler 5131 zurückgegeben. In der Dokumentation gibt es keinen solchen Fehler. Weiß jemand, was es mit diesem Fehler auf sich hat? Was ist falsch an der Zeile; ?
2. Warum funktioniert die Linie und warum nicht? Mit dem, was in der Dokumentation steht

d.h. der Tabellenname sollte auch erkannt werden! Was ist los?


s.w. Meine Herren Entwickler, welches zehnte Auge sollte vermuten, dass die Tabelle, in der der Import durchgeführt werden soll, nicht existiert? und warum braucht man überhaupt einen Export-Import, wenn der Ordner, in dem manemql5/files speichern kann, beim Start geleert wird? Wie kann man mit einer permanenten Datei arbeiten? Oder ist es immer notwendig, durch Debugging zu starten und Zeit zu haben, die notwendige Datei vor der Initialisierung hinzuzufügen? Was ist ....

Arbeiten Sie in einem Tester oder Debugger, wobei sich die Basis in einem gemeinsamen Ordner befindet.

 
AlexInRush:

Guten Tag, liebe Experten!

Könnten Sie mir bitte sagen, ob es möglich ist, einen Haltepunkt zu setzen, der zu einem bestimmten Zeitpunkt (auf einem bestimmten Balken) während des Debugging ausgelöst wird? D.h., ich möchte, dass die Geschichte bis zu einer bestimmten Stelle aktiv ist und dann ein Haltepunkt an dieser Stelle ausgelöst wird, so dass ich den Debugger auf dem Balken, den ich brauche, durchlaufen kann.

Setzen Sie die Bedingung

if(TimeCurrent() == nnnTime)
  DebugBreak();
und starten Sie die Fehlersuche. Sobald die Zeit die angegebene Zeit erreicht, wird das Debugging gestoppt und nach allen Manipulationen drücken Sie Shift+F11, um den Tester fortzusetzen.
 

Gibt es keine Möglichkeit, Drucken im Optimierungsmodus zu aktivieren? Die Option "Vollständige Optimierungsprotokolle" ist aktiviert, aber nur der Druck von OnInit wird in die Protokolle aufgenommen, während ich ihn z. B. von OnTester benötige.

 
Kompilierungsfehler
#define  MACRO( X ) aaa##X = X
#define  bbb  5
void OnStart()
{
    int MACRO(         bbb );
    printf( "%d",   aaabbb ); //Error: 'aaabbb' - undeclared identifier
}

Und in C++ ist das in Ordnung. ## hat höhere Priorität - bbb wird zuerst ersetzt, und dann wird bbb durch 5 ersetzt, was nicht der Fall sein sollte:

    int aaa5 = 5; //неправильно (*)

So sollte es sein:

    int aaabbb = 5; //правильно (**)

Aufgrund dieses Fehlers kann eine Routineoperation nicht durch ein Makro ersetzt werden. (*) kann gegebenenfalls durch eine andere Aufzeichnungsform erhalten werden, aber (**) kann in MQL auf keine Weise erhalten werden.

Grund der Beschwerde: