Diskussion zum Artikel "Wie man in MQL5 Indikatoren aufruft"

 

Neuer Artikel Wie man in MQL5 Indikatoren aufruft :

Mit der neuen, zur Verfügung stehenden Version der MQL Programmiersprache hat sich nicht nur der Ansatz im Umgang mit Indikatoren verändert, sondern es haben sich auch neue Möglichkeiten ihrer Erzeugung ergeben. Zudem hat man jetzt noch mehr Flexibilität bei der Arbeit mit den Indikator-Buffern - man kann jetzt die gewünschte Richtung der Indizierung angeben und genau so viele Indikatorwerte bekommen, wie man möchte. In diesem Beitrag werden die einfachen Methoden zum Aufruf von Indikatoren und Abruf von Daten aus dem Indikator-Buffer erklärt.

In MQL5 lassen sich Indikatoren auf verschiedene Arten aufrufen. Die Aufrufe werden meist mit Hilfe der IndicatorCreate() und iCustom() Funktionen ausgeführt. Darüber hinaus liefern diese Funktionen nur Indikator-Identifikatoren, via derer die weitere Arbeit an den Indikatoren ausgeführt wird. Was ist eigentlich ein Identifikator? Wie funktioniert die Arbeit mit den Funktionen IndicatorCreate() und iCustom()? Und wie erhält Ihr Expert Indikatordaten? Der folgende Beitrag beantwortet diese Fragen.

Autor: KlimMalgin

 
nützlicher Artikel. Vielen Dank.
 

Gut ++

Danke.

 

Bitte erklären Sie das.

In "Abrufen des Indikator-Handles mit IndicatorCreate()"

Erstellen Sie ein Array

MqlParam params[];      // Array zum Speichern von Indikatorparametern

ohne Angabe des Typs, dann ändern Sie den Array-Typ nach Bedarf.

Wie funktioniert das? Kann es für jede Struktur verwendet werden oder nur für diese? Ist es möglich, einfach den Typ eines bestehenden Arrays zu ändern?

 
Das Array von Parametern des Typs MqlParam ist für die Funktion IndicatorCreate() nur bei der Erstellung eines Handles erforderlich. Wenn Sie etwas ändern wollen, müssen Sie das aktuelle Handle mit IndicatorRelease "töten" und ein neues erstellen. Der Indikator "Motorwechsel" während der Bewegung ist nicht vorgesehen.
 

Aber im Artikel, im Text.

   ***
   // Einstellen der Periode des langsamen MA
   params[0].type         =TYPE_INT;
   params[0].integer_value=21;
   ***

und danach.

   ***
   ArrayResize(params,2);
   // Schritt
   params[0].type         =TYPE_DOUBLE;
   params[0].double_value = 0.02;
   ***
wird nichts gestrichen, der Typ wird geändert.....
 
Betrachten wir es einmal auf der Ebene der Gastronomie. Ein Kellner stellt Gerichte auf ein Tablett und nimmt Ihre Bestellung entgegen. Dann stellt er das Essen eines anderen Kunden auf dasselbe Tablett und bringt ihm Ihre Bestellung. Heißt das, dass Sie dasselbe Essen bekommen wie der andere Kunde?
 

Verschiedene Gerichte können also nur auf dem Tablett des Kellners stehen. Okay, ich werde experimentieren.

Gibt es Pläne für Arrays mit gemischten Typen, wie [int][double]?

 
Silent:

Verschiedene Gerichte können also nur auf dem Tablett des Kellners stehen. Okay, ich werde experimentieren.

Gibt es keine Pläne für Arrays mit gemischten Typen, wie [int][double]?

Verwenden Sie Strukturen, siehe das Beispiel in der Hilfe - https://www.mql5.com/ru/docs/basis/types/casting#casting_structure:

Ein weiteres Beispiel zeigt, wie Sie Ihre eigene Funktion organisieren können, um die RGB (Rot,Grün,Blau) -Farbdarstellung vom Farbtyp zu erhalten. Dazu erstellen wir zwei Strukturen, die die gleiche Größe, aber eine unterschiedliche interne Zusammensetzung haben . Der Einfachheit halber fügen wir der Struktur eine Funktion hinzu, die die Farbe in RGB-Darstellung als String zurückgibt.

#property script_show_inputs
input color          testColor=clrBlue;// Festlegen der Farbe für die Prüfung
//--- Struktur für die RGB-Farbdarstellung
struct RGB
  {
   uchar             blue;          // blaue Farbkomponente
   uchar             green;         // Grüner Farbanteil
   uchar             red;           // rote Farbkomponente
   uchar             empty;         // dieses Byte wird nicht verwendet
   string            toString();    // Funktion zum Empfang als String
  };
//--- Funktion zur Ausgabe der Farbe als String
string RGB::toString(void)
  {
   string out="("+(string)red+":"+(string)green+":"+(string)blue+")";
   return out;
  }
//--- Struktur zur Speicherung des eingebauten Typs Farbe 
struct builtColor
  {
   color             c;
  };
//+------------------------------------------------------------------+
//| Skript-Programmstartfunktion|
//+------------------------------------------------------------------+
void OnStart()
  {
//--- Variable zum Speichern in RGB
   RGB colorRGB;
//--- Variable zum Speichern des Farbtyps
   builtColor test;
   test.c=testColor;
//--- Konvertierung zweier Strukturen durch Kopieren ihres Inhalts
   colorRGB=test;
   Print("color ",test.c," = ",colorRGB.toString());
//---
  }

Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Основы языка / Типы данных / Приведение типов - Документация по MQL5
 
Rosh:

Verwenden Sie Strukturen, siehe das Beispiel in der Hilfe - https://www.mql5.com/ru/docs/basis/types/casting#casting_structure:

Ich verstehe mehr oder weniger mit Strukturen, ich bin in Arrays interessiert.

Danke.

 
Silent:

Mit Strukturen kenne ich mich mehr oder weniger gut aus, ich bin an Arrays interessiert.

Ich danke Ihnen.

Erstellen Sie eine Struktur und geben Sie ein Array dieses Typs ein.