Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 240

 
barabashkakvn:

Hallo.

1. ich kann den Indikator "Blau_Ergodic" nicht verwenden, weil es kein Archiv am Ende des Artikels gibt. Jetzt brauche ich eine Include-Datei "WilliamBlau.mqh". Bitte senden Sie mir diese Datei (am besten per Profilnachricht).

2. Alle Indikatoren sind in...MQL5\Indikatoren\Beispiele\ - dies sind benutzerdefinierte Indikatoren, d.h. solche Indikatoren, deren Code Sie ändern können.

Gesendet.
 
forexman77:

Ich versuche, einen Handelssignalgenerator auf der Grundlage eines benutzerdefinierten Indikators zu erstellen.

Es haben sich folgende Fragen ergeben:

1. Ich kann in der Zeile nach CiCustom einen beliebigen Namen angeben, zum Beispiel "m_ind;".

2. Ist diese Zeile korrekt?

Verstehe ich das richtig, bekomme ich hier den Wert des Indikators selbst?

3. ich kann nicht verstehen, wie das Programm den Wert des Indikators erhält. D.h., wenn wir MQL4 verwenden, sollten wir den Namen des Indikators angeben und das Programm wird ihn anhand des Namens finden. Wo gebe ich dann den Namen in der Klasse ein?

Ich habe diesen Code erstellt) Ich werde nicht weiter gehen, weil ich mehr Expert Advisor auf meine Schöpfung brauchen.

Im Allgemeinen ist alles korrekt. Hier ist nur der Code:

   double             Custom(int index)                   { return(m_ind.ParamDouble(index));}
   double             Open(int index)                     { return(m_open.GetData(index));  }
   double             Close(int index)                    { return(m_close.GetData(index)); }

wirft eine Frage auf. ParamDouble - liefert den Wert eines angegebenen Fließkomma-Parameters, der bei der Erstellung des Indikators verwendet wurde. Vielleicht müssen wir auf den Wert des Indikatorpuffers zugreifen:

   double             Custom(int index)                   { return(m_open.GetData(index));  }
   double             Open(int index)                     { return(m_open.GetData(index));  }
   double             Close(int index)                    { return(m_close.GetData(index)); }

?

 
barabashkakvn:

Alles in allem ist alles korrekt. Mit Ausnahme des Codes:

wirft eine Frage auf. ParamDouble - liefert den Wert des angegebenen Gleitkommaparameters, der bei der Erstellung des Indikators verwendet wurde. Vielleicht müssen wir auf den Wert des Indikatorpuffers zugreifen:

?

Wenn ich mir die Hilfe ansehe, scheint es mir, dass "ParamDouble" benötigt wird. Wir müssen den Wert tatsächlich aus dem Puffer holen.

Ich habe nur "NumBuffers" in der Klasse"CiCustom" gefunden

 
forexman77:
Wenn ich mir die Hilfe ansehe, scheint es mir, dass es "ParamDouble" braucht. Im Allgemeinen müssen Sie natürlich den Wert aus dem Puffer holen.
Nun, ich sehe, dass sich alles zum Guten wenden wird.
 
barabashkakvn:
Ich sehe, dass sich alles zum Guten wenden wird.
Wenn ich richtig verstanden habe
double             Custom(int index)                   { return(m_ind.ParamDouble(index));}

wird der Indikatorwert mit dieser Zeile angefordert?

In Standardindikatoren werden die Pufferwerte durch Datenzugriff ermittelt, aber im benutzerdefinierten Indikator gibt es keinen Datenzugriff.

Es gibt Funktionen in der Gruppe der Grund- und Hilfsklassen der technischen Indikatoren und Zeitreihen, aber wie füge ich sie ein? Oder ist es nicht das, was ich brauche?

 
forexman77:
Wenn ich richtig verstanden habe

wird der Indikatorwert mit dieser Zeile angefordert?

In Standardindikatoren werden die Pufferwerte durch Datenzugriff ermittelt, aber im benutzerdefinierten Indikator gibt es keinen Datenzugriff.

Es gibt Funktionen in der Gruppe der Grund- und Hilfsklassen der technischen Indikatoren und Zeitreihen, aber wie füge ich sie ein? Oder ist es nicht das Richtige?

1. Ja, der Parameterwert - zum Beispiel der Eingabeparameter, auf dessen Grundlage der Indikator berechnet wird.

2. Nicht verwechseln - der Indikator, bei dem Sie den Code ändern können, ist ein benutzerdefinierter Indikator. Auch wenn sein Name derselbe ist wie der des Indikators aus der Standardbibliothek. Ein Beispiel für einen benutzerdefinierten Indikator - ...MQL5\Indicators\Examples\ und alle anderen, bei denen Sie den Code ändern können. Der Indikatorpuffer zeichnet seinen Inhalt (Daten) auf dem Diagramm. Sie ändern einfach die Daten im Indikatorpuffer und schon werden sie im Diagramm angezeigt. Nach welchem Zugang fragen Sie?

3. ich verstehe es nicht.

 
barabashkakvn:

1. Ja Parameterwert - z. B. Eingabeparameter, auf dessen Grundlage der Indikator berechnet wird.

2. Nicht verwechseln - der Indikator, bei dem Sie den Code ändern können, ist ein benutzerdefinierter Indikator. Auch wenn sein Name derselbe ist wie der des Indikators aus der Standardbibliothek. Ein Beispiel für einen benutzerdefinierten Indikator - ...MQL5\Indicators\Examples\ und alle anderen, bei denen Sie den Code ändern können. Der Indikatorpuffer zeichnet seinen Inhalt (Daten) auf dem Diagramm. Sie ändern einfach die Daten im Indikatorpuffer und schon werden sie im Diagramm angezeigt. Nach welchem Zugang fragen Sie?

3. ich verstehe es nicht.

Hier ist der Eingabeparameter Zeitraum, der zur Berechnung des Indikators "q" verwendet wird

class CSampleSignal : public CExpertSignal
  {
protected:
   CiCustom           m_ind;              // объект для доступа к значениям ind
   CiOpen             m_open;            // объект для доступа к ценам открытия баров
   CiClose            m_close;           // объект для доступа к ценам закрытия баров
  //--- настраиваемые параметры
   int      q;  // q - период, по которому вычисляется индикатор
   double             m_stop_loss;       // уровень установки ордера "stop loss" относительно цены открытия
   double             m_take_profit;     // уровень установки ордера "take profit" относительно цены открытия
public:
              CSampleSignal();
   //--- методы установки параметров настройки
   void               Q(int value)                 { q=value;   }
   void               StopLoss(double value)       { m_stop_loss=value;   }
   void               TakeProfit(double value)     { m_take_profit=value; }

Zu Frage 2. Nun der folgende Code

protected:
   //--- метод инициализации объектов
   bool               Initind(CIndicators* indicators);
   bool               InitOpen(CIndicators* indicators);
   bool               InitClose(CIndicators* indicators);
   //--- методы доступа к данным объектов
   double             Custom(int index)                   { return(m_ind.ParamDouble(index));}//знаю, что не правильно
   double             Open(int index)                     { return(m_open.GetData(index));  }
   double             Close(int index)                    { return(m_close.GetData(index)); }
  };

Wenn ich das richtig verstehe, geben wir hier an, dass wir Informationen über Eröffnungs- und Schlusskurse, Werte aus Indikatorpuffern erhalten wollen?

Ich verstehe, was Sie mit den Standardindikatoren meinen. Die Daten aus dem Puffer werden über"Main" abgerufen.Der folgende Code ist ein Beispiel dafür

 double             MA(int index)                       { return(m_MA.Main(index));       }
 double             Open(int index)                     { return(m_open.GetData(index));  }
 double             Close(int index)                    { return(m_close.GetData(index)); }

Zur 3. Frage. Wie erhalte ich Daten von einem benutzerdefinierten Indikator?

Zum besseren Verständnis: Welche Schritte müssen bei der Erstellung des Generators für das Handelssignal durchlaufen werden?

 
Wenn ich es richtig verstehe, geben wir hier an, dass wir Informationen über Eröffnungs- und Schlusskurse, Werte aus Indikatorpuffern erhalten wollen?

Ja.

Die Standardindikatoren sind eindeutig. Die Daten aus dem Puffer werden über "Main" abgerufen. Zum Beispiel, wie im folgenden Code.

Ja, die Klasse CiMA hat die MethodeMain

Wie erhalte ich Daten voneinem benutzerdefinierten Indikator?

.GetData(index))
wobei index die Nummer des Indikatorpuffers ist.
 
barabashkakvn:

Ja.

Ja, die CiMA-Klasse hat eineMain-Methode

wobei index die Nummer des Indikatorpuffers ist.
double             Main(int ind)                       { return(m_ind.GetData(0,ind));   }
Richtig)?
 


Wann wird Metatrader für Windows Phone 8 verfügbar sein?

Grund der Beschwerde: