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
Bitte sagen Sie mir, wie ich richtig mit einem Array arbeiten kann, dessen Elemente Mqlrates-Strukturen sind.
Das ist genau das, was ich wissen möchte:
MqlRates AdaptedRates[];
ArraySetAsSeries(AdaptedRates,true);
AdaptedRates[300].open=1;
Der Debugger gibt einen Fehler aus - Ungültiger Array-Zugriff.
Ich habe verstanden, dass wir mit dieser Form der Aufzeichnung nur Elemente einer Struktur lesen können, die ein Element eines Arrays ist.
Die Frage ist, wie man die Strukturelemente richtig schreibt . Ich interessiere mich nicht für alle, wichtig ist der Preis von .open .high .low .close.
Ich entschuldige mich im Voraus für diese Frage wahrscheinlich sehr trivial (ich bin nicht der Programmierer), aber in der Hilfe habe ich nicht die Antwort gefunden. Ich werde für jede Hilfe dankbar sein.
Legen Sie die Größe des Arrays fest. ArrayResize
Soweit ich weiß, kann ich bei der Definition der Größe, z. B.
:) Sie setzen kein statisches Array, sondern setzen die dynamische Array-Größe mit ArrayResize().
Nun, etwa: ArrayResize(AdaptedRates,302); usw.
Sie verwenden ein dynamisches Array AdaptedRates[]. Soweit ich mich erinnere, sollten Sie bei der Arbeit mit dynamischen Arrays deren Größe mit der Funktion ArrayResize() festlegen. Und bis jetzt stürzt der Compiler bei dem in der dritten Zeile angegebenen Index 300 ab.
Dies ist ein Zitat aus der Hilfe.
Swan, Yedelkin, vielen Dank für die schnelle Antwort.
Soweit ich das verstanden habe, kann ich, wenn ich eine Größe definiere, z. B.
ja.
MqlRates AdaptedRates[];//dadurch bleibt das Array dynamisch
ArrayResize(AdaptedRates,302);//und die richtige Größe einstellen
:) Sie setzen kein statisches Array, sondern ein dynamisches Array mit ArrayResize().
Nun, wie ArrayResize(AdaptedRates,302); usw.
Eine Panne im Strategietestprogramm.
Plötzlich hält er an und alle lokalen und entfernten Agenten sind fertig und bleiben hängen.
Können Sie mir sagen, wie ich wieder anfangen kann, es ist schade, wieder von vorne anzufangen?Vielen Dank für die beliebte Erklärung, soweit ich verstehe, ist es wünschenswert, ArrayResize es auf die erforderlichen Grenzen vor jedem Verweis auf eine dynamische Array-Zelle , ich werde es versuchen.
Anmerkung. Nur bei Indikatorpuffern ist dies nicht erforderlich. Das ausführende Subsystem des Terminals erledigt dies selbst.
Anmerkung 2:ArrayResize() sollte vorzugsweise nur dann angewendet werden, wenn es notwendig ist, die Größe eines dynamischen Arrays zu ändern, und nicht vor jedem Zugriff auf dessen Elemente. Es kann durchaus sein, dass einem dynamischen Array einmal eine Größe zugewiesen wird und das Programm dann einfach auf seine Elemente zugreift.
Anmerkung. Nur bei Indikatorpuffern ist dies nicht erforderlich. Das ausführende Subsystem des Terminals erledigt dies selbst.
Anmerkung 2:ArrayResize() sollte vorzugsweise nur dann angewendet werden, wenn es notwendig ist, die Größe eines dynamischen Arrays zu ändern, und nicht vor jedem Zugriff auf dessen Elemente. Es kann durchaus sein, dass ein dynamisches Array einmal dimensioniert wird und das Programm dann einfach auf seine Elemente zugreift.