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

 
Marat Sultanov:
Es gibt da einen Codeabschnitt, den ich nicht verstanden habe. Sie müssen es selbst korrigieren.


Können Sie mir zeigen, was genau....

 
Rafael Sahibgareev:


Können Sie mir zeigen, was genau....


Laden Sie den Code herunter -Marat Sultano schrieb dort, was unklar ist.
 

Marat, vielen Dank für deine Hilfe mit dem Code ......

Eine weitere Frage, bitte zeigen Sie mir, wie ich eine Schleife für den folgenden Codeabschnitt richtig anordnen kann ......

//--- цикл расчета 
      
        {
        
         //--- если предыдущая свеча имеет параметры больше MSC
         if(IsLossCandle)
            if(ASSHighBuf[i-1]>=max_size_candel)
               BufferLossCanle[i]=low[i-1];
                 {
                  if(IsTopShadow)
                     if((ASSOpenBuf[i-1]==ASSCloseBuf[i-1]) && IMaDifBuff[i]-IMaDifBuff[i-1]>0 || (ASSLowBuf[i-1]==0 && IMaDifBuff[i]-IMaDifBuff[i-1]>0))
                        BufferTop[i]=low[i-1];
                  if(IsLowerShadow)
                     if((ASSOpenBuf[i-1]==ASSCloseBuf[i-1]) && IMaDifBuff[i]-IMaDifBuff[i-1]<0 || (ASSLowBuf[i-1]==0 && IMaDifBuff[i]-IMaDifBuff[i-1]<0))
                        BufferLower[i]=high[i-1];
                 }
        }


//--- return value of prev_calculated for next call 
   return(rates_total);
  }
 
Rafael Sahibgareev:

Marat, vielen Dank für deine Hilfe mit dem Code ......

Eine weitere Frage, bitte zeigen Sie mir, wie ich eine Schleife für das folgende Codefragment richtig anordnen kann ......

Das geht so:

//--- цикл расчета
   const int Limit = fmax(prev_calculated, 1);

   for(int i=Limit; i<rates_total; ++i)
   {
      //--- если предыдущая свеча имеет параметры больше MSC
      if(IsLossCandle)
      {
         if(ASSHighBuf[i-1]>=max_size_candel) BufferLossCanle[i]=low[i-1];

         if(IsTopShadow)
         {
            if((ASSOpenBuf[i-1]==ASSCloseBuf[i-1] && IMaDifBuff[i]-IMaDifBuff[i-1]>0) || (ASSLowBuf[i-1]==0 && IMaDifBuff[i]-IMaDifBuff[i-1]>0))
            {
               BufferTop[i]=low[i-1];
            }
         }

         if(IsLowerShadow)
         {
            if((ASSOpenBuf[i-1]==ASSCloseBuf[i-1] && IMaDifBuff[i]-IMaDifBuff[i-1]<0) || (ASSLowBuf[i-1]==0 && IMaDifBuff[i]-IMaDifBuff[i-1]<0))
            {
               BufferLower[i]=high[i-1];
            }
         }
      }
   }

//--- return value of prev_calculated for next call 
   return(rates_total);
}

Ich bin nur durch einen Teil Ihres Codes verwirrt:

if(ASSHighBuf[i-1]>=max_size_candel)
   BufferLossCanle[i]=low[i-1];
     {

Warum sollte die geschweifte Klammer dort stehen? Gab es eine Absicht, die Sie nicht umgesetzt haben? (Ich spiele damit auf den bedingtenelse-Operator an)

 

Marat, noch einmal vielen Dank, meinen letzten Code habe ich vor 22 Jahren in der Schule geschrieben.

Ich saß auf Kosten eines anderen Betreibers, wo man ihn als Unterbrecher der nächsten vier Betreiber einsetzen kann.....

Ich denke, ich kann das selbst erledigen ........

Marat, bitte geben Sie mir einen Hinweis oder verweisen Sie mich auf den Link, wenn die Berechnung ohne die Verwendung der "Schleife" ..... durchgeführt werden kann.

 
Rafael Sahibgareev:

Marat, noch einmal vielen Dank, meinen letzten Code habe ich vor 22 Jahren in der Schule geschrieben.

Ich saß auf Kosten eines anderen Betreibers, wo man ihn als Unterbrecher der nächsten vier Betreiber einsetzen kann.....

Ich denke, ich kann das selbst erledigen ........

Marat, bitte gib mir einen Hinweis oder verweise mich auf den Link, wenn diese Berechnung ohne eine "Schleife" durchgeführt werden kann .....

Darf ich Sie fragen, was Sie mit dem besprochenen Code erreichen wollen? Wenn ich erst einmal verstehe, was Sie vorhaben, wird es für mich viel einfacher sein, Ihnen zu helfen :)
 

Über den Zyklus aus Neugier gefragt...... Ist dies möglich......

Es ist ohne knifflig, der erste Operator "if" wenn funktioniert verboten, dann nicht funktionieren Richtung Klassifizierung Betreiber .......

Für die Zukunft plane ich, den Code so zu ändern, dass er auch bei einem Null-Balken tickt,

so dass derselbe Ban-Klassifikator auf dem Tick erscheint, wenn der Spread über....Indikator hinausgeht, ohne zusätzliche Clustering-Filter scalper....

Meines Erachtens leben alle Muster in ticks......

 

Sie brauchen einen Zyklus, um durch die Gitterstäbe zu fahren. Wenn Sie nur für die letzten 1 oder 2 Takte Messwerte benötigen, können Sie auf die Schleife verzichten, aber wenn Sie ein Dutzend oder mehr Takte analysieren müssen, sollten Sie die Schleife verwenden, nicht wahr?

Wenn Sie sich weigern, Schleifen zu verwenden, werden Sie zu chinesischem Code verdammt sein :)

 

Raphael, ich empfehle Ihnen, in dieser Reihenfolge zu lesen:

  1. Bedingte if-else-Anweisung
  2. Operator für
  3. While-Schleifenoperator
  4. Betreiber fortsetzen fortsetzen
  5. Fortsetzungsoperator Pause

Und wenn Sie sich verstricken, dann gehen Sie tiefer:

  1. Betreiber
  2. Grundlagen der Sprache
Ich habe sie nach der Häufigkeit der Verwendung in der Praxis unterteilt. Nichts Kompliziertes, nur genug, um das Wesentliche zu verstehen.


 

Danke für die Ratschläge und Empfehlungen, heute ist es zu spät, morgen werde ich wieder die Hilfe und Artikel lesen....

Ich interessierte mich nur für die letzten drei Balken einschließlich Option[0].....

Später werde ich wahrscheinlich mehr brauchen 15-20 ...... Ich kann nicht ohne Zyklen tun .....

Nochmals herzlichen Dank für Ihre Hilfe und Unterstützung.....

Grund der Beschwerde: