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

 
Können Sie mir sagen, ob es eine Möglichkeit gibt, die Öffnungszeiten der Balken h4 und d1 zu ändern? Grob gesagt, um einen Wechsel der Zeitzone zu simulieren. Vielleicht ein Skript, das Offline-Diagramme auf der Grundlage von h1-Zeitrahmen oder etwas Ähnlichem erstellt.
 
Artyom Trishkin:

Die Hinrichtung kann nicht begnadigt werden.

Worin besteht der Fehler?

Hier.

Wie Sie sehen, können Sie eine lokal deklarierte Struktur nicht an eine Funktion übergeben.

 
vladnev:
Können Sie mir bitte sagen, ob es eine Möglichkeit gibt, die Öffnungszeiten der Balken h4 und d1 zu ändern? Grob gesagt, imitieren sie einen Wechsel der Zeitzone. Vielleicht ein Skript, das Offline-Diagramme auf der Grundlage von h1-Zeitrahmen oder etwas Ähnlichem erstellt.
iOpen(Symbol,нужный таймфрейм,номер бара(счёт идёт справа налево))

Wir müssen mit diesem Thema arbeiten

 
Seric29:

Hier.

Wie Sie sehen, können Sie eine lokal deklarierte Struktur nicht an eine Funktion übergeben.

Sie verwechseln die Definition einer Struktur mit der Deklaration einer Variablen mit dem Typ dieser Struktur.
 
Artyom Trishkin:

Können Sie es selbst überprüfen? Schwierig? Und warum zu viel schreiben?

Ich habe es nicht überprüft. Was hält Sie davon ab?

Artyom, diese Option wird wirklich nicht funktionieren. Die Struktur muss auf der Ebene der globalen Variablen definiert werden. Und eine Variable vom Typ Struktur ist überall. Dann wird es möglich sein, sie per Referenz zu übergeben. Denn der Typ der eingehenden Funktionsparameter wird nicht definiert.

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
   struct MyPoint
     {
      int         x[5];
      int         y;
     }gw777; // Переменная глобального уровня, просто лишняя.
int OnInit()
  {
   MyPoint qw1; // Локальная переменная
   EqualPointsP(qw1);// передал структуру в функцию EqualPointsP
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason) {}

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool EqualPointsP(MyPoint &qw)
  {
   Print("EqualPointsP ");
   return true;
  }
 
Artyom Trishkin:
Sie verwechseln die Definition einer Struktur mit der Deklaration einer Variablen mit dem Typ dieser Struktur.

Bedeutung. Sie meinen, dass die Struktur global, d.h. außerhalb des Codes, deklariert werden muss und die Struktur durch ihre Definition nicht innerhalb des Codes, d.h. lokal, beschrieben werden kann; nur Variablen können auf diese Weise erstellt werden, oder verstehe ich da etwas falsch? Bitte erläutern Sie dies.

 
Alexey Viktorov:

Artyom, diese Variante wird wirklich nicht funktionieren. Die Struktur sollte auf der Ebene der globalen Variablen definiert werden. Und eine Variable vom Typ Struktur ist überall. Dann wird es möglich sein, sie per Verweis zu übertragen. Denn der Typ in den Eingangsparametern der Funktion wird nicht definiert.

Es ist also doch global.

 
Seric29:

Es ist also doch global.

NEIN. Eine Struktur ist ein benutzerdefinierter Typ. Dieser Typ muss also überall verfügbar sein. Und eine VARIABLE eines benutzerdefinierten Typs kann deklariert werden, wo immer der linke kleine Finger des rechten Fußes will, und diese Variable übergeben, wo immer der geliebte Hund will, aber nur per Referenz.

 
Alexey Viktorov:

Auf diese Weise wird die Struktur nicht funktionieren, Artyom. Die Struktur muss auf der Ebene der globalen Variablen definiert werden. Und die Variable des Strukturtyps ist beliebig. Dann wird es möglich sein, sie per Verweis zu übertragen. Denn der Typ der eingehenden Funktionsparameter wird nicht definiert.

 

Da Artyom nichts antwortet und der Mann oben die Antwort gab, dass Funktionen mit Strukturen arbeiten, die bekannt sein müssen und daher global deklariert werden müssen, schließen wir, dass die Struktur global deklariert werden muss.

Es liegt in der Natur der Sache, dass eine Funktion, die mit einer Struktur arbeitet, nur die gleichen statischen Strukturen akzeptieren kann. Das bedeutet, dass es nicht möglich ist, eine Struktur lokal zu deklarieren, so dass sie einen begrenzten Umfang hat, und sie an die Funktion zu übergeben.

Grund der Beschwerde: