[ARCHIV] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 3. - Seite 170

 
splxgf:
Ihre Version kann auf diese beiden Zeilen reduziert werden, die der Version des Autors hinzugefügt werden, und mit einigen Änderungen an den Bedingungen sollten die Dinge im Prinzip ganz schön schnell gehen.
Sind Sie sicher?
 
MaxZ:
Sind Sie sicher?

Ihr Vorschlag besteht im Wesentlichen darin, Kerzen, die nicht in den Bereich UPPprice/LOWprice fallen, von den Prüfungen und Berechnungen auszuschließen... ist dies durch zwei Zeilen ausgeschlossen. Wenn Sie nicht aus der Schleife herausfallen, bedeutet das, dass der Preis in dem Bereich liegt, den wir brauchen, und wir führen die Standardprüfungen durch. Ihr Code kann schneller gehen, nur zum Nachteil der Ergebnisse, weil die Logik der Arbeit mit INS ist sehr verworren, um den Wert dieser Variable aus der vorherigen Iteration zu verwenden ist unsinnig.

 
splxgf:

Ihr Vorschlag besteht im Wesentlichen darin, Kerzen, die nicht in den Bereich UPPprice/LOWprice fallen, von den Prüfungen und Berechnungen auszuschließen... ist dies durch zwei Zeilen ausgeschlossen. Wenn Sie nicht aus der Schleife herausfallen, bedeutet das, dass der Preis in dem Bereich liegt, den wir brauchen, und wir führen die Standardprüfungen durch. Ihr Code kann schneller gehen, nur zum Nachteil der Ergebnisse, weil die Logik der Arbeit mit INS ist sehr verworren, um den Wert dieser Variable aus der vorherigen Iteration zu verwenden ist unsinnig.

Sie sind sich also sicher! :))))


Sie haben vorhin den Kodex zitiert:

splxgf:
        if (LOWprice > iHigh(NULL,60,i)) continue;
        if (UPPprice < iLow (NULL,60,i)) continue;

Wenn der Kurs unter dem Tiefststand liegt, warum sollten wir prüfen, ob der Kurs über dem Höchststand liegt? In Ihrer Version ist diese Bedingung nicht ausgeschlossen. Aber das ist mein Vorschlag:

         if (UPP)
            ... // не выполнится
         if (LOW)
            if (LOWprice < iLow (NULL,60,i))
               continue;
            else
            ..

sie ist ausgeschlossen.

Ich will nicht leugnen, dass mein Code vielleicht nicht optimal ist.

Aber was glauben Sie, um wie viel schneller

         if (UPP)

funktionieren wird als.

         if (LOWprice > iHigh(NULL,60,i))

?

In der Tat:

UPP = LOWprice > iHigh(NULL, 60, i);

Nur ich weiß das mit Sicherheit (außer bei Geboten innerhalb des aktuellen historischen Balkens) und Sie berechnen es...

 
abolk:


Ja, ja.

Man muss schon so verdreht sein, dass man aus drei klaren Codezeilen einen schwer verständlichen Code macht.

Wenn Sie auf die Idee gekommen wären, den iLow, iHigh Scheck aufzuteilen, hätten Sie ihn gleich aufteilen können:

Und machen Sie keine Witze

Und haben Sie schon einmal darüber nachgedacht, dass verdrehter, umständlicher Code manchmal schneller laufen kann als einfache drei Zeilen? :)))
 
 INS = True;
   
   for (int i=1; i<=6000; i++)
   {
      if (INS)
      {
         if (LOWprice > iHigh(NULL,60,i))
         {
            INS = False;
            UPP = True;
            LOW = False;
            continue;

Betrachten Sie diesen Abschnitt des Codes

INS=True;

Die Schleife ging

wenn (INS) der Flug in Ordnung ist

if (LOWprice...) zum Beispiel ist die Bedingung wahr, aber dann geht es schief, weil wir INS=False erhalten und zur nächsten Iteration übergehen

dann if (false) und wir sind fertig, denn es ist ein weiterer Balken, also was soll's...

Was meinen Code betrifft, so prüfe ich nicht den Preis, sondern ob der Bar innerhalb des Korridors von +300/300 Pips des aktuellen Preises liegt, und wenn dies der Fall ist, sollte er berücksichtigt werden. Alle anderen Optimierungen sind nicht so kritisch, da die ersten beiden Prüfungen beispielsweise 90% der unnötigen Balken eliminieren.

 
splxgf:

dann wenn (falsch) und wir sind im Arsch, weil es eine andere Bar ist, müssen Sie fragen, was die...

Nicht gesegelt, sondern weiter gesegelt { ... }.
 

und schwamm dann wirklich...

Warum glauben Sie, dass boolesche Variablen schneller werden, wenn auf jede Bedingung ein weiteres if (LOWprice > iHigh(NULL,60,i)) folgt, d.h. die gleichen Eier, aber von der Seite plus eine Bedingung und eine Menge Zuweisungen...

 

Wow!

An dieser Stelle werden die Argumente heiß.

Ich will es einmal so formulieren:

 extern int Distance = 3000;
 int CountH,NewCountH,CountL,NewCountL,CountB,NewCountB;
 
 double ResistH,ResistL,ResistB;
 
//======================================================================
int start(){


   double bid = Bid;
   double UPPprice = bid+Distance*Point;
   double LOWprice = bid-Distance*Point;
      NewCountH=0;
      NewCountL=0;
      NewCountB=0;
      ResistH=0;
      ResistL=0;
      ResistB=0;
  
   while(LOWprice<UPPprice)
    {
      CountH=0;
      CountL=0;
      for(int i=1; i<=6000; i++){  
          if(iHigh(NULL,60,i)>LOWprice) 
          if(LOWprice>iLow(NULL,60,i)) 
          if(LOWprice> bid) CountH++; else CountL++;
       }  
      if(CountH>NewCountH){NewCountH=CountH;ResistH=LOWprice;} 
      if(CountL>NewCountL){NewCountL=CountL;ResistL=LOWprice;}   
      LOWprice=LOWprice+25*Point;
    }
      CountB=0;
      for(i=1; i<=6000; i++){  
          if(iHigh(NULL,60,i)>=bid) if(bid>=iLow(NULL,60,i)) CountB++;
       }
      if(CountB>NewCountB){NewCountB=CountB;ResistB=bid;}  
 
     
   
    Comment("\n", 
      "\n",     
//      "\n", "     Spread                                ", MarketInfo(Symbol(), MODE_SPREAD),  
      "\n", "     Distance                             ", Distance, 
      "\n", "     CountH                               ", NewCountH, 
      "\n", "     CountB                               ", NewCountB, 
      "\n", "     CountL                                ", NewCountL, 
      "\n", "-------------------------------------------------- ",     
      "\n");
      

    if(ObjectFind("RH") == -1) {
      ObjectCreate("RH", OBJ_HLINE, 0, 0, ResistH);
      ObjectSet("RH", OBJPROP_COLOR, Magenta);
      ObjectSet("RH", OBJPROP_STYLE, STYLE_DOT);
     }else ObjectMove("RH", 0, iTime(NULL,0,0), ResistH);

    string text=DoubleToStr(NewCountH,0);
    ObjectDelete("RHtxt"); 
     if(ObjectFind("RHtxt") == -1) {
       ObjectCreate("RHtxt", OBJ_TEXT, 0, 0, 0);
       ObjectSetText("RHtxt", text , 8, "Arial", Aqua);
       ObjectMove("RHtxt", 0, iTime(NULL,0,0), ResistH);
      }else ObjectMove("RHtxt", 0, iTime(NULL,0,0), ResistH);
      
    string text3=DoubleToStr(NewCountB,0);
    ObjectDelete("RBtxt"); 
     if(ObjectFind("RBtxt") == -1) {
       ObjectCreate("RBtxt", OBJ_TEXT, 0, 0, 0);
       ObjectSetText("RBtxt", text3 , 8, "Arial", Aqua);
       ObjectMove("RBtxt", 0, iTime(NULL,60,0), ResistB);
      }else ObjectMove("RBtxt", 0, iTime(NULL,60,0), ResistB);

    if(ObjectFind("RL") == -1) {
      ObjectCreate("RL", OBJ_HLINE, 0, 0, ResistL);
      ObjectSet("RL", OBJPROP_COLOR, Magenta);
      ObjectSet("RL", OBJPROP_STYLE, STYLE_DOT);
     }else ObjectMove("RL", 0, iTime(NULL,0,0), ResistL);
     
    string text2=DoubleToStr(NewCountL,0);
    ObjectDelete("RLtxt");
    if(ObjectFind("RLtxt") == -1) {
      ObjectCreate("RLtxt", OBJ_TEXT, 0, 0, 0);
      ObjectSetText("RLtxt", text2 , 8, "Arial", Aqua);
      ObjectMove("RLtxt", 0, iTime(NULL,0,0), ResistL);
     }else ObjectMove("RLtxt", 0, iTime(NULL,0,0), ResistL);

 return (0);}            //====== THE END ======================

Es ist sehr interessant, die Preisentwicklung zu beobachten. Er geht immer in die Richtung des geringsten Widerstands.

Sie können sogar seine zukünftige Bewegung vorhersagen. Beachten Sie.

Der Preis ist wie Wasser, das in einem Bach fließt.

Ich danke Ihnen allen!

 

Bitte sagen Sie mir, wie ich die Taktnummer mit dem höchsten Wert des Hochs finden kann.


Suche_Hoch=MathMax( Hoch[i],Hoch[1])

 
001:

Können Sie mir sagen, wie ich die Nummer des Balkens mit dem höchsten Chai-Wert herausfinden kann?


Suche_Hoch=MathMax( Hoch[i],Hoch[1])

Sie können die Website https://docs.mql4.com/ru/array/ArrayMaximum besuchen.

durch das Array High.

Grund der Beschwerde: