Fehler, Irrtümer, Fragen - Seite 1925

 

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Wanzen, Wanzen, Fragen

fxsaber, 2017.07.10 20:16

Um viele Fragen zum korrekten Ausfüllen der MqlTradeRequest-Struktur zu erleichtern, schlage ich vor, wenn Sie beim manuellen Ausfüllen der Felder im Terminal F9 drücken, eine Fußnote "Details" zu erstellen, in der alle Felder der entsprechenden Handelsstruktur sichtbar sind (mit der Option "Kopieren mit einem Klick"). Jetzt ist diese Struktur vollständig verfügbar, wenn Sie sie in OnTradeTransaction nach Drücken der F9-Fensteraktion abfangen.

Gescheitert. Die Implementierung des Abfangens der gefüllten Struktur über OnTradeTransaction ist hier zu sehen.

 
Yury Kirillov:

Spätestens ab Build 1625 fällt MT5 bei Tests aus.

Bild 1626:

Spielt zumindest in den Modi "jede Zecke..." und "alle Zecken".


Nachmittags. Benötigte Schritte für die Wiedergabe. Benötigt werden Experten-/Indikator- und Testeinstellungen. Bitte schreiben Sie an servicedesk.

 
Alexander:

Guten Tag. Benötigte Schritte für die Wiedergabe. Benötigt werden Experten-/Indikator- und Testeinstellungen. Bitte schreiben Sie an servicedesk.


Habe an TA#1794147 geschrieben.

Es scheint zu einem Absturz zu kommen, wenn HistoryDealGetTicket(i) mit einem Parameter verwendet wird, der größer ist als die Anzahl der verfügbaren Transaktionen.

 
Yury Kirillov:

Ich habe an TP#1794147 geschrieben.

Es scheint zu einem Absturz zu kommen, wenn HistoryDealGetTicket(i) mit einem Parameter verwendet wird, der größer ist als die verfügbare Anzahl von Transaktionen.

Ja, ich habe es gesehen. Danke

 

Keine Fehlermeldung

struct A {
        int z;
};
void OnStart()
{
        int const b; //'b' - 'const' variable must be initialized
        A   const a; //нет сообщения об ошибке //по сути равнозначно записи: int const а.z; 
}
Es muss entweder ein expliziter Konstruktor oder eine Initialisierungssequenz vorhanden sein
 
A100:

Keine Fehlermeldung

Wegen des Konstruktors. Es ist also in Ordnung.

 
fxsaber:

Wegen des Konstruktors. Es ist also in Ordnung.

Wegen eines Konstrukteurs, der nichts tut?

struct A {
        A() {}
        int a;
}; 
void OnStart()
{
        const A a; //нормально
}

Wenn es möglich ist, const int A::a nicht zu initialisieren, warum dann unbedingt const int b im vorherigen Fall initialisieren?

 
A100:

Wegen eines Konstruktors, der nichts tut?

Ja, wegen des leeren Standardkonstruktors.

Wenn man const int A::a deinitialisieren kann, warum dann unbedingt const int b im vorherigen Fall initialisieren?

Warum wird "Fehler" statt "Warnung" angezeigt? Nun, das kann man auch so machen

void OnStart()
{
  int a;
  const int b = a;
}

IMHO muss es eine Warnung geben, wenn eine const-Variable eines einfachen Typs nicht initialisiert wird. Und es sollte keine Warnung geben, wenn der Wert OrderSend nicht überprüft wird. Aber das scheint die Ansicht der Entwickler zu sein. D.h. die Argumentation ist subjektiv.

 
fxsaber:

Warum wird ein Fehler statt einer Warnung angezeigt? Schließlich kann man es auch so machen

Denn die Verwendung einer nicht initialisierten konstanten Variablen macht keinen Sinn - daher der Fehler (sie enthält einen Zufallswert und kann später nicht geändert werden)

 
A100:

Weil die Verwendung einer nicht initialisierten konstanten Variable keinen Sinn macht - daher der Fehler (sie enthält einen Zufallswert und ihre weitere Verwendung führt zu schwer zu findenden Fehlern)

Ich habe ein Wort in dem Zitat durchgestrichen, aber die Bedeutung wird sich nicht ändern, wenn es in Zukunft nur noch Lesevorgänge gibt. Bei non-const gibt es eine Warnung, bei const einen Fehler. Das ist nur eine der umstrittenen Entscheidungen der Entwickler.