[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 701
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Ihr Hund bei der Übergabe von Parametern an die Funktion, wenn Sie sie als SaveDataIND(double TempIND[]) übergeben
double TempIND[ ] ist eigentlich ein neues Array für die Funktion, aber ohne das Recht, Parameter zu ändern, versuchen Sie SaveDataIND(double & TempIND[])
Ist es möglich, in einer Funktion zu übergeben, welcher Indikator zu verwenden ist, so dass in der Zeichenfolge
kein spezifischer Indikator ist, sondern als Funktionsparameter übergeben wird?
Machen Sie einen Schalter oder so etwas und schreiben Sie Ihre möglichen Indikatoren auf, indem Sie ihnen Indizes zuweisen.
Ist es möglich, in einer Funktion zu übergeben, welcher Indikator zu verwenden ist, so dass in der Zeichenfolge
kein spezifischer Indikator ist, sondern als Funktionsparameter übergeben wird?
Solche Aktionen werden in der Regel nicht durchgeführt - in der Regel werden die Daten an die Funktion gesendet, und die aufrufende Funktion bereitet die Daten/Array vor
es scheint, dass Ihre Konstruktion ArrayResize(TempIND,nBars); nicht korrekt ist, zumindest in anderen Programmiersprachen, der Compiler würde es nicht vermissen, da Sie double TempIND[50]; haben - d.h. das Array ist als statisch deklariert und sollte dynamisch sein (d.h. ohne Dimensionen) - double TempIND[];
ZS: und Verwirrung mit den Namen in den Variablen in der Funktion - vergessen Sie nicht, dass, wenn es eine globale Variable (global im Körper des EA), die Variable innerhalb der Funktion mit dem gleichen Namen deklariert wird völlig anders sein:
Dies wird gewöhnlich als Geltungsbereich von Variablen bezeichnet - benennen Sie das, was in der Funktion enthalten ist, in seinen Namen um, d.h. void SaveDataIND(double myTempIND[], int nBars) - das wird für weniger Verwirrung sorgenWo wird Lot initialisiert?
Dann erst nach der Prüfung auf Lose entweder Lots_New wie zuvor geschrieben ändern, oder ihm den Wert = Lot zuweisen;
Ich danke Ihnen! Es klappt alles!
Solche Aktionen werden in der Regel nicht durchgeführt - die Daten werden normalerweise an die Funktion gesendet, und die aufrufende Funktion bereitet die Daten/Arrays auf.
Sie scheinen die falsche ArrayResize(TempIND,nBars); Konstruktion zu haben, zumindest in anderen Programmiersprachen würde der Compiler es nicht vermissen, weil Sie double TempIND[50]; haben - d.h. das Array ist als statisch deklariert, während es dynamisch (d.h. ohne Dimensionalität) sein sollte - double TempIND[];
ZS: und Verwirrung mit den Namen in den Variablen in der Funktion - vergessen Sie nicht, dass, wenn es eine globale Variable (global im Körper des EA), die Variable innerhalb der Funktion mit dem gleichen Namen deklariert wird völlig anders sein:
dies wird normalerweise als Variablenbereich bezeichnet - benennen Sie die Dinge in der Funktion um, z.B. void SaveDataIND(double myTempIND[], int nBars) - weniger Verwirrung wird sein1. Also, Igor, sollte ich meine eigene absolut identische Funktion für jeden Indikator schreiben?
2. Danke, ich habe es vorsichtshalber korrigiert...
3. es verwirrt mich nicht - ich kann sehen, welches Feld wo verwendet wird, es ist irgendwie einfacher für mich, es umzukehren, aber wenn ich viele Namen habe, werde ich definitiv verwirrt... Obwohl... Ich sollte mich wohl daran gewöhnen, es richtig zu schreiben...
Ich danke Ihnen! Es klappt alles!
Überprüfen Sie die Öffnung einer neuen Kerze. Wenn neu, dann öffnen Sie, wenn alt, dann nicht...
Prüfen Sie, ob eine neue Kerze geöffnet wurde. Wenn neu, dann öffnen Sie, wenn alt, dann nicht...
static int time = Time[0];
if (time < Time[0]){
// alte Kerze
} sonst {
// neue Kerze
time = Time[0];
}