Fehler, Irrtümer, Fragen - Seite 1178

 
svds75:
Nein, ich muss sie manuell einstellen und programmatisch überprüfen.
Dann muss ich das Sichtbarkeitskennzeichen lesen und eine logische & mit der Konstante durchführen.
 

Zum Beispiel so:

   long cf=ObjectGetInteger(0,"name",OBJPROP_TIMEFRAMES);
   Alert(((cf&OBJ_PERIOD_H1)==OBJ_PERIOD_H1) || cf==0);
Wenn das Sichtbarkeitsflag auf H1 gesetzt ist, ist es wahr.
 
Integer:
Dann müssen Sie das Sichtbarkeitskennzeichen lesen und eine logische & mit der Konstante durchführen.

Wenn Sie meinen:

ObjectGetInteger(0,"line",OBJPROP_TIMEFRAMES,OBJ_PERIOD_W1&OBJ_PERIOD_MN1,res);

Oder

ObjectGetInteger(0,"line",OBJPROP_TIMEFRAMES,OBJ_PERIOD_W1&&OBJ_PERIOD_MN1,res);
Das ist dasselbe.
 
svds75:

Wenn Sie meinen:

Oder

Das ist dasselbe.
Nein. Es ist nicht nötig, mit der Aufzählung "get" zu machen. Holen Sie einfach ab und prüfen Sie dann, ob das Kennzeichen für den erforderlichen Zeitrahmen gesetzt ist. Hier ein Beispiel.
 
svds75:

Wenn Sie meinen:

Oder

Das ist dasselbe.

Ihr Fehler hier ist bool(res), da res immer größer als 1 in jeder Abbildung ist, sehen Sie, was in res zurückgegeben wird, daher wird bool(res) nur 0 oder false zurückgeben, wenn res=0

Sie verwenden Typkonvertierung und Vergleich unaufmerksam

OBJ_NO_PERIODS

0

Das Objekt wird in keinem Zeitrahmen angezeigt

OBJ_PERIOD_M1

0x00000001

Das Objekt wird auf 1-Minuten-Charts dargestellt.

OBJ_PERIOD_M2

0x00000002

Das Objekt wird auf 2-Minuten-Charts dargestellt.

OBJ_PERIOD_M3

0x00000004

Das Objekt wird auf 3-Minuten-Charts dargestellt

OBJ_PERIOD_M4

0x00000008

Das Objekt wird auf 4-Minuten-Charts dargestellt.

OBJ_PERIOD_M5

0x00000010

Das Objekt wird auf 5-Minuten-Charts dargestellt.

OBJ_PERIOD_M6

0x00000020

Das Objekt wird auf 6-Minuten-Charts dargestellt

OBJ_PERIOD_M10

0x00000040

Das Objekt wird auf 10-Minuten-Charts dargestellt.

OBJ_PERIOD_M12

0x00000080

Das Objekt wird auf 12-Minuten-Charts dargestellt.

OBJ_PERIOD_M15

0x00000100

Das Objekt wird auf 15-Minuten-Charts dargestellt.

OBJ_PERIOD_M20

0x00000200

Das Objekt wird auf 20-Minuten-Charts dargestellt.

OBJ_PERIOD_M30

0x00000400

Das Objekt wird auf 30-Minuten-Charts dargestellt.

OBJ_PERIOD_H1

0x00000800

Das Objekt wird auf 1-Stunden-Charts dargestellt.

OBJ_PERIOD_H2

0x00001000

Das Objekt wird auf 2-Stunden-Charts dargestellt.

OBJ_PERIOD_H3

0x00002000

Das Objekt wird auf 3-Stunden-Charts dargestellt.

OBJ_PERIOD_H4

0x00004000

Das Objekt wird auf 4-Stunden-Charts dargestellt.

OBJ_PERIOD_H6

0x00008000

Das Objekt wird auf 6-Stunden-Charts eingezeichnet

OBJ_PERIOD_H8

0x00010000

Das Objekt wird auf 8-Stunden-Charts eingezeichnet

OBJ_PERIOD_H12

0x00020000

Das Objekt wird auf 12-Stunden-Charts eingezeichnet

OBJ_PERIOD_D1

0x00040000

Das Objekt wird auf Tagesdiagrammen abgebildet

OBJ_PERIOD_W1

0x00080000

Das Objekt wird auf Wochencharts abgebildet

OBJ_PERIOD_MN1

0x00100000

Das Objekt wird in Monatsdiagrammen dargestellt

OBJ_ALL_PERIODS

0x001fffff

Das Objekt wird auf allen Zeitskalen dargestellt

 
Integer:

Das war's:

Wenn das Sichtbarkeitsflag auf H1 gesetzt ist, ist es wahr.
Es klappt, danke.
 
meat:

Als Fortsetzung meines vorherigen Beitrags ist es mir gelungen, den Problembereich, der zu dem Fehler führt, mit der wissenschaftlichen Methode zu finden.

Wir haben eine solche Bibliothek mit der Funktion:

Hier ist die Hauptdatei:

Der resultierende Expert Advisor funktioniert nicht und zeigt im Protokoll an: "EX5 loading failed".

Danke für den Hinweis, das Problem wurde behoben.
 

Hallo. Ich habe den EA in der OnInit-Funktion gesperrt und wahrscheinlich hängt das Terminal deshalb, wenn ich den EA ausschalte und den Zeitrahmen ändere (der Zeitrahmen ändert sich nicht nach den Bremsen). Meine Frage ist also: Ist die Ursache ein Hänger? Wenn ja, wird es korrigiert, wenn ich den Algorithmus auf OnTick verschiebe? Wenn nein, was würde helfen?

PS: Die Schleife hat eine Funktion Sleep, so dass das Terminal nicht überlastet wird. Die Eingabefelder werden in der Schleife gelesen.

 
king20:

Hallo. Ich habe den EA in der OnInit-Funktion gesperrt und das muss der Grund sein, warum das Terminal hängen bleibt, wenn ich den EA ausschalte und den Zeitrahmen ändere (der Zeitrahmen ändert sich nicht nach den Bremsen). Meine Frage ist also: Ist die Ursache ein Hänger? Wenn ja, wird es korrigiert, wenn ich den Algorithmus auf OnTick verschiebe? Wenn nein, was würde helfen?

PS: Die Schleife hat eine Funktion Sleep, so dass das Terminal nicht überlastet wird. Die Eingabefelder werden in der Schleife gelesen.

Formatieren Sie die Festplatte.
 
king20:

Hallo. Ich habe den Expert Advisor in der OnInit-Funktion gesperrt und es scheint, dass, wenn ich den EA ausschalte und den Zeitrahmen ändere, das Terminal hängen bleibt (der Zeitrahmen ändert sich nicht nach den Bremsen). Meine Frage ist also: Ist die Ursache ein Hänger? Wenn ja, wird es korrigiert, wenn ich den Algorithmus auf OnTick verschiebe? Wenn nein, was würde helfen?

PS: Die Schleife hat eine Funktion Sleep, so dass das Terminal nicht überlastet wird. Die Eingabefelder werden in der Schleife gelesen.

OnInit - dient nur zur Initialisierung. Alle Berechnungen müssen weiter ausgeführt werden - OnTick, OnTimer usw.

Wenn Sie die Änderung im Eingabefeld wissen müssen, gibt es dafür eine Standardbibliothek: https://www.mql5.com/ru/docs/standardlibrary/controls/cedit

Документация по MQL5: Стандартная библиотека / Классы для создания панелей и диалогов / CEdit
Документация по MQL5: Стандартная библиотека / Классы для создания панелей и диалогов / CEdit
  • www.mql5.com
Стандартная библиотека / Классы для создания панелей и диалогов / CEdit - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Grund der Beschwerde: