Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 189
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
Wie unterscheidet sich Metatrader 5 von den vorherigen 4 ist schwieriger, mit oder nicht zu arbeiten. Jeder Makler bietet diese Programme an. Warum gibt es nicht ein Programm für alle Makler, damit man nicht viele davon installieren muss?
Ich versuche, eine Funktion zu erstellen, die das Ergebnis der letzten geschlossenen Position (plus oder minus) zurückgibt . Diese Funktion ist für einen Multicurrency Expert Advisor gedacht und soll die letzte geschlossene Position aus allen Währungspaaren auswählen, und ich habe einige Probleme damit. Können Sie die Funktion korrigieren?
OBJ_ALL_PERIODS=2097151
Was meinen Sie mit: nicht verwendete Methoden in Ihren Klassen? Dies ist in der OOP nicht der Fall. Ein normaler OOP-Programmierer erstellt im Gegensatz zur algorithmischen Programmierung Klassen mit allen notwendigen Feldern und Methoden, wie man so schön sagt, für alle Fälle, denn dieselbe Klasse kann später in anderen Anwendungen verwendet werden oder Teil einer Klassenbibliothek werden. Ganz zu schweigen von der Tatsache, dass es selbst innerhalb eines Projekts besser ist, vollständige Klassen zu erstellen und nicht nur abgespeckte, damit Sie nicht den Quellcode durchsuchen und später die erforderlichen Felder und Methoden hinzufügen müssen.
In der OOP kann sich jede Sparsamkeit, an die sich viele Menschen bei der algorithmischen Programmierung gewöhnen, später als nachteilig erweisen. Alles, was nicht verwendet wird, muss vom Compiler und nicht vom Programmierer aus dem Code ausgeschlossen werden.
Natürlich führt OOP im Vergleich zur algorithmischen Programmierung zu einem größeren Quellcode. Dies ist jedoch kein Nachteil, sondern ein Vorteil, da ein Großteil des "unnötigen" Codes in einem bestimmten Projekt in anderen Projekten wiederverwendet werden kann.
Es ist nicht nötig, ein Rätsel zu machen, d.h. alles in einer Klasse. Sie müssen Klassenbibliotheken erstellen, d. h. die Funktionalität in einzelne Klassen aufteilen und nicht vergessen, Kommentare zu diesem Lehen hinzuzufügen, dann ist alles in Ordnung. Als ich nach Pascal anfing, Java zu lernen, versuchte auch ich, alles in einem Stück zu machen, d.h. statt OOP zu verwenden, erstellte ich eine Klasse mit allem, was ich für eine bestimmte Aufgabe brauchte, genau wie in der algorithmischen Programmierung. Das Ergebnis war ein nicht universelles Durcheinander, das später nirgendwo mehr angewendet werden konnte, ganz zu schweigen davon, dass es schwierig war, einen solchen Code zu verstehen.Ich verstehe das alles sehr gut. Aber können wir Ihnen wenigstens private Variablen zeigen, die nicht verwendet werden, wie es in VisualStudio gemacht wird?
Der Punkt ist, dass die Klassen während des Entwicklungsprozesses entworfen werden. Man kann einfach nicht alles vor der Schöpfung berücksichtigen. Aus diesem Grund werden Rahmenklassen mit möglichst wenig Funktionalität erstellt. Durch die Interaktion mit diesen Rahmenklassen wird die Gesamtarchitektur ausgearbeitet. Einige Methoden werden einfach gelöscht, andere werden in den privaten Bereich verschoben und wieder andere werden von einer Klasse in eine andere migriert. Dabei tauchen unweigerlich vergessene Variablen, Methoden und sogar ganze Klassen auf. Das ist normal, denn es ist so etwas wie das Okama-Prinzip in Aktion - zuerst schreiben wir schlechten, redundanten Code. Dann formalisieren wir die Aufgabe deutlicher und einige der Einheiten verschwinden einfach. Redundanz hat keinen Sinn. Und in diesem Prozess wäre die Hilfe des Compilers sehr nützlich - unbenutzte Variablen und zumindest private Methoden zu sehen, wäre sehr nützlich.
Hallo.
Ich verstehe, dass die FunktionOnCalculate(), die in den Indikatoren verwendet wird, von selbst generiert wird, d. h. ohne das Preisänderungsereignis ,
Welche Funktion kann im Indikator angewandt werden, die nur dann generiert wird, wenn ein Preisänderungsereignis eintritt? Dankeschön
Hallo.
Ich verstehe, dass die FunktionOnCalculate(), die in den Indikatoren verwendet wird, von selbst generiert wird, d. h. ohne das Preisänderungsereignis ,
Welche Funktion kann im Indikator angewandt werden, die nur dann generiert wird, wenn ein Preisänderungsereignis eintritt? Dankeschön
Das EreignisBerechnen wird für Indikatoren unmittelbar nach dem Ereignis Init und bei jeder Änderung der Preisdaten erzeugt. Sie wird von der FunktionOnCalculate behandelt. Wenn die Historie geändert wird (wenn die Historie geblättert wird), erzeugt dieses Ereignis auchOnCalculate.
OnCalculate ist die wichtigste Funktion für den Indikator, in der alle Berechnungen des Indikators im Falle von Preisdatenänderungen durchgeführt werden.
Das EreignisBerechnen wird nur für Indikatoren unmittelbar nach dem Senden des Ereignisses Init und bei jeder Änderung der Preisdaten erzeugt. Dieses Ereignis wird von der FunktionOnCalculate behandelt. DasselbeOnCalculate wird erzeugt, wenn der Verlauf geändert wird (wenn der Verlauf blättert).
OnCalculate ist die wichtigste Funktion für den Indikator, in der alle Berechnungen des Indikators im Falle von Preisdatenänderungen durchgeführt werden.
Hier gibt es eine Schleife, d.h. es wird immer erzeugt, und wenn sich die Periode ändert, ändern sich auch die Messwerte. Worin besteht der Fehler?
#property copyright "Copyright 2014, MetaQuotes Software Corp.ArraySetAsSeries(high_nachalo,true);
shift_nachalo=ArrayMaximum(high_nachalo,barUP-1,barDown-(barUP-1));Hier findet die Schleife statt, d. h. sie erzeugt ständig, und wenn sich die Periode ändert, ändern sich auch die Messwerte. Worin besteht der Fehler?
So fügen Sie den Code korrekt in das Forum ein.
Beachten Sie den Fehler:
Verwendung: