Fehler, Irrtümer, Fragen - Seite 2742

 
fxsaber:
Welche Flaggen und Fallstricke kann es geben, wenn von einem MQL-Programm etwas muss an die Datei (RAM-Laufwerk) die ganze Zeit angehängt werden, und von den anderen (und ein anderes Terminal) zu lesen, von der gleichen es alle diese angehängten Daten lesen?

Die Datensicherheit sollte gewährleistet sein, aber ich denke, es gibt mindestens 2 Probleme:

- keine garantierte Synchronisierung bei gleichzeitigem Zugriff, d. h. es ist möglich, bereits gelesene Daten erneut zu lesen und gleichzeitig zu verhindern, dass neue Daten geschrieben werden - Kollisionen

- es gibt keine Möglichkeit, eine solche Situation zu erkennen und zu kontrollieren

Lösungen wie üblich - Semaphoren oder schreiben Sie Ihren eigenen Schreibmanager

ZS: es scheint, es gibt eine Möglichkeit, in den Speicher eingebettet SQLite setzen, zumindest dort, um den Zustand der Datenbank steuern kann

 
Alexey Kozitsyn:

In Five funktionieren die Anzeigen ähnlich, aber alles ist normal, ohne Einfrieren.

Nein, in Five befinden sich die Indikatoren im Werkzeugfluss.

 
Fehler MT5 (build 2340) kein Zugriff auf Standardoperator= von Zeigerobjekt.

class A{
public:
   char data;
   
   // uncomment to fix the bug
   //void operator=(A &a){this.data = a.data;}
};


// bypassing the bug
template<typename P1, typename P2>
void unref_assignment_operator(P1* &p1, P2* &p2){
   struct Functor{
      static void call(P1 &p1, P2 &p2){
         p1 = p2;
      }
   };
   Functor::call(p1, p2);
}

   
void OnStart(){      
   A a1;
   A a2;
   
   a2.data = 0x1;
   a1 = a2;
   printf("%d", (a1.data));               // Ok, 0x1
   
   
   A* a_ptr_1 = &a1;
   A* a_ptr_2 = &a2;
   
   a2.data = 0x2;
   a1.operator=(a2);                      //'operator=' - undeclared identifier 
   printf("%d", (a1.data));               
   
   
   a2.data = 0x3;
   unref_assignment_operator(a_ptr_1, a_ptr_2); 
   printf("%d", (a1.data));               // Ok, 0x3
}
 

Bitte beheben Sie den Fehler- MT Terminal stürzt ab, wenn Sie versuchen, eine statische Strukturfunktion zu debuggen.
Selbst im obigen Beispiel
führtein Haltepunkt in der Zeile "p1 = p2;" zum Absturz des Terminals.

 
Andrey Khatimlianskii:

Nein, in Five befinden sich die Indikatoren im Werkzeugfluss.

Es tut mir leid, ich bin verwirrt. Ich dachte gerade, dass dies das Verhalten in Quaternary ist (d. h. wie in Quaternary - im Werkzeugfluss).

Und wo steht etwas über den gemeinsamen Schnittstellenfaden für MT4-Indikatoren?

Hinzugefügt:

Indikator

Alle Indikatoren nutzen die Ressourcen der grafischen Schnittstelle thread

Eine Endlosschleife in einem Indikator stoppt die Arbeit des Terminals


Danke für den Tipp, ich habe es gefunden.

Dann war der Debugger in MT4 ursprünglich nicht vorgesehen. Sie hätten es verboten, zumindest Indikatoren zu nennen.

 

Ich weiß nicht genau, wo ich den Fehler melden soll... Ich werde versuchen, hier darüber zu berichten. Der Kern des Problems auf MT5: Wenn Sie die Chart-Skalierung über die Schaltflächen "+" oder "-" verwenden, kehrt der Chart nicht in seine normale Position zurück (vom rechten Bildschirmrand eingerückt). Ich muss sie immer wieder manuell zurückgeben.

Auf MT4 gibt es dieses Problem nicht. Ich habe es bei mehreren Brokern überprüft...

Nach dem Drücken der "+"-Taste


Sehr ungemütlich... Können wir es reparieren?

 
Alexey Kozitsyn:

Dann stellt sich heraus, dass der Debugger ursprünglich nicht für MT4 entwickelt wurde. Wenigstens hätten sie verboten, sie als Indikatoren zu bezeichnen.

Aber sie war nicht von Anfang an da. Sie haben es also nicht durchdacht.

 
Roman Agafonkin:

Ich weiß nicht genau, wo ich den Fehler melden soll... Ich werde versuchen, hier darüber zu berichten. Der Kern des Problems auf MT5: Wenn Sie die Chart-Skalierung über die Schaltflächen "+" oder "-" verwenden, kehrt der Chart nicht in seine normale Position zurück (vom rechten Bildschirmrand eingerückt). Ich muss sie immer wieder manuell zurückgeben.

Auf MT4 gibt es dieses Problem nicht. Ich habe es bei mehreren Brokern überprüft...


Sehr ungemütlich... Können wir es reparieren?

Bei Verwendung der Skalierung kehrt die Einrückung beim nächsten eingehenden Tick in ihren normalen Zustand zurück.

 
SEM:

Wenn die Skalierung verwendet wird, kehrt der Einzug beim nächsten eingehenden Tick in den Normalzustand zurück.

Das ist die Sache, es tut nicht... auf mt4 es ist in Ordnung... auf mt5 - leider ist es fehlerhaft...
OK, ich drehe ein Video und füge es zu diesem Thread hinzu.

Grund der Beschwerde: