Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 445

 
Artyom Trishkin:

Lesen Sie also iCustom() direkt beim ersten Schleifenindex.

Eine weitere Frage ist, dass Sie Daten vom aktuellen Balken nach links benötigen. Deshalb sage ich - lesen Sie von Null bis zur gefundenen Zahl, aber nicht mehr als rates_total-1.

Nur lesen, wenn Grenzwert>1

In anderen Fällen gibt es keine neuen Daten, und der Index des von Ihnen benötigten Balkens ändert sich nicht.

Das ist nicht der Fall, aber die Taktzahlen der nächstgelegenen Pfeile im Kommentar sind korrekt

//+------------------------------------------------------------------+
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<1) return(0);
   int limit=rates_total-prev_calculated;
   if(limit>1) 
     {
      limit=rates_total-1;
      ArrayInitialize(BufferUP,EMPTY_VALUE);
      ArrayInitialize(BufferDN,EMPTY_VALUE);
     }
   for(int i=limit; i>=0; i--) 
     {
         if(NormalizeDouble(iCustom(NULL,0,"Arrow v.3",0,i),Digits)!=EMPTY_VALUE)
           {
            num_buy=i;

           }
//
      if(num_buy==10)
        {
         BufferUP[i+1]=low[i+1]-distance*MyPoint;
         
        }
         if(NormalizeDouble(iCustom(NULL,0,"Arrow v.3",1,i),Digits)!=EMPTY_VALUE
            )
           {
            num_sell=i;

           }
      if(num_sell==10)
        {
         BufferDN[i+1]=high[i+1]+distance*MyPoint;

        }
     
      Comment(num_buy,"num_sell",num_sell);
     }
//--- return value of prev_calculated for next call

   return(rates_total);
  }
 
mila.com:

Das will er nicht.

Lesen Sie, was ich schreibe?

Die andere Frage ist, dass Sie Daten von der aktuellen Leiste nach links wünschen. Deshalb sage ich - lesen Sie von Null bis zur gefundenen Zahl, aber nicht mehr als rates_total-1.

Nur lesen bei Grenzwert>1

 
Artyom Trishkin:

Lesen Sie, was ich schreibe?

Die andere Frage ist, dass Sie Daten von der aktuellen Leiste nach links benötigen. Deshalb sage ich - lesen Sie von Null bis zur gefundenen Zahl, aber nicht mehr als rates_total-1.

Nur lesen bei Grenzwert>1

Habe ich es nicht so gemacht?
if(Grenze>1)
{
limit=rates_total-1;

 
mila.com:

Ist es nicht das, was ich getan habe?
if(Grenze>1)
{
limit=rates_total-1;

Das haben Sie als nächstes getan:

for(int i=limit; i>=0; i--) 

Wovon habe ich gesprochen?

 
Artyom Trishkin:

Was Sie als nächstes getan haben, ist Folgendes:

Was habe ich gesagt?

Lesen bei Grenzwert>1

for(int i=limit; i>1; i--) 

Ich weiß nicht, wie man es richtig macht?

 
mila.com:

Lesen bei Grenzwert>1

Ich weiß nicht, wie man es richtig macht?

Deshalb sage ich - lesen Sie von Null bis zur gefundenen Zahl, aber nicht mehr als rates_total-1.
 
Artyom Trishkin:
Deshalb sage ich: Lesen Sie von Null an, um die richtige Zahl zu finden, aber nicht mehr als rates_total-1.

Ich sage Ihnen, ich weiß nicht, wie ich es machen soll. Zeigen Sie es mir, bitte.)

 
mila.com:

Ich habe Ihnen gesagt, dass ich nicht weiß, wie man das macht. Zeigen Sie es mir, bitte.)

if(limit>1)
  {
   for(int i=0; i<limit; i++) 
     { 
      // тут поиск до нужного вам бара. Нашли - запомнили бар или поставили точку куда нужно и break;
     }
  }

Dieser Zyklus geht nur bis zu dem gewünschten Balken (wenn er gefunden wird), oder die ganze Geschichte geht bis zum Limit.

 
Artyom Trishkin:

Dieser Zyklus geht nur bis zu dem von Ihnen gewünschten Balken (falls gefunden) oder für die gesamte Geschichte bis zum Limit.

mir, ganz schlecht, nichts zeigt.

//+------------------------------------------------------------------+
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<1) return(0);
   int limit=rates_total-prev_calculated;
   if(limit>1) 
     {
      limit=rates_total-1;
      ArrayInitialize(BufferUP,EMPTY_VALUE);
      ArrayInitialize(BufferDN,EMPTY_VALUE);
     }
  if(limit>1)
  {
   for(int i=0; i<limit; i++) 
     { 
         if(NormalizeDouble(iCustom(NULL,0,"Arrow v.3",0,i),Digits)!=EMPTY_VALUE)
           {
            num_buy=i;

           }
//
      if(num_buy==10)
        {
         BufferUP[i+1]=low[i+1]-distance*MyPoint;
         
        }
         if(NormalizeDouble(iCustom(NULL,0,"Arrow v.3",1,i),Digits)!=EMPTY_VALUE
            )
           {
            num_sell=i;

           }
      if(num_sell==10)
        {
         BufferDN[i+1]=high[i+1]+distance*MyPoint;

        }
     
      Comment(num_buy,"num_sell",num_sell);
     }
     }
//--- return value of prev_calculated for next call

   return(rates_total);
  }
 
mila.com:

Ich bin wirklich schlecht, es ist nichts zu sehen.

Ich verstehe immer noch nicht: Was wollen Sie finden und anzeigen? Nur in Worten - ohne Code.

Sie schreiben hier:

Hallo, helfen Sie mir, bitte.

Ich möchte jederzeit die Nummer des Balkens wissen, auf dem sich der Indikatorpfeil befindet.

Im Beispiel habe ich versucht, den Puffer zu füllen, wenn der Pfeil auf dem zehnten Balken steht.

Es stellt sich also sofort die Frage: Warum suchen Sie in der zehnten Leiste nach ihr? Und ganz allgemein, auf welche Leiste wollen Sie? Und welcher Pfeil? Die allerletzte? Oder die letzten beiden - die obere und die untere? Oder kennen Sie den Balken des gewünschten Pfeils durch seine Nummer von rechts nach links?

Dies ist nicht klar.

Und fügen Sie den gesamten Indikator an, nicht OnCalculate()

Grund der Beschwerde: