Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 111

 
trader781:
Ich verstehe nicht, wie, ich habe die Namen korrigiert, die Linie ist immer noch rot, unabhängig von der Auftragsart, nur anders genannt. (Dann muss ich einen Weg finden, es auf 10 Takte zu kürzen), ich brauche genau die Art und Weise
Versuchen Sie es jetzt
Dateien:
 
Sergey Gritsay:
Versuchen Sie es jetzt.

Es ist gut, dass es ein Quellenbuch gibt)

Wenn man den Kompilierknopf drückt, stirbt der Bot zusammen mit dem Terminal, und nach dem Öffnen von EX öffnet es sich nicht und die Datei ist leer.

Das sieht folgendermaßen aus.

Auch sah, wenn Sie blau, grün, gold, weiß, diese Farben ändern, aber dunkelgrau und Azur nicht setzen, wird es weiß.

Dateien:
 
trader781:

Es ist gut, dass es ein Quellenbuch gibt)

Wenn man den Kompilierknopf drückt, stirbt der Bot zusammen mit dem Terminal, und nach dem Öffnen von EX öffnet es sich nicht und die Datei ist leer.

Es sieht so aus.

Ich habe auch geschaut, wenn ich blau, grün, gold, weiß einfüge, ändern sich diese Farben, aber dunkelgrau und azurblau wird nicht eingefügt, es wird weiß.

Ich kompiliere gut.
 
Sergey Gritsay:
string  StringSubstr(
   string  string_value,     // строка
   int     start_pos,        // с какой позиции начать
   int     length=0          // длина извлекаемой строки
   );
...

Ich danke Ihnen!

Ich brauche auch Hilfe - ich muss herausfinden, wie viele Zeichen in einer Zeichenkette sind - wie mache ich das?

 
Guten Tag.
Ich verwende StringSplit, um eine aus einer Datei gelesene Zeichenkette zu teilen. Bei der Array-Ausgabe gehen jedoch alle Strings außer dem ersten String verloren. Bei der Ausgabe sind alle außer der ersten Zeichenkette leer, obwohl die Array-Größe korrekt ist.

Außerdem bin ich auf ein unverständliches Verhalten bei Arrays von Strings gestoßen. Ich muss zweidimensionale Arrays erstellen, um Strings in einem Array zu speichern.

Ist dieses Verhalten schon einmal aufgetreten?

while( idx < size ) {
    if( StringFind( fileBuffer[idx][0], "[Main]" ) >= 0 ) {
        idx++;
        Print( "Buffer(main) = " + fileBuffer[idx][0] ); // debug
        if( StringFind( fileBuffer[idx][0], "Kit_Names=" ) >= 0 ) {
            Print( "check1 - " + fileBuffer[idx][0] ); // debug
            string tmp = StringSubstr( fileBuffer[idx][0], 10 );
            Print( tmp );                              // debug
            StringReplace( tmp, "\"", "" );
            Print( tmp );                              // debug
            Print( StringSplit( tmp, sep, list ) );
            Print( "check22 - " + tmp );               // debug
            for(int i = 0; i < ArrayRange(list,0); i++) Print(list[i][0]);  // debug
        }
    }
    idx++;
}
 
-Aleks-:

Ich danke Ihnen!

Ich brauche auch Hilfe - ich muss herausfinden, wie viele Zeichen in einer Zeichenkette sind - wie mache ich das?

Gibt die Anzahl der Zeichen in der Zeichenkette zurück.

int  StringLen(
   string  string_value      // строка
   );

 
terentjew23:

Gibt die Anzahl der Zeichen in einer Zeichenkette zurück.

int  StringLen(
   string  string_value      // строка
   );

Vielen Dank!

 
Ein Ratschlag, bitte.

Ich deklariere ein Array auf globaler EA-Ebene. Dann rufe ich in der speziellen Funktion init() eine Benutzerfunktion auf, die das Array mit String-Konstanten füllt.

In der speziellen Funktion start() verwende ich das Array dann nur zum Lesen von Daten.

Einige Zeit später werden andere Daten das Feld füllen. D.h., wenn ich den EA ausführen, erwarte ich, dass das Array unverändert bleibt, während der EA arbeitet, aber die Daten irgendwie bekommt in das Array, und nur nach einiger Zeit (mehr als 10 Minuten). Wenn ich den Expert Advisor neu starte, wird das Array so gefüllt, wie es sein sollte, aber einige Zeit später enthält das Array aus Gründen, die ich nicht verstehe, wieder die falschen Werte.

Der einzige Ausweg ist, das Array in der start() ständig neu zu laden, aber das gefällt mir nicht wirklich, denn das Array sollte eigentlich nur während der Initialisierung gefüllt werden.

Was könnte das Problem sein? Wie kann man das Array vor Änderungen schützen?
 
Maksym Mudrakov:
Können Sie mir bitte einen Tipp geben?
...
Was könnte das sein? Wie kann man verhindern, dass ein Array verändert wird?
Überprüfen Sie den Code gründlich.
 
Maksym Mudrakov:
Ein Ratschlag, bitte.

Ich deklariere ein Array auf globaler EA-Ebene. Dann rufe ich in der speziellen Funktion init() eine Benutzerfunktion auf, die das Array mit String-Konstanten füllt.

In der speziellen Funktion start() verwende ich das Array dann nur zum Lesen von Daten.

Einige Zeit später werden andere Daten das Feld füllen. D.h., wenn ich den EA ausführen, erwarte ich, dass das Array unverändert bleibt, während der EA arbeitet, aber die Daten irgendwie bekommt in das Array, und nur nach einiger Zeit (mehr als 10 Minuten). Wenn ich den Expert Advisor neu starte, wird das Array so gefüllt, wie es sein sollte, aber einige Zeit später enthält das Array aus Gründen, die ich nicht verstehe, wieder falsche Werte.

Der einzige Ausweg ist, das Array in der start() ständig neu zu laden, aber das gefällt mir nicht wirklich, denn das Array sollte eigentlich nur während der Initialisierung gefüllt werden.

Was könnte das Problem sein? Wie kann man das Array vor Änderungen schützen?
Kann ich den Code sehen?
Grund der Beschwerde: