[ARCHIV]Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Ohne dich kann ich nirgendwo hingehen - 5. - Seite 212

 
Ist es möglich, die Anzahl der Balken nach JEDER MA-Kreuzung zu zählen.Nach der letzten MA-Kreuzung funktioniert es, aber nach JEDER MA-Kreuzung nicht.Weiß jemand, wie man es macht?
 
MK07:
Wenn wir die Anzahl der Balken nach JEDEM MA-Durchgang prüfen wollen, können wir die Anzahl der Balken nach dem letzten, aber nicht nach JEDEM Balken berechnen.

Das hängt davon ab, wofür Sie es brauchen. Für einen EA ein Algorithmus, für einen Indikator - ein anderer.

Im Allgemeinen etwa wie folgt: Wir erstellen eine Variable, in der wir die Anzahl der Kreuzungen speichern werden. Sie können zwei Variablen erstellen - für oben und für unten, z. B. Intersection_UP undIntersection_DN.

Vor der Schleife werden sie mit Nullen initialisiert.

Schleife vom ersten Balken bis Balken erstellen: for (int i=1; i<Balken; i++) { // Schleifenkörper, in dem wir die Schnittpunkte zählen ... }.

Bei jedem Schnittpunkt auf Balken i erhöht sich ma1 von unten nach oben ma2 Schnittpunkt_UP, bei jedem Schnittpunkt auf Balken i erhöht sich ma1 von oben nach unten ma2 Schnittpunkt_DN.

Am Ende des Zyklus haben wir in zwei Variablen die Anzahl der Überfahrten nach oben und unten. Addieren Sie sie, um die Gesamtzahl der Kreuzungen zu erhalten

 
MK07:
Ist es möglich, die Anzahl der Balken nach JEDER MA-Kreuzung zu zählen.Nach der letzten MA-Kreuzung funktioniert es, aber nach JEDER MA-Kreuzung nicht.Weiß jemand, wie man es macht?

Das ist ganz einfach. Sie reparieren die Kreuzung und erstellen einen Zähler. Bei einer Überkreuzung fügt der Zähler pro Überkreuzung 1 Takt hinzu. Bei einer Überkreuzung beginnt ein weiterer Zähler mit der Zählung.
 
alsu:

Wir verstehen uns offenbar nicht.

Im Allgemeinen wird der Ort des Problems definiert - die Variable Statik.

Aber warum funktioniert eine Funktion mit dieser Variablen, die in der gleichen Datei mit dem Indikator kompiliert wurde, ohne Probleme (die Reinitialisierung ist erfolgreich und alles funktioniert gut), aber wenn ich die gleiche Funktion in der Bibliothek anspreche, habe ich Probleme?

Vielleicht gibt es einige Einschränkungen für die Verwendung bestimmter Typen in den Bibliotheksfunktionen?

 
Hallo?
 
polycomp:

Im Allgemeinen wird der Ort des Problems definiert - die Variable Statik.

Aber warum die Funktion mit dieser Variable, in der gleichen Datei mit dem Indikator kompiliert funktioniert ohne Probleme (Reinitialisierung ist erfolgreich und alles funktioniert gut), aber wenn ich die gleiche Funktion, in der Bibliothek platziert Adresse, gibt es Probleme?

Vielleicht gibt es einige Einschränkungen für die Verwendung bestimmter Typen in den Bibliotheksfunktionen?



Ich bin kein Entwickler und kann nur Vermutungen anstellen. Ich gehe also davon aus, dass bei einer Neuinitialisierung nach einer Änderung der Parameter ex4 nicht aus dem Speicher entladen wird, so dass wir bei einem Neustart die gleiche Kopie der Bibliothek wie zuvor erhalten, mit allen statischen Werten und ihren alten Werten.

Im Prinzip sollten alle statischen Eigenschaften des Programms vor dem Aufruf von init() initialisiert werden. Die ex4-Bibliothek wird jedoch nur unmittelbar beim ersten Aufruf der Bibliotheksfunktion geladen, so dass keine Bibliotheksstatiken in den allgemeinen Heap gelangen.

Wenn man das Ganze so betrachtet, ist die Erklärung recht logisch.

 

Hier ist die FunktionStringGetChar https://docs.mql4.com/ru/objects/ObjectFind

Warum ist sie überhaupt notwendig?

Laut Lehrbuch gibt sie den Wert eines Zeichens als Zahl zurück. Dort entspricht"c" dem Wert 99. Wie kann ich das verstehen? Welchen Nutzen hat diese Funktion?

Es gibt also eine Zahl zurück... ...und was macht es?

Ich möchte lernen, mit Zeichenketten zu arbeiten, und bin daher auf diese Funktion gestoßen. Das ist der Grund für meine Frage.

 
alsu:

Ich bin kein Entwickler und kann nur spekulieren. Ich gehe also davon aus, dass ex4 bei der Neuinitialisierung nach Parameteränderungen nicht aus dem Speicher entladen wird, so dass wir beim Neustart die gleiche Kopie der Bibliothek wie zuvor erhalten, mit allen statischen Werten und ihren alten Werten.

Im Prinzip sollten alle statischen Werte des Programms vor dem Aufruf von init() initialisiert werden. Die ex4-Bibliothek wird jedoch nur unmittelbar beim ersten Aufruf der Bibliotheksfunktion geladen, so dass keine Bibliotheksstatiken in den allgemeinen Heap gelangen.

Wenn man die ganze Sache so betrachtet, ist die Erklärung recht logisch.


Danke für die Klarstellung! Es sieht so aus, als ob es besser ist, Statik in Bibliotheken nicht zu verwenden.
 

Ich habe ein Array mit 3000 Werten desselben Typs im Kopf.

Aber ich verstehe nicht ganz, wie man ein eindimensionales Array mit diesen Werten initialisiert.

Ich verstehe nicht - sollte ich alle 3000 Werte durch Komma getrennt im Zuweisungsoperator angeben, wenn ich ein Array initialisiere

int Mas_i[3000]= { (Bid>1.2153)&&(Bid<1.2160) , (Bid>1.2156)&&(Bid<1.2163) ...muss ich wirklich alle 3000 Ausdrücke auflisten?}

Bitte geben Sie mir einen Tipp oder sagen Sie mir, wo ich nachlesen kann. Ich kann in der Anleitung von S.Kovalev..... keine Antwort auf diese Frage finden oder ich verstehe sie nicht.

Ich danke Ihnen.

 
hoz:

Hier ist die FunktionStringGetChar https://docs.mql4.com/ru/objects/ObjectFind

Warum ist sie überhaupt notwendig?

Laut Lehrbuch gibt sie den Wert eines Zeichens als Zahl zurück. Dort entspricht"c" dem Wert 99. Wie kann ich das verstehen? Welchen Nutzen hat diese Funktion?

Es gibt also eine Zahl zurück... ...und was macht es?

Ich möchte lernen, mit Zeichenketten zu arbeiten, und bin daher auf diese Funktion gestoßen. Das ist der Grund für meine Frage.


Zum Eintragen in die Tabelle (nicht zu verwechseln mit dem Kommentar) muss ein numerischer Code eingegeben werden. Wenn du 99 schreibst, erscheint der Buchstabe "s" in der Tabelle. Ich habe es noch nicht gemacht, aber man kann im Dock nachlesen, wie man das alles macht, und mit welcher Schriftart, Größe, X- und Y-Achsenausrichtung in Pixeln usw. Wenn das schon alles ist, was Ihnen fehlt, dann machen Sie es, aber es wird viel Zeit kosten! Viel Glück!