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

 
Vitaly Muzichenko:

Hat das jemals funktioniert oder nicht?

Wie kann ich es so einrichten, dass wenn eine Farbe in den Eingabeparametern geändert wird, diese Farbe in"indicator_color1" erscheint? Im Moment ist es das Original, egal wie man es ändert.

Comment(Buffer1_Color[0]);

Wie wäre es damit?

 
Сергей Таболин:

Wie wäre es damit?

 
Vitaly Muzichenko:

Hat das jemals funktioniert oder nicht?

Wie kann ich es so einrichten, dass wenn eine Farbe in den Eingabeparametern geändert wird, diese Farbe in"indicator_color1" erscheint? Im Moment ist es das Original, egal wie man es ändert.

Etwas lässt sich so nachvollziehen:

//+------------------------------------------------------------------+
//|                                                         Test.mq5 |
//|                              Copyright © 2019, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2019, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots   1
//--- plot Label1
#property indicator_label1  "Label1"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrDarkGoldenrod
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- indicator buffers
double         Label1Buffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,Label1Buffer,INDICATOR_DATA);

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   Print(PlotIndexGetInteger(0,PLOT_LINE_COLOR,0));
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
Dateien:
Test.mq5  5 kb
 
Vladimir Karputov:

Etwas lässt sich so nachvollziehen:

Großartig, jetzt geht's los:PlotIndexGetInteger(0,PLOT_LINE_COLOR,0)

Ich danke Ihnen!

 

Wie in benutzerdefinierten Indikator, um Daten aus OnCalculate() nur Minute Zeitreihen, auf jedem Zeitrahmen zu erhalten? Ich verwende CopyRates(sym,PERIOD_M1,...), was ist der beste Weg, was raten Sie?

 
Vladimir M.:

Wie erhält man Daten in einem benutzerdefinierten Indikator von OnCalculate() nur für Minuten-Zeitreihen, für jeden Zeitrahmen? Ich verwende CopyRates(sym,PERIOD_M1,...), was ist der beste Weg, was ist Ihr Rat?

Wenn Sie mehrere Bars gleichzeitig benötigen, werden Sie nichts Besseres finden. Und ich denke, es ist besser, die Werte eines Balkens mit Hilfe von CopyRates zu erhalten

 
Alexey Viktorov:

Wenn Sie mehrere Bars gleichzeitig benötigen, werden Sie nichts Besseres finden. Und meiner Meinung nach ist es besser, die Werte eines einzelnen Balkens über CopyRates zu erhalten

Andererseits kann ich OnCalculate() nicht aus dem Indikator entfernen, da es nutzlos ist. Es stellt sich heraus, dass Sie die gleichen Daten zweimal erhalten?
 
Vladimir M.:
OnCalculate() kann nicht aus dem Indikator entfernt werden, da es nicht benötigt wird. Es stellt sich heraus, dass Sie die gleichen Daten zweimal erhalten?

Ist es möglich, ohne sie zu tun, wenn OnTick() vorhanden ist?

 
Vladimir M.:
Andererseits können Sie OnCalculate() nicht aus dem Indikator entfernen, da es nicht benötigt wird. Es stellt sich heraus, dass Sie die gleichen Daten zweimal erhalten?

Wenn Sie es nicht brauchen, können Sie die zweite Variante verwenden

int OnCalculate (const int rates_total,      // размер массива price[] 
                 const int prev_calculated,  // обработано баров на предыдущем вызове 
                 const int begin,            // откуда начинаются значимые данные 
                 const double& price[]       // массив для расчета 
   );
 
Igor Zakharov:

Ist es möglich, ohne sie zu tun, wenn OnTick() vorhanden ist?

Ich bezweifle, dass das möglich ist, aber ich werde es nicht mehr versuchen. Und in der Dokumentation steht:

"...Das NewTick-Ereignis wird nur für Expert Advisors erzeugt, wenn ein neuer Tick für ein Symbol empfangen wird, an dessen Chart der Expert Advisor gebunden ist. Es ist sinnlos, die OnTick()-Funktion in einem benutzerdefinierten Indikator oder Skript zu definieren, da das NewTick-Ereignis für diese nicht erzeugt wird ...".