MetaTrader 4 Build 529 beta mit neuem Compiler veröffentlicht - Seite 27

 
Barbarian:

Sie haben wahrscheinlich nicht gelesen, mein Beitrag oben, wo ich beschrieben, was geschrieben wird, um jetzt mit Beta-Versionen von MT4. In Nix arbeitet jeder komplett in seiner eigenen Sandbox, nur der Root-Benutzer stellt gemeinsame Programme ein und vergibt Rechte für deren Nutzung durch andere Benutzer. Die Ideologie ist dort völlig anders, obwohl sie ähnlich wie bei Microsoft zu sein scheint. Übrigens stört es mich nicht, dass die Beta-Version die Benutzereinstellungen in X:\Users\xxx\AppData\Roaming\MetaQuotes\Terminal\ schreibt, mich stört das Folgende:

1. Dass es ein Unterverzeichnis X:\Users\xxx\AppData\Roaming\MetaQuotes\Terminal\B5589D10299052C8D921603EBD1F9752\ erstellt, dessen Namen man nicht kennt, bis man dort hinkommt, außerdem ändert es seinen Namen bei jeder Aktualisierung.

2. Dieser Pfad wird nicht nur zum Schreiben von Benutzereinstellungen verwendet, sondern auch für ausführbare Dateien - Indikatoren, Expert Advisors, Skripte usw., also für all die Dinge, die Sie einem Fremden nicht auf Ihren PC lassen würden, selbst wenn er einen anderen Benutzernamen hätte. Dies kann natürlich später vermieden werden, aber zu welchem Preis.

Ich bin am meisten Angst vor dem ersten Punkt, weil mit dem Lesen / Schreiben auf Dateien, Code, um diese Operationen zu verwenden wird komplizierter.


Ich habe es gelesen und stimme Ihnen vollkommen zu. Was ich geschrieben habe - es wäre keine schlechte Idee, den Pfad im Terminal zu konfigurieren. Manchmal ist es nützlich, Einstellungen, Dateien, EAs... auszutauschen. Manchmal nicht.
 
Antonsan:

Ich schreibe auf Spanisch. Und ich übersetze mit Google.

Die Übersetzung ins Englische ist genauso schlecht wie die russische Übersetzung.

Dieser Indikator ist auf EA vorbereitet und zeichnet nur wenige Balken.
Beim Ändern des Zeitrahmens habe ich festgestellt, dass der Indikator manchmal wiederholt auf dem Bildschirm erscheint.
Manchmal scheint er mehrmals zu laufen und die Linie richtig zu ziehen, ein anderes Mal scheint es sich um identische Kopien zu handeln, die in der Geschichte angeordnet sind.

Dies hatte drei identische Kopien in der Geschichte, aber um den Screenshot zu reduzieren, sahen nur zwei.

Er tritt auf, wenn das Terminal den Verlauf einer anderen TF herunterlädt.

Sie sollten den gesamten Puffer nach der Initialisierung des Indikators löschen. Oder zeichnen Sie alle Balken.

 
ALXIMIKS:


Ich habe meine Idee beschrieben (den Graphen zu ändern, indem ich die Gegenwart in die Vergangenheit einfüge und gleichzeitig die Zukunft erfinde), wenn das nicht sehr klar ist, dann leider........

Ich würde mich freuen, wenn Sie einen anderen Weg vorschlagen könnten, um das, was auf den Minus-Balken benötigt wird, mit angemessenen Werten auf den Plus-Balken zu zeichnen.

Es ist nicht wichtig, was man wo anbringt. Wichtig ist, was als Ergebnis gezogen werden sollte.

Wenn Sie einen Ausschnitt aus der Vergangenheit und der Zukunft benötigen, brauchen Sie einen Puffer und SetIndexShift für die erforderliche Anzahl von Takten in der Zukunft (sie wird aus der Vergangenheit gewonnen).

Wenn nur die Zukunft benötigt wird - wieder ein Puffer, SetIndexShift( bars ), und füllen Sie nur "Bars" Werte.

Und wenn Sie die Vergangenheit komplett benötigen (kritisch, auch die ganz linken Balken sollten gefüllt sein) und einen Teil der Zukunft, dann 2 Puffer, jeder für sich.

Im Allgemeinen sehe ich das Problem nicht.

 

Der Fehler, dass externe Parameter, die als String deklariert wurden, ihre Werte verlieren, ist nun behoben. Danke

Das nächste Problem betrifft die iCustom()-Aufrufe. Wenn der aufgerufene Indikator String-Parameter enthält, tritt der folgende Fehler auf:


Code für "_master" :

#property indicator_chart_window
#property indicator_buffers 1

extern string TestString = "whatever value that we want initially set";

double firstBuffer[];

int OnInit() { SetIndexBuffer(0,firstBuffer); return(0); }
int deinit() {                                return(0); }
int start ()
{
   firstBuffer[0] = iCustom(NULL,0,"_slave","",0,0);
   Comment(firstBuffer[0]);
   return(0);
}

Code für "_slave" :

#property indicator_chart_window
#property indicator_buffers 1

extern string TestString = "whatever value that we want initially set";

double firstBuffer[];

int OnInit() { SetIndexBuffer(0,firstBuffer); return(0); }
int deinit() {                                return(0); }
int start()
{
   firstBuffer[0] = 1;
   return(0);
}

Ein anderer Fehler tritt auf, wenn der Parameter kein String-Typ ist

Wenn er als Integer deklariert ist, wird die Instanz "_slave" immer wieder neu geladen (wie im Fall eines falschen Parametertyps)

Code für "_master integer" (mit einem Parameter vom Typ Integer im Aufruf iCustom() :

#property indicator_chart_window
#property indicator_buffers 1

double firstBuffer[];

int OnInit() { SetIndexBuffer(0,firstBuffer); return(0); }
int deinit() {                                return(0); }
int start ()
{
   firstBuffer[0] = iCustom(NULL,0,"_slave integer",(int)0,0,0);
   Comment(firstBuffer[0]);
   return(0);
}

Und der Code für "_slave integer" :

#property indicator_chart_window
#property indicator_buffers 1

extern int dummy = 0;

double firstBuffer[];

int OnInit() { SetIndexBuffer(0,firstBuffer); return(0); }
int deinit() {                                return(0); }
int start()
{
   firstBuffer[0] = 1;
   return(0);
}

Wenn der Parameter im aufgerufenen Indikator als Double deklariert ist, funktioniert er gut.

 

Ich denke, es muss ein Problem mit dem Terminal geben, das den Datenspeicher nicht richtig löscht, oder ein anderes Problem, das Sie nicht kennen.

Wenn diese Situationen einem Experten passieren können, erhalten Sie sicherlich fehlerhafte Daten.

Dies ist eher ein Zeichenprogramm für Weihnachtsbäume.

 
mladen:

Wenn der Parameter im aufgerufenen Indikator als Double deklariert ist, funktioniert er gut.


Wir werden das so schnell wie möglich überprüfen. Dankeschön
 
Antonsan:

Ich schreibe auf Spanisch. Und ich übersetze mit Google.

Die Übersetzung ins Englische ist genauso schlecht wie die russische Übersetzung.

Dieser Indikator ist auf EA vorbereitet und zeichnet nur wenige Balken.
Beim Ändern des Zeitrahmens habe ich festgestellt, dass der Indikator manchmal wiederholt auf dem Bildschirm erscheint.
Manchmal scheint er mehrmals zu laufen und die Linie richtig zu ziehen, ein anderes Mal scheint es sich um identische Kopien zu handeln, die in der Geschichte angeordnet sind.

Dies hatte drei identische Kopien in der Geschichte, aber um den Screenshot zu reduzieren, sahen nur zwei.

Hola! Escriba en el español! Se lo traduciré al ruso! Suerte!
 
Antonsan:

Ich denke, es muss ein Problem mit dem Terminal geben, das den Datenspeicher nicht richtig löscht, oder ein anderes Problem, das Sie nicht kennen.

Wenn diese Situationen einem Experten passieren können, erhalten Sie sicherlich fehlerhafte Daten.

Dies ist eher ein Zeichenprogramm für Weihnachtsbäume.

Terminal sollte Ihre Puffer nicht löschen. Sie müssen nur einmal nach dem Start des Indikators initialisiert werden.
 
stringo:

Korrigiert

Außerdem wurden die Punkte 1 und 2 korrigiert.

Punkt 3: Wir arbeiten mit dem Debugger.

Für die Punkte 4 und 5 müssen wir wissen, wie wir sie reproduzieren können. Schritt für Schritt. Sie ist nicht spontan reproduzierbar.

Vielen Dank für das Feedback. Code gesendet an servicedesk, #880536.
 

Fehler in der Dokumentation:

datetime iVolumen

sollte sein

double iVolumen