Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 506

 
Вадим Мотеюнас:
https://www.mql5.com/ru/docs/basis/operators
 
ArturR:

1. Ja, im Code gibt es einen Fall für den Nulldurchgang, ich habe keine Möglichkeit zu prüfen, welcher Fall jetzt getestet wurde, ich werde es heute Abend prüfen.

2. Ich habe es überprüft, indem ich einen Kommentar zum Diagramm mit Werten ausgegeben habe, macd, High und Low haben Werte, aber min(max)price bekommt keine entsprechenden Werte.

Ich müsste sehen, wie diese Variablen deklariert sind. Es besteht der Verdacht, dass es sich um lokale Variablen handelt, die bei jeder Eingabe in die Funktion auf Null zurückgesetzt werden. Das hat zur Folge, dass man in den Momenten, in denen sie sich mit Werten beschäftigen, einfach keine Zeit hat, sie zu sehen. Um die Werte zu sehen, sehen Sie sich den Inhalt des Protokolls an. Immerhin gibt es im Code Print.

 

Hallo. Ich habe eine Aufgabe, aus 1000 Zeilen einer CSV-Datei muss ich Parameterübereinstimmungen aus Feld N auswählen und jede Art von Wert aus anderen Feldern des gefundenen Datensatzes zurückgeben. Können Sie mir sagen, ob es einen Experten gibt, der die Datei durcharbeitet und Handelsentscheidungen trifft? Ich danke Ihnen.

 
mwwm:

Hallo. Ich habe eine Aufgabe, aus 1000 Zeilen einer CSV-Datei muss ich Parameterübereinstimmungen aus Feld N auswählen und jede Art von Wert aus anderen Feldern des gefundenen Datensatzes zurückgeben. Können Sie mir sagen, ob es einen Experten gibt, der die Datei durcharbeitet und Handelsentscheidungen trifft? Danke.

Wahrscheinlich müssen Sie in der Codebasis nach solchen suchen, die mit Nachrichten arbeiten.

 
Ihor Herasko:

Sie haben einfach keine Zeit zu sehen. Um die Werte zu sehen, schauen Sie sich den Inhalt des Logbuchs an. Immerhin gibt es im Code Print.

Ja, das ist es, vielen Dank.) Ich habe diesen Eintrag unter anderem Unsinn in der Zeitschrift nicht bemerkt. Nochmals vielen Dank an alle, die geantwortet haben, ich werde weiter aufräumen)

 
Wie der Index Bar zu berechnen, um den Wert entspricht der folgenden Logik: wenn die aktuelle Periode des Diagramms M15, und Timeframe des aufgerufenen Indikators mit Funktion (MTF) = H1, der Index bar 5, dh die Tatsache der Schließung der Bar H1, wenn die aktuelle Periode des Diagramms M30, und Timeframe des aufgerufenen Indikators mit Funktion (MTF) = H1, der Index bar 3, wenn die aktuelle Periode des Charts M5, und Timeframe aufgerufenen Indikator mit Funktion (MTF) = M15, der Index bar 4.
 
lil_lil:
Welche Berechnung des Balkenindexes muss erfolgen, damit der Wert der folgenden Logik entspricht: wenn die aktuelle Periode des Charts M15 und der aufgerufene Indikator Timeframe mit Funktion (MTF) = H1, der Index des Balkens 5, d.h. die Tatsache der Schließung des Balkens H1, wenn die aktuelle Periode des Charts M30 und der aufgerufene Indikator Timeframe mit Funktion (MTF) = H1, dann der Index des Balkens 3, wenn die aktuelle Periode des Charts M5 und der aufgerufene Indikator Timeframe mit Funktion (MTF) = M15, der Index des Balkens 4.

Der Fehler liegt hier in der Logik selbst. Der aktuelle TF könnte M15 sein, und der letzte M15-Balken, der dem gebildeten H1-Balken entspricht, wäre 1. Oder er könnte 2, 3 oder 4 sein, aber nicht mehr. Zum Beispiel ist es jetzt 10:06 Uhr. Die Indizes der aktuellen M15- und H1-Balken sind 0, die vorherigen Balken in beiden TFs sind 1 und der letzte M15-Balken, der dem geschlossenen H1 entspricht, ist ebenfalls 1. Um 10:15 Uhr wird sich die Situation ändern: der letzte M15-Balken, der den H1 gebildet hat, wird einen Index 2 haben, um 10:30 Uhr wird er 3 sein und um 10:45 Uhr wird er 4 sein.

Mathematische Berechnungen werden hier nicht viel helfen. Wir müssen nach den entsprechenden Balken im Diagramm suchen. Der Algorithmus sieht wie folgt aus:

  1. Bestimmen Sie den Zeitpunkt der Öffnung des Nullbarrens H1. (iTime)
  2. Identifizieren Sie den Index des ersten Balkens des aktuellen Zeitrahmens, der der Eröffnungszeit des H1-Nullbalkens entspricht. (iBarShift)
  3. Addieren Sie 1 zu dem gefundenen Balkenindex.

 
Ihor Herasko:

Der Fehler liegt hier in der Logik selbst. Der aktuelle TF könnte M15 sein, und der letzte M15-Balken, der dem gebildeten H1-Balken entspricht, wäre 1. Oder er könnte 2, 3 oder 4 sein, aber nicht mehr. Zum Beispiel ist es jetzt 10:06 Uhr. Die Indizes der aktuellen M15- und H1-Balken sind 0, die vorherigen Balken in beiden TFs sind 1 und der letzte M15-Balken, der dem geschlossenen H1 entspricht, ist ebenfalls 1. Um 10:15 Uhr wird sich die Situation ändern: der letzte M15-Balken, der den H1 gebildet hat, wird einen Index 2 haben, um 10:30 Uhr wird er 3 sein und um 10:45 Uhr wird er 4 sein.

Mathematische Berechnungen werden hier nicht viel helfen. Wir müssen nach den entsprechenden Balken im Diagramm suchen. Der Algorithmus sieht folgendermaßen aus:

  1. Bestimmen Sie den Zeitpunkt der Öffnung des Nullbarrens H1. (iTime)
  2. Identifizieren Sie den Index des ersten Balkens des aktuellen Zeitrahmens, der der Eröffnungszeit des H1-Nullbalkens entspricht. (iBarShift)
  3. Addieren Sie 1 zu dem gefundenen Balkenindex.

Wahrscheinlich habe ich nicht alles gesagt. Der Indikator zeichnet auf den Null-Balken des oberen Zeitrahmens, bedingt H1, bzw. für alle 4 Balken des aktuellen Zeitrahmens, M15. Deshalb benötige ich Index 5 auf M15, um zu wissen, ob es ein Signal bei H1-Schluss gibt. Sicherlich ist es möglich, diesen Index zu berechnen, um zu vermeiden, dass für jede Variante der Kombinationen von Hoch- und Tiefpunkten eine Reihe von Bedingungen geschrieben werden muss.

input ENUM_TIMEFRAMES   TimeFrame=PERIOD_H1;
//  
 if(TimeFrame == PERIOD_H1&&Period()==M15) timef = 5;//timef = 4;

   if(TimeFrame == PERIOD_H1&&Period()==M30) timef = 3;//timef = 2;


Ajk=NormalizeDouble(iCustom(NULL,0,"Ajk",TimeFrame,4,i+timef),Digits);
 
lil_lil:

Der Indikator bezieht sich auf den Null-Balken des höheren Zeitrahmens, in der Regel H1, bzw. während aller 4 Balken des aktuellen Zeitrahmens, M15.

Das ist, was ich sage, die Balken des aktuellen Zeitrahmens können kleiner sein - 1, 2 oder 3. Das heißt, die Messwerte werden nicht immer auf 4 Balken angezeigt. Der einzige Fall, in dem 4 Balken angezeigt werden, ist der letzte Balken des aktuellen TF, der einem Null-Balken H1 entspricht. Bei dieser Formulierung des Problems müssen wir nur den ersten Balken der aktuellen TF finden, der dem Null-Balken H1 entspricht:

int nCurTFBarIndex = iBarShift(NULL, 0, iTime(NULL, PEPRIOD_H1, 0));

Dann werden die Daten ab dem Null-Bar des aktuellen TFs bis einschließlich nCurTFBarIndex angezeigt.

Deshalb benötige ich den Index 5 speziell auf dem M15 TF, um beim H1-Schluss herauszufinden, ob es noch ein Signal gibt oder nicht. Sicherlich ist es möglich, diesen Index zu berechnen, um zu vermeiden, dass für jede Variante der Kombination von höherer und aktueller Periode ein Bündel von Bedingungen geschrieben werden muss.

Von welcher TF stammt das Signal: von der aktuellen, von der H1 oder einer gemischten Version? Wenn nur von H1, dann gibt es keine Notwendigkeit, für etwas überhaupt zu suchen, weil der letzte gebildete Bar wird immer den Index 1.

 
Ihor Herasko:

Von welcher TF wird das Signal genommen: Strom, H1 oder eine gemischte Version? Wenn nur von H1, dann gibt es keine Notwendigkeit, für etwas überhaupt zu suchen, weil der letzte gebildete Bar wird immer den Index 1.

Ich platziere H1 in den externen Einstellungen des MTF-Indikators und hänge ihn an den M15-Chart an. Das Signal blinkt 4 Takte lang. Wenn der Takt H1 geschlossen ist, blinkt das Signal nicht und bei M15 hört das Signal bei Takt 4 auf zu blinken. Wenn ich ihn auf М1 stelle, hört er bei Takt 60 auf zu blinken. Es ist notwendig, den Index i+N so zu berechnen, dass N je nach der in den Einstellungen gewählten Periode und dem Diagramm der Periode, in der der Indikator angebracht ist, variiert.

input ENUM_TIMEFRAMES   TimeFrame=PERIOD_H1;
//  
 if(TimeFrame == PERIOD_H1&&Period()==M15) N = 5;// ВОЗМОЖНО НУЖНО N = 4;

   if(TimeFrame == PERIOD_H1&&Period()==M1) N = 61;//А ЗДЕСЬ ВОЗМОЖНО N = 60;