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

 
DCodec:

Ehrlich gesagt, verstehe ich gar nichts. Ich brauche Indikatorwerte in der obersten Zeile für Close[2], Close[1] und das war's.

Wie kann man diese Werte von JEDEM Indikator abrufen, um den Code des Indikators nicht zu "versauen".


Sie können die Werte eines beliebigen Indikatorpuffers an jedem BAR abrufen, nicht am Close... SieheiCustom-Hilfe:

iCustom

Gibt das Handle des angegebenen benutzerdefinierten Indikators zurück.

Verfahren:

  • In OnInit() ein Indikator-Handle erstellen
  • in OnTick() oder OnTime() die Indikatordaten zur angegebenen BAR-Nummer aus dem erforderlichen INDICATOR-Puffer abrufen.

 
Vladimir Karputov:

Sie können die Werte eines beliebigen Indikatorpuffers an jedem BAR abrufen, nicht am Close... SieheiCustom-Hilfe:

iCustom

Gibt das Handle des angegebenen benutzerdefinierten Indikators zurück.

Verfahren:

  • In OnInit() ein Indikator-Handle erstellen
  • in OnTick() oder OnTime() die Indikatordaten an der angegebenen BAR-Nummer aus dem erforderlichen INDICATOR-Puffer abrufen.

Ja, ich habe es falsch verstanden. Ich benötige die Indikatorwerte für den ersten und zweiten Balken. Aber nehmen wir an, die Bollinger-Bänder haben drei Linien. Welche Zeile liefert mir den Wert? Ich entschuldige mich für die dummen Fragen, aber ich bin wirklich verwirrt.
 
DCodec:
Ja, ich habe mich falsch ausgedrückt. Ich möchte Indikatorwerte für den ersten und zweiten Balken. Aber nehmen wir an, die Bollinger-Bänder haben drei Linien. Welche Zeile wird an mich zurückgegeben? Ich entschuldige mich für die dummen Fragen, aber wirklich STUPOR.

Einen Moment ...

Hier ist die Funktion zum Abrufen von Werten aus iBands:

//+------------------------------------------------------------------+
//| Get value of buffers for the iBands                              |
//|  the buffer numbers are the following:                           |
//|   0 - BASE_LINE, 1 - UPPER_BAND, 2 - LOWER_BAND                  |
//+------------------------------------------------------------------+
double iBandsGet(const int buffer,const int index)
  {
   double Bands[1];
//ArraySetAsSeries(Bands,true);
//--- reset error code 
   ResetLastError();
//--- fill a part of the iBands array with values from the indicator buffer that has 0 index 
   if(CopyBuffer(handle_iBands,buffer,index,1,Bands)<0)
     {
      //--- if the copying fails, tell the error code 
      PrintFormat("Failed to copy data from the iBands indicator, error code %d",GetLastError());
      //--- quit with zero result - it means that the indicator is considered as not calculated 
      return(0.0);
     }
   return(Bands[0]);
  }

Die Funktion ist abgeschnitten - ihr Zweck ist es, immer NUR EINEN Wert aus dem Indikatorpuffer "buffer" für die Taktnummer "index" zu erhalten.

Alle drei Linien von iBands haben ihre eigenen Konstanten:

//|   0 - BASE_LINE, 1 - UPPER_BAND, 2 - LOWER_BAND                  |
 
Vladimir Karputov:

Einen Moment ...

Hier ist die Funktion zum Abrufen von Werten aus iBands:

Die Funktion ist abgeschnitten - ihr Zweck ist es, immer NUR EINEN Wert aus dem Indikatorpuffer "buffer" für die Taktnummer "index" zu erhalten.

Alle drei iBands-Linien haben ihre eigenen Konstanten:

Ja...ja. Ich verstehe nur nicht, wie man die

//|   0 - BASE_LINE, 1 - UPPER_BAND, 2 - LOWER_BAND  

Wahrscheinlich liegt es an der Engstirnigkeit. Ich denke immer noch wie in MQL4.

 
DCodec:

Ja... ja. So verstehe ich nicht, wie ich mich bewerben soll.

Das liegt wahrscheinlich an der Engstirnigkeit. Ich denke immer noch in Bezug auf MQL4.


Beispiel für die Verwendung von iBands von KodoBase:Bollinger Bands RSI

 
DCodec:

...


Hatten Sie Glück? Oder ein Thema mit einer Schritt-für-Schritt-Anleitung zum Abrufen von Daten aus dem Indikator erstellen?

 
Vladimir Karputov:

Wie läuft's denn so? Oder ein Thema mit einer Schritt-für-Schritt-Anleitung zum Abrufen von Daten aus dem Indikator erstellen?

Sie sind amüsiert. Ich merke erst jetzt, dass ich in

CopyBuffer

Das ist es, was ich brauche.

CopyBuffer(handle_iBands,buffer,index,1,Bands)

Ich danke Ihnen.

 

Ich habe noch eine Frage. Wie kann ich eine Zeile in einem Indikator deaktivieren, die ich nicht benötige?

Sagen wir, um UPPER_LINE in iEnvelopes zu deaktivieren.

 
DCodec:

Sie lachen. Und ich habe erst jetzt erkannt, dass ich nicht lustig bin.

Das ist es, was ich brauche.

Ich danke Ihnen.


Das bildest du dir nur ein. Ich habe nicht gelacht, ich habe ernsthaft gefragt. Ich habe zum Beispiel dieses Thema:Simple Expert Advisor. Überprüfung der Balkengröße. Kaufen/Verkaufen.


DCodec:

Ich werde mir noch eine Frage erlauben. Wie kann ich die Zeile im Indikator deaktivieren, die ich nicht benötige?

Sagen wir, um UPPER_LINE in iEnvelopes zu deaktivieren.


Die Frage ist nicht klar. Beschreiben Sie genauer, WO und WAS Sie tun wollen.

 
Vladimir Karputov:

Sie haben es sich vorgestellt. Ich habe nicht gelacht, ich habe ernsthaft gefragt. Ich habe zum Beispiel dieses Thema:Simple Expert Advisor. Kontrolle der Balkengröße. Kaufen/Verkaufen.



Die Frage ist nicht klar. Beschreiben Sie genauer, WO und WAS Sie tun wollen.

Wenn ein EA ein Indikator-Handle in OnInit() erhält ...

int OnInit()
  {
//--- Получить хэндл индикатора Envelopes_upper для отрисовки верхней линии
   EnvHandle_upper=iEnvelopes(NULL,0,Period_upper,0,MODE_SMA,PRICE_MEDIAN,Deviation_upper);

....terminal zeichnet beide Linien, ich brauche nur die obere Linie.

Wie lässt sich das Zeichnen dieser Linie deaktivieren? D.h. ändern Sie die Farbe in CLR_NONE, oder ändern Sie den Linienstil in DRAW_DONE?