Fehler, Irrtümer, Fragen - Seite 202

 
Interesting:

Im Gegensatz zu MT4 bedeutet die Periode nicht die Anzahl der Sekunden in einer Periode.

Lesen Sie genauer, ich habe über _Period geschrieben, nicht über PeriodSeconds. Und verstopfen Sie die Seite bitte nicht mit Ihren Wahrnehmungsfehlern.
 
ANG3110:
Es wurde nie die Anzahl der Sekunden angezeigt, auch nicht im MT4... Aber die Minuten in MT4 zeigten es deutlich. Was zeigt _Period auf dem H1-Diagramm dann an? Das scheint mir ein schwerwiegender Fehler zu sein.
ANG3110:
Lesen Sie genau, ich schrieb über _Period, nicht über PeriodSeconds. Und verstopfen Sie die Seite bitte nicht mit Ihren Wahrnehmungsfehlern.
Bereits behoben. Der allgemeine Punkt ist, mit PeriodSeconds erhalten wir genau Sekunden in einer Periode, und dann tun, was auch immer Sie mit ihnen mögen...

H1 = 16385 ist also kein Unsinn, es ist die numerische Darstellung von H1 in ENUM_TIMEFRAMES.


Period-u-Hilfe lesen

Zeitraum

Gibt den Zeitrahmenwert des aktuellen Diagramms zurück.

ENUM_TIMEFRAMESZeitraum();

Zurückgegebener Wert

Inhalt der Variablen _Period , die den Zeitrahmenwert des aktuellen Diagramms enthält. Wert kann einer derAufzählungswerte ENUM_TIMEFRAMESsein .

PS

Es wird alsonicht die Anzahl der Minuten zurückgegeben, die der Periode entsprechen (wie es in MT4 der Fall war), sondern das Element der Aufzählung ENUM_TIMEFRAMES(oder seine numerische Darstellung, falls erforderlich)...

 
Interesting:
Bereits korrigiert. Die allgemeine Idee ist diese: mit PeriodSeconds erhalten wir genau Sekunden in einer Periode und dann tun, was Sie mit ihnen wollen...

H1 = 16385 ist also kein Unsinn, sondern eine numerische Darstellung von H1 in ENUM_TIMEFRAMES.

Verdammt, was für ein Schlamassel. Früher war alles einfach und leicht - schreiben Sie einfach Period() und Sie erhalten Minuten. Jetzt bekommen Sie einige Dienstkennungen, die Sie für Ihre Arbeit nicht wirklich brauchen. Ok, ich werde versuchen, die Minuten in Sekunden zu bekommen.
 

Wenn ich also _Period auf H1 abfrage und dieses ENUM_TIMEFRAMES= 16385 erhalte , wie kann ich dann die Minuten abrufen?

Aber natürlich ist die Division PeriodSeconds()/60 nichts wert. Aber was sind diese Identifikatoren und wie kann man mit ihnen arbeiten?

 
ANG3110:

Wenn ich also _Period auf H1 abfrage und dieses ENUM_TIMEFRAMES= 16385 erhalte , wie kann ich dann die Minuten abrufen?

Ich verwende diese Funktion seit 11 Monaten in meiner Migrationsbibliothek und sie hat bisher gut funktioniert.

//Fumction PeriodToMinute
int PeriodToMinute(ENUM_TIMEFRAMES Value)
{
//----------------------------------------------------------------------------//
//Work variables
int Result; //Returned importance
//----------------------------------------------------------------------------//
Result = PeriodSeconds(Value)/60;
//----------------------------------------------------------------------------//
return(Result);
//----------------------------------------------------------------------------//
}

ANG3110:

Obwohl Sie natürlich PeriodSeconds()/60 durch sich selbst teilen sollten. Aber dennoch, welche Art von Identifikatoren das sind und wie man mit ihnen arbeitet.

Diese Frage kann auf die Grundlagen von OOP bezogen werden. Sie betrifft Identifikatoren und Aufzählungszeichen. Einzelheiten entnehmen Sie bitte der Referenz oder einem guten Buch über C++-Programmierung.

Dies wurde bereits in MQL4 implementiert, ist aber nicht so offensichtlich.

Jeder Bezeichner (unabhängig davon, ob er in MQL5 geschrieben oder von einem Benutzer erstellt wurde) kann seine eigene "Zahlendarstellung" haben.

Um es einfach auszudrücken (ich erkläre es so gut ich kann)...

Sie können denken, es ist für externe Umgebung Kompatibilität, z. B. DLL oder eine andere (die keine Ahnung über MQL und seine Bezeichner hat).

Wenn Sie also in einem MQL5-Programm mit einem Punkt arbeiten müssen, wäre es sinnvoll, den Bezeichner PERIOD_H1 der Aufzählung ENUM_TIMEFRAMES zu verwenden.

Wenn Sie jedoch der externen Umgebung (z. B. DLL) mitteilen müssen, dass wir mit der Periode H1 arbeiten, ist es einfacher, dies mit der numerischen Darstellung dieses Bezeichners zu tun, in unserem Fall ist es 16385.

 
ANG3110:

Wenn ich also _Period auf H1 abfrage und dieses ENUM_TIMEFRAMES= 16385 erhalte , wie kann ich dann die Minuten abrufen?

Aber natürlich ist die Division PeriodSeconds()/60 nichts wert. Aber was sind diese Identifikatoren und wie sollte ich mit ihnen arbeiten?

wie diese

int minute = PeriodSeconds(_Period)/60;
 
Interesting:

Ich verwende diese Funktion seit 11 Monaten in meiner Migrationsbibliothek, und bis jetzt hat sie gut funktioniert.

Ich hab's. Vielen Dank für die Antwort!
 
sergey1294:

wie diese

Auch Ihnen vielen Dank!
 

Die Entwickler.

1. OHLC-String beginnt unter bestimmten Bedingungen zu blinken. Aufgedeckt beim Testen von EA auf einem Single-Core-Computer (CPU wahrscheinlich überlastet)...

2. Ist es möglich, die Liste der Klassen und ihrer Funktionen (das Stuffing) im Navigator zu platzieren, so wie es in Delphi gemacht wird (weil es nicht sehr bequem ist, mit der Liste der Prozeduren und Funktionen eines Moduls zu arbeiten)?

 
Ashes:

Es wurde versucht, den Testerbericht im Open XML-Format zu speichern. Minutenlanges Warten (Pentium 4, 3,0 GHz), die Anwendung reagierte nicht, der Prozess terminal.exe im Task-Manager lief auf Hochtouren (ca. 50 % der CPU) und verbrauchte den Arbeitsspeicher (ca. 250 MB), Ergebnis - nichts. MT5 antwortet nur, es kommen keine Kurse rein (Verbindungsstatusanzeige mit grauem Kreis). Bei einem zweiten Versuch ist es dasselbe. Das Fenster "Tools" hat 2 Journaleinträge "MemoryException 107878464 bytes not available", wobei der Zeitpunkt dem Versuch entspricht, einen Bericht in OpenXML zu empfangen.
Die HTML-Datei wurde fast sofort erstellt (etwa 12 MB). Das Öffnen dauert sehr lange, aber das ist nicht die Schuld von MT5...

Ich wiederhole. Alles wie gehabt, aber mit dem Build 358. Aber es braucht noch mehr Zeit. Es besteht eine Abhängigkeit von der Berichtsgröße - kurze Berichte werden problemlos verarbeitet.
Grund der Beschwerde: