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

 
yiduwi:

Vielen Dank, können Sie mir sagen, warum der Pfeil auf dem zweiten Balken und nicht auf dem ersten steht?

Sie setzen den Pfeil also auf den zweiten Balken und nicht auf den ersten - er zeichnet sich nicht von selbst, oder? )))

Sie müssen hier ein zusätzliches Element hinzugefügt haben BufferDN[i+1]=high[i+1];

 
Igor Makanu:

Sie setzen den Pfeil also auf den zweiten Balken und nicht auf den ersten - er zeichnet sich nicht von selbst, oder? )))

Ich vermute, dass Sie hier ein zusätzliches Element hinzugefügt haben BufferDN[i+1]=high[i+1];

Äh, ohne den einen, im Allgemeinen wird der Pfeil auf den dritten Balken gesetzt, Code klein, wo habe ich es vermasselt?

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots   2
//--- plot UP
#property indicator_label1  "UP"
#property indicator_type1   DRAW_ARROW
#property indicator_color1  clrLawnGreen
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- plot DN
#property indicator_label2  "DN"
#property indicator_type2   DRAW_ARROW
#property indicator_color2  clrDeepPink
#property indicator_style2  STYLE_SOLID
#property indicator_width2  1

//--- indicator buffers
double         BufferUP[];
double         BufferDN[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,BufferUP);
   SetIndexBuffer(1,BufferDN);
   PlotIndexSetInteger(0,PLOT_ARROW,233);
   PlotIndexSetInteger(1,PLOT_ARROW,234);

//---

   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[])
  {
//---
   if(rates_total<3) return(0);
   int limit=rates_total-prev_calculated;
   if(limit>1)
     {
      limit=rates_total-3;
      ArrayInitialize(BufferUP,EMPTY_VALUE);
      ArrayInitialize(BufferDN,EMPTY_VALUE);
     }
   for(int i=limit; i>=0; i--)
     {
      if (fabs(high[i+1]-high[i+2]) <= 0.0*_Point)
        {
         BufferDN[i]=high[i];
        }
     }
//--- return value of prev_calculated for next call

   return(rates_total);
  }
Wenn ja, geht es zum ersten Takt.
BufferDN[i+2]=high[i+2];
Das verstehe ich nicht.
 
Igor Makanu:

Hier ist die Lösung, aber ich glaube nicht, dass es etwas gibt, was ich in Betracht gezogen habe.

Die Logik sagt, dass es richtig ist.

 
yiduwi:

Ugh, keine Einheit, im Allgemeinen wird der Pfeil auf den dritten Balken gesetzt, Code klein, wo habe ich es vermasselt?

Wenn ja, dann verstehe ich es nicht.

Wahrscheinlich ja, aber ich schreibe es nicht unter MT5, ich könnte falsch liegen.

//+------------------------------------------------------------------+
//|                                                          tst.mq5 |
//|                                                            IgorM |
//|                              https://www.mql5.com/ru/users/igorm |
//+------------------------------------------------------------------+
#property copyright "IgorM"
#property link      "https://www.mql5.com/ru/users/igorm"
#property version   "1.00"
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots   2
//--- plot UP
#property indicator_label1  "UP"
#property indicator_type1   DRAW_ARROW
#property indicator_color1  clrLawnGreen
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- plot DN
#property indicator_label2  "DN"
#property indicator_type2   DRAW_ARROW
#property indicator_color2  clrDeepPink
#property indicator_style2  STYLE_SOLID
#property indicator_width2  1

input int Pips=5;
//--- indicator buffers
double         BufferUP[];
double         BufferDN[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,BufferUP);
   SetIndexBuffer(1,BufferDN);
   PlotIndexSetInteger(0,PLOT_ARROW,233);
   PlotIndexSetInteger(1,PLOT_ARROW,234);
//---
   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[])
  {
//---
   int limit=rates_total-prev_calculated;
   if(limit>1 || prev_calculated==0)
     {
      limit=rates_total-2;
      ArrayInitialize(BufferUP,EMPTY_VALUE);
      ArrayInitialize(BufferDN,EMPTY_VALUE);
     }
   for(int i=limit; i>=0; i--)
     {
      if(fabs(high[i+1]-high[i])<=_Point*(double)Pips) BufferDN[i]=high[i];
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
 
Igor Makanu:

Wahrscheinlich ja, aber ich schreibe nicht unter MT5, ich könnte mich irren

Auch auf der zweiten Leiste setzt mich)

 
Igor Makanu:

Danke, das ist einer der Fehler, aber ich kann immer noch nicht herausfinden, wie man von 159,002 Sekunden auf 44 Stunden, 10 Minuten und 2 Sekunden kommt (Online-Rechner). )


Hier ist die Lösung, aber ich glaube, ich übersehe etwas

2019.06.18 11:46:22.691 tstss EURUSD,H1: h = 44 , m = 10 , s = 2

Scheint mir einfacher zu sein

 int timeinsec = 159002;
 int sec = timeinsec%60;
 int min = ((timeinsec-sec)%3600)/60;
 int hou = (timeinsec-sec-min)/3600;
 
yiduwi:

Auch auf der zweiten Leiste setzt mich)

Der Pfeil sollte nur dort gesetzt werden, wo die Bedingung erfüllt ist, ja, ich habe mich übrigens daran erinnert, dass es für MT5 besser ist, eine volle Slack-Bedingung zu haben:

if(fabs(high[i+1]-high[i])<=_Point*(double)Pips) BufferDN[i]=high[i]; else BufferDN[i]=EMPTY_VALUE;
Alexey Viktorov:

Ich denke, es ist einfacher.

Ich hab's! Danke! Das ist genau das, was ich wollte!

 
Es gibt einen Code mit vielen Print-Aufrufen. Gibt es eine Möglichkeit, sie alle schnell auszuschalten, ohne Print aus dem Code zu entfernen, um sie wieder einzuschalten? Das ist die einzige Möglichkeit, die ich bisher sehe:
bool L=true;
if(L)Print("123");

D.h. alle "Print(" durch "if(L)Print(" ersetzen, vielleicht auch andere Optionen?

 
pivomoe:
Es gibt einen Code, in dem viele Druckaufrufe gemacht werden. Gibt es eine Möglichkeit, sie alle schnell zu deaktivieren, ohne Print aus dem Code zu entfernen? Bisher sehe ich nur diese Option:

D.h. alle "Print(" durch "if(L)Print(" ersetzen, vielleicht auch andere Optionen?

Geben Sie bei den Eingabeparametern das Flag "Drucken" aus. Es wird wie Ihr Code funktionieren, aber das Flag selbst (bool-Variable) wird in den Eingabeparametern sein.

 

Hallo!

Die Optimierung nach allen Symbolen im MT5-Tester funktioniert nicht...

Können Sie mich bitte aufklären, wie das funktionieren kann?

DANKE!