Fehler, Irrtümer, Fragen - Seite 2932
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
Fehler in der Beschreibung:
Struktur eines Handelsgeschäfts (MqlTradeTransaction)
Dieses Feld heißt: time_type
Ich versuche, dem Benutzer die Möglichkeit zu geben, beide Zeitrahmen und deren Anzahl aus dem Menü des Indikatoreinrichtungsfensters auszuwählen:
und ich möchte, dass die ausgewählten Zeiträume direkt in PArray gespeichert werden. Aus dem obigen Beispiel geht jedoch hervor, dass ich dem Array die im Programm voreingestellten Werte zuweise und nicht die von einem Benutzer eingegebenen Werte. Darüber hinaus erzeugt der Compiler Warnungen:
Wenn ich versuche, die letzte Zeile zu ersetzen durch:
erzeugt der Compiler insgesamt einen Fehler:
Außerdem bedeutet NO_PERIOD=0PERIOD_CURRENT, und das brauche ich nicht, ich brauche etwas wie false oder EMPTY_VALUE, aber die passen überhaupt nicht.
Wie kann ich es reparieren?
Ich habe es fast geschafft.
Sagen Sie mir, welche Methoden der Bekämpfung gibt es für das Abfangen und Korrigieren von "Array out of range" Fehler?
ArrayResize() vor dem Schreiben eines Array-Elements die Anzahl der Elemente zählen und dort eingeben, die im Array sein sollen, oder ein dynamisches Array verwenden, das selbst fett wird. Du gehst einfach über das Array hinaus, z. B. gibst du eine Größe von 100 Elementen an, aber da das erste Element die Nummer 0 ist, kommen manche Leute durcheinander. Wenn du die Zahlen in eine Reihe schreibst, passen 0-99. Ich bin kein professioneller Programmierer, wenn überhaupt (aber ich kann), das erste, was in meinem Kopf kam, es funktioniert)))
Führen Sie ArrayResize() aus, bevor Sie ein Element des Arrays schreiben, zählen Sie die Anzahl der Elemente, die im Array sein sollen, und geben Sie sie dort ein, oder verwenden Sie ein dynamisches Array, das selbst wächst.
Eigentlich ist es sowieso dynamisch. Aus der Hilfe:"Die Funktion kann nur auf dynamische Arrays angewendet werden. Beachten Sie, dass dynamische Arrays, die von der Funktion SetIndexBuffer() als Indikatorpuffer zugewiesen werden, nicht in ihrer Größe verändert werden sollten. Bei Indikatorpuffern werden alle Größenänderungsoperationen vom ausführenden Subsystem des Terminals durchgeführt. "Aber es ist kein Indikatorpuffer, man muss also mit den Händen und dem Kopf denken...
Eigentlich ist sie bereits dynamisch. Aus der Hilfe:"Die Funktion kann nur auf dynamische Arrays angewendet werden. Sie sollten bedenken, dass dynamische Arrays, die von der Funktion SetIndexBuffer() als Indikatorpuffer zugewiesen werden, nicht in ihrer Größe verändert werden können. Bei Indikatorpuffern werden alle Größenänderungsoperationen vom ausführenden Subsystem des Terminals durchgeführt. "Aber es ist kein Indikatorpuffer, also musst du mit deinen Händen und deinem Kopf denken...
Das Problem, solche Fehler abzufangen, wird nur durch die Verwendung von "Schichten" gelöst, z. B. durch eine benutzerdefinierte Array-Klasse, die die Adressierung abfängt.
Wenn der EA bei deaktiviertem Algotrading gestartet und dann das Algotrading aktiviert wird:
Dem Fehlercode zufolge bleibt das Handelsverbot bestehen, obwohl die Eigenschaft TERMINAL_TRADE_ALLOWED wahr ist
Das Ergebnis sollte wie folgt aussehen:
Offensichtlich sollte es immer ArraySize(Arr)=1 sein. Dies ist der Fall bei erfolgreichem Kopieren. Aber in welchen Fällen könnte das Kopieren der Bar scheitern? Wenn derFehler "array out of range" auftritt, zeigt das Terminal auf Arr[0].
Habe den Fehler doch noch gefunden, Zitat aus der Hilfe:
4401
Angeforderter Verlauf nicht gefunden.
In das Logbuch ausgedruckt - verstanden:
Was mache ich jetzt damit, wohin soll ich gehen? Bin ich ein schlechtes Blatt oder...? Ich kopiere ja nur einen Balken von 0 auf 1. Wie kann sie (die Geschichte) nicht sein? Dies umso mehr, als der Fehler nicht immer vorhanden ist. Oder muss man den Verlauf vorher zwangsweise überprüfen und herunterladen?