Die Sprache MQL5 von Grund auf selbst erlernen - Seite 78

 
Alexey Viktorov:

Ich würde dies tun.

Die Sache ist die, dass es sich um eine Funktion meines EA handelt, und die ist multiinstrumentell. Dann fügen Sie Symbole hinzu, und es wird nach allen verfügbaren Symbolen gesucht. Wenn sie gefunden wird, wird sie dem Marktbericht zur weiteren Verwendung mit diesem hinzugefügt. Die lokale Variable wird dann mit dem richtigen Symbolnamen geschrieben.

 
Vitaly Muzichenko:

Alexey, der Code ist ganz normal. Was nicht normal ist, ist die Eingabe mehrerer Zeichen in den Parameter, was wohl kaum jemand tun wird.

Ich habe ungefähr die gleiche Umsetzung in meinem Arbeitsprodukt.

Diese Implementierung funktioniert erfolgreich in einer Lösung mit mehreren Währungen, was man von anderen Codes nicht behaupten kann, d.h. der Code ist universell.

In der Frage gibt es keinen Hinweis auf eine Lösung mit mehreren Währungen. Deshalb heißt es, dass der Code die Anforderungen nicht erfüllt.

 

Und nur fürs Protokoll. Warum in beide Richtungen prüfen

StringFind(symbol, s, 0) >= 0 || StringFind(s, symbol, 0) >= 0

Narrensicher. Ich hatte einmal einen Kunden, der sich beschwerte, dass er ein Symbol eingegeben hatte, das aber nicht funktionierte. Es stellte sich heraus, dass sein Terminal ein reines Symbol anzeigte, es aber mit Zusätzen versah. Ich habe die zweite Richtung der Prüfung ohne langes Nachdenken hinzugefügt )))

 
Dann gibt es noch einen dritten Typ, der sich darüber empört, dass er den Namen des Symbols ohne Zusätze eingegeben hat, und die Grafik hat Zusätze, aber aus irgendeinem Grund hat der Expert Advisor funktioniert. Führen Sie daher einen genauen Vergleich durch, und wenn er nicht übereinstimmt, zeigen Sie eine Meldung an - "das Diagramm hat so-und-so-Symbol, und Sie geben so-und-so ein" - und überlassen Sie die Verantwortung dem Benutzer.
 
Dmitry Fedoseev:
Dann erscheint ein dritter Typ, der sich beschwert, dass er den Namen des Symbols ohne Zusätze eingegeben hat, während der Chart Zusätze hat, aber der Expert Advisor aus irgendeinem Grund funktioniert hat. Führen Sie daher einen genauen Vergleich durch, und wenn er nicht übereinstimmt, zeigen Sie eine Meldung an - "das Diagramm hat so-und-so-Symbol, und Sie geben so-und-so ein" - und überlassen Sie die Verantwortung dem Benutzer.

Das ist natürlich keine Option. Die Eingabe von reinen Zeichen ist für eine Person kein Problem. Und lassen Sie den Code die Suffixe/Präfixe selbst hinzufügen. Rein aus Gründen der Bequemlichkeit. Ich selbst bin kein Fan davon, den vollen Namen einer Figur auszugraben.
Sie können auch einfach die eingestellte Datei kopieren und das Programm ausführen. Sie brauchen nichts zu überschreiben. Wenn es Symbole gibt, werden sie automatisch angehängt.

 
Konstantin Nikitin:

Das ist natürlich keine Option. Die Eingabe reiner Zeichen ist für eine Person kein Problem. Und lassen Sie den Code die Suffixe/Präfixe selbst hinzufügen. Rein aus Gründen der Bequemlichkeit. Ich selbst bin kein Fan davon, den vollen Namen einer Figur auszugraben.

Foolproofing ist nie bequem)

 
Valeriy Yastremskiy:

Foolproofing ist nie bequem)

Es geht nicht so sehr um die Narrensicherheit. Es geht eher um die Bequemlichkeit des Kopierens einer bestimmten Datei. Ich habe mich bereits daran gewöhnt (man gewöhnt sich schnell an eine gute Sache) und merke nicht, wenn ich die Einstellungen übertrage. Ziemlich praktisch.
Obwohl die zweite Richtung und von Narren hinzugefügt )))

 
 MrBrooklin:

Hallo Alexey!

Um Ihre Kenntnisse in der Programmiersprache MQL5 zu verbessern, erklären Sie bitte, warum es keinen Unterschied zwischen void &array und void& array gibt?

Mit freundlichen Grüßen, Vladimir.

Ich weiß es nicht. Ich habe die Erfahrung gemacht, dass void & array auf die gleiche Weise funktionieren. Dies & bedeutet, dass die Variable als Referenz übergeben wird und nichts anderes. Ein Array als Eingabeparameter für eine Funktion wird nur per Referenz übergeben.
 
Alexey Viktorov:
Ich weiß es nicht. Ich habe aus Erfahrung gelernt, dass void & array trotzdem funktioniert. Dies & bedeutet, dass die Variable als Referenz übergeben wird und nichts anderes. Ein Array als Eingabeparameter für eine Funktion wird nur per Referenz übergeben.

Danke, Alexey! Ich werde das für die Zukunft im Hinterkopf behalten.

Frohe Weihnachten!

Mit freundlichen Grüßen, Vladimir.

 
MrBrooklin:

Danke, Alexey! Ich werde das für die Zukunft im Hinterkopf behalten.

Frohe Weihnachten!

Mit freundlichen Grüßen, Vladimir.

Artem Trishkin beantwortete mir dieselbe Frage, da es sich um einen Link (Großbuchstaben) handelt, der an jeder beliebigen Stelle stehen kann. für die Reinheit des Experiments sollte man es ohne Leerzeichen versuchen.

Grund der Beschwerde: