Fehler, Irrtümer, Fragen - Seite 1723

 

Kopieren (unter Beibehaltung relativer Pfade) aller Projektdateien in einen separaten Ordner.

Ich möchte zum Beispiel einen Code weitergeben. Es zieht etwa ein Dutzend mqh-Dateien von verschiedenen Orten heran.

Jetzt muss ich diese Dateien manuell suchen, oft findet man nicht alle oder nimmt etwas Unnötiges mit. Wie lässt sich dieser Prozess automatisieren, um Quellen gemeinsam nutzen zu können?

 

Wie kann ich ein Projekt mit allen Dateien löschen?

Ich habe ein Projekt mit einem Dutzend Dateien aus dem kodobase-Terminal heruntergeladen, aber wie kann ich es löschen?

 

Kompilierungsfehler

class A {};
template<typename T> //---------------------------------------------------//(1)
T *f( T* t ) { return t; }              //      A *f(       A* )          //(2)
                                        //const A *f( const A* )          //(3)
template<typename T> //---------------------------------------------------//(4)
 T *f( T* t, const T* ) { return t; }    //      A *f(       A*, const A* )//(5)
void OnStart()
{
    const A *a;
    const A *a1 = f( a );    // ошибка не обоснована: T -> const A, и в отсутствии (6) применимо (3)
          A *a2 = f( a );    //ошибка    обоснована, но по другой причине: A* = const A*
                  f( a, a ); //ошибка    обоснована, но по другой причине: T -> A, и отсутствует f(const A*,const A*)
}

(*) Im Allgemeinen können in Muster (1) sowohl A->(2) als auch const A->(3) durch T ersetzt werden. Anders als z.B. bei Vorlage (4), wo nur A->(5) für T ersetzt werden kann.

Jetzt funktioniert nur noch die Substitution A->(2), so dass wir für eine vollständige Nutzung zwei Vorlagen statt einer erstellen müssen:

template<typename T> //---------------------------------------------------//(1)
      T *f(       T* t ) { return t; }
template<typename T> //---------------------------------------------------//(6)
const T *f( const T* t ) { return t; }

Anmerkung: Die explizite Definition (6) hat höhere Priorität als der allgemeine Fall (*)

Insgesamt: In Ermangelung von Muster (6) sollte Muster (1) mit Signatur (3) gelten.

 
A100:
Ich bitte Sie wirklich darum, etwas in der kodobase zu veröffentlichen! Für pädagogische Zwecke.
 
1) Aktualisiert der MT5 die offenen Positionen und den Handelsverlauf nach einem OrderSend-Aufruf mit einer gewissen Verzögerung? Wenn ja, welche Zeitspanne wird für das Warten empfohlen?

2) Dieselbe Frage für MT4, zum Vergleich.
 

RickD:
1) Обновление открытых позиций и торговой истории в MT5 после вызова OrderSend происходит с некоторой задержкой? Если да, какой рекомендуется timeout для ожидания?

MT5-OrderSend ist NICHT vollständig synchronisiert - es findet keine Synchronisation mit der Handelsumgebung statt. Das bedeutet, dass die historischen Messwerte nicht mit der realen Situation übereinstimmen.

Eine Auszeit kommt nicht in Frage. Es gibt keine verlässliche Lösung für dieses Problem, da Sie sich mit Synchronisationsproblemen auf der Terminalebene und nicht auf der Serverebene befassen müssen.

In der Tat stehen die MT5-Benutzer vor dem gleichen Problem wie die Entwickler der MT4-Bridge.

Wenn ein OrderSend gesendet wird, müssen Sie sich daran ERINNERN (hier liegt die potenzielle Schwachstelle), dass dies geschehen ist. Dann ignorieren Sie die aktuelle Historie (Handelsumgebung), bis die entsprechende Meldung in OnTrade kommt. Sobald es eintrifft, VERGESSEN Sie es nicht mehr.

Wenn es kein REMEMBER gibt, können Sie sich auf die Historie wie in MT4 verlassen.

2) Dieselbe Frage für MT4, zum Vergleich.
MT4-OrderSend ist VOLLSTÄNDIG synchronisiert.
 

Версия и битность терминала

Version: 5.00, Build 1445 (07.10.2016), 32 bit.

Beschreibung des Problems

Der Indikator kann die Daten der Standard-Indikatoren (eingebauter MT5) nicht aus einem anderen Zeitrahmen (anders als der aktuelle Zeitrahmen des Charts, in dem der Indikator installiert ist) kopieren. Gleichzeitig kann der "Handle" des Standardindikators erhalten werden, aber die Funktion CopyBuffer() gibt immer -1 zurück. Im Visualisierungsmodus des Testers tritt das Problem nicht auf, aber im Terminal auf dem Chart (an dem der Indikator befestigt ist) ist das Problem immer vorhanden.

Abfolge der Maßnahmen

oben beschrieben.

Erzieltes Ergebnis

Oben beschrieben.

Erwartetes Ergebnis

Korrektes Kopieren der Daten von Standard- (und vorzugsweise benutzerdefinierten) Indikatoren aus anderen Zeitrahmen in den Indikator.

Zusätzliche Informationen

In früheren "Builds" trat dieses Problem nicht auf.

Ist jemand auf ein solches Problem gestoßen? Ist es ein "Fehler" des Terminals oder meiner?

 

fxsaber:

...Wenn ein OrderSend gesendet wird, müssen Sie sich daran ERINNERN (hier liegt die potenzielle Schwachstelle), dass dies geschehen ist. Anschließend wird die aktuelle Historie (Handelsumgebung) ignoriert, bis die entsprechende OnTrade-Nachricht eintrifft. Sobald es eintrifft, sollte das ERFORDERLICHE VERBOTEN werden...

Entweder ist mein Gedächtnis undicht, oder die Dokumentation im OnTrade-Teil wurde aktualisiert:

...Wenn der Aufruf der Funktion OrderSend() erfolgreich ist und true zurückgibt, bedeutet dies, dass der Handelsserver den Auftrag zur Ausführung in die Warteschlange gestellt und ihm eine Ticketnummer zugewiesen hat. Sobald der Server diesen Auftrag verarbeitet, wird das Ereignis "Handel" erzeugt. Und wenn der Benutzer sich den Wert des Tickets merkt, kann er/sie herausfinden, was genau mit der Bestellung passiert ist, indem er/sie dieses Ticket bei der Verarbeitung des OnTrade()-Ereignisses verwendet...

Mit anderen Worten: Die Auslösung von OnTrade im i-ten Schritt ist eine Garantie dafür, dass der Auftrag auf dem Server akzeptiert wird.

 
Dennis Kirichenko:

Entweder ist meine Erinnerung unscharf oder der OnTrade-Teil der Dokumentation wurde aktualisiert:

Mit anderen Worten: Die Auslösung von OnTrade im Schritt i ist eine Garantie dafür, dass der Auftrag auf dem Server akzeptiert wird.

Die Erinnerung an das Ticket (nicht die Tatsache, dass es von OrderSend zurückgegeben wird) oder die Tatsache, dass OrderSend mit true-return durchgeführt wurde, ist REAL.
 
fxsaber:
Es ist ein MUSS, sich das Ticket zu merken (nicht die Tatsache, dass es von OrderSend zurückgegeben wird) oder die Tatsache, dass OrderSend mit true-return gemacht wurde.

Dort ist alles in Ordnung, die Auftragserteilung sollte über OnTradeTransaction gesteuert werden. Übrigens, wenn Sie sich direkt über Plaza2 mit der Börse verbinden, ist die Situation die gleiche - Sie müssen die Ankunft von Nachrichten über die Auftragserteilung steuern. In MT4 ist diese Funktion synchron, aber die gleiche Option ist in MT5 verfügbar, nur dass in diesem Fall die Logik anhält, bis die Funktion keine Antwort erhält.

Wenn Sie möchten, kann ich Ihnen die Steuerklasse schicken, obwohl sie für den Marktplatz geschrieben ist, aber bald werde ich sie für Begrenzer fertigstellen.