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

 
Seric29:

Zum Beispiel deklariere ich Eingabeparameter, und von diesen Parametern muss ich globale Variablen nehmen und sie anzeigen, aber es gibt ein Problem Eingabeparameter können nicht ein Array sein

Wenn wir überInput-Variablen sprechen, können Sie es vereinfachen - sie haben eine globale Sichtbarkeit und können in jedem Codeabschnitt verwendet werden.

oder schreiben Sie sie einmal in ein Array im OnInit()-Abschnitt, und später können Sie ein Array in ein Array kopieren, aber hier müssen die Arrays gleich sein - nehmen Sie ein Array mit Ersatz, aber dann müssen Sie die Array-Indexnummern kontrollieren, um einen Fehler zu vermeiden - Sie könnten einen leeren Array-Wert verwenden - der Compiler wird keinen Fehler erzeugen, aber die Berechnung wird fehlerhaft sein

input int a1=1;
input int a2=2;
input int a3=3;

int ArrayOfInput[3];
int OnInit()
  {
   ArrayOfInput[0] =a1;
   ArrayOfInput[1] =a2;
   ArrayOfInput[2] =a3;
  return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
 // delete cx;
  }
//+------------------------------------------------------------------+
void OnTick()
  {
      int arr[3];
      ArrayCopy(arr,ArrayOfInput);
  }
//+------------------------------------------------------------------+
HH: aus irgendeinem Grund war ich sicher, dass der Zuweisungsoperator für identische Arrays funktioniert, vielleicht habe ich mit Klasse verwechselt - es funktioniert definitiv dort, wenn die Objekte von der gleichen Klasse sind
 
Igor Makanu:

wenn es sich umEingabevariablen handelt, können Sie es vereinfachen - sie haben globale Sichtbarkeit und können in jedem Codeabschnitt verwendet werden

oder schreiben Sie sie einmal in ein Array im OnInit()-Abschnitt, und später können Sie ein Array in ein Array kopieren, aber hier müssen die Arrays gleich sein - nehmen Sie ein Array mit Ersatz, aber dann müssen Sie die Array-Indexnummern kontrollieren, um einen Fehler zu vermeiden - Sie können einen leeren Array-Wert verwenden - der Fehler wird nicht angezeigt, aber die Berechnungen werden fehlerhaft sein

SZZ: aus irgendeinem Grund war ich sicher, dass der Zuweisungsoperator für die gleichen Arrays funktioniert, vielleicht mit der Klasse verwechselt - es funktioniert definitiv, wenn die Objekte die gleiche Klasse sind

Nein, es auch so habe ich versucht (vielleicht versucht, ein wenig und schlecht, weil ich nicht sehr gut auf sie, aber so weit ich versucht, es funktioniert nicht plus alle Klassen müssen durch einen Doppelpunkt zu behandeln ist besser, so hier zu tun, wie Sie gezeigt) dachte vielleicht durch die Klassen ist nicht notwendig, so dass ist, wie Sie eine Zeile zuweisen.

 

Hallo.

Können Sie mir bitte sagen, ob Sie die Zeitzone im Popup-Fenster für Standardwarnungen ändern können?

Ich muss die Zeit des Alarms mit der Terminalzeit synchronisieren (wenn sie im Terminal und im Alarmfenster unterschiedlich ist). Ist das möglich?
 
Warum kann man in mql4 int (und jeden anderen rückgabefähigen Wert) und void (prozedurale Funktion) auf die gleiche Weise aufrufen?
 

Frage. Wie kann ich eine Schleife durch alle Aufzählungswerte in einem Schritt ohne Gleichheit bilden?


enum Typen {

Eins=11,

Zwei=12,

Drei=15,

Vier=22,

Fünf=27

};

 
The_Sheikh:

Frage. Wie kann ich eine Schleife durch alle Aufzählungswerte mit einem Nicht-Gleichheitsschritt bilden?


enum Typen {

Eins=11,

Zwei=12,

Drei=15,

Vier=22,

Fünf=27

};

nein, sizeof() funktioniert nicht bei enumhttps://docs.mql4.com/ru/basis/types/integer/enumeration

und bei der Konvertierung von Typen geht der Name der Konstante verloren

enum Types { One=11, Two=12, Three=15, Four=22, Five=27,Six = 111,Seven = 222};
enum Types_abc { a, b, c, d, e,f,g};
void OnStart()
  {
   int sz = sizeof(Types);
   Print("sz = ",sz);
   Types z = Two;
   Types_abc x = b;
   Print("z = ",EnumToString(z)," , x = ",EnumToString(x));
   x = (Types_abc)z;
   Print("z = ",EnumToString(z)," , x = ",EnumToString(x));
  }

2019.08.03 10:52:13.288 tst EURUSD,H1: sz = 4

2019.08.03 10:52:13.288 tst EURUSD,H1: z = Zwei , x = b

2019.08.03 10:52:13.288 tst EURUSD,H1: z = Zwei , x = Typen_abc::12


 
Elena Baranova:

Hallo.

Können Sie mir bitte sagen, ob es möglich ist, die Zeitzone im Standard-Pop-up mit einer Warnung zu ändern?

Ich muss die Zeit des Alarms mit der Terminalzeit synchronisieren (wenn sie im Terminal und im Alarmfenster unterschiedlich ist). Ist das möglich?
Der Alarm zeigt die lokale Zeit auf dem PC an. Um sie an die Terminalzeit anzupassen, können Sie einfach die Computerzeit ändern.
 
Seric29:
Warum kann man in mql4 die Funktionen int (und jeden anderen Rückgabewert) und void (Verfahrensfunktion) auf die gleiche Weise aufrufen?

Das nennt man "Überlastung".

Документация по MQL5: Основы языка / Функции / Перегрузка функций
Документация по MQL5: Основы языка / Функции / Перегрузка функций
  • www.mql5.com
Обычно в названии функции стремятся отобразить ее основное назначение. Читабельные программы, как правило, содержат разнообразные и грамотно подобранные идентификаторы. Иногда различные функции используются для одних и тех же целей. Например, рассмотрим функцию, которая вычисляет среднее значение массива чисел двойной точности, и такую же...
 

Hallo. Wie fange ich das Eingangssignal der Leuchtanzeige im Code ab? Der Indikator malt eine Kerze auf das Diagramm und gibt eine Warnung zum Einstieg aus.

Einfach ausgedrückt möchte ich einen Roboter für diesen Indikator schreiben.

 
Alexey Viktorov:
Alert zeigt die lokale Zeit auf dem PC an. Um sie auf die gleiche Zeit wie die Terminalzeit einzustellen, können Sie einfach die Computerzeit ändern.

Danke!) Ist dies der einzige Weg, gibt es keine andere Möglichkeit, die Zeit in Alert einzustellen? Und gibt es eine Alternative zur Standardfunktion Alert() in MQL4, bei der die Alarmzeit auf die Terminalzeit gesetzt werden kann?