[ARCHIVE] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 3. - page 170

 
splxgf:
Votre version peut être réduite à ces deux lignes ajoutées à la version de l'auteur et, moyennant quelques modifications des conditions, elle devrait en principe accélérer les choses de manière très satisfaisante.
Vous êtes sûr ?
 
MaxZ:
Vous êtes sûr ?

Votre suggestion consiste essentiellement à exclure des contrôles et des calculs les bougies qui ne se situent pas dans la fourchette UPPprice/LOWprice... ce qui est exclu par deux lignes. Si vous ne sortez pas de la boucle, cela signifie que le prix est dans la fourchette dont nous avons besoin et que nous effectuons les vérifications standard. Votre code peut aller plus vite mais au détriment des résultats, car la logique de travail avec les INS est très alambiquée ; utiliser la valeur de cette variable de l'itération précédente est un non-sens.

 
splxgf:

Votre suggestion consiste essentiellement à exclure des contrôles et des calculs les bougies qui ne se situent pas dans la fourchette UPPprice/LOWprice... ce qui est exclu par deux lignes. Si vous ne sortez pas de la boucle, cela signifie que le prix est dans la fourchette dont nous avons besoin et que nous effectuons les vérifications standard. Votre code peut aller plus vite mais au détriment des résultats, car la logique de travail avec les INS est très alambiquée ; utiliser la valeur de cette variable de l'itération précédente est un non-sens.

Alors vous êtes sûr ! :))))


Vous avez cité le code plus tôt :

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

Si le prix est inférieur à Low, pourquoi devrions-nous vérifier si le prix est supérieur à High ? Dans votre version, cette condition n'est pas exclue. Mais dans ma suggestion :

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

il est exclu.

Je ne nie pas que mon code n'est peut-être pas le plus optimal.

Mais combien de fois plus rapide pensez-vous

         if (UPP)

fonctionnera que.

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

?

En fait :

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

Je suis le seul à le savoir (sauf lorsqu'on enchérit à l'intérieur de la barre historique actuelle) et vous le calculez...

 
abolk:


Ouais.

Il faut être tordu au point de transformer trois lignes de code claires en un code difficile à comprendre.

Si vous aviez eu l'idée de diviser le chèque iLow, iHigh, vous auriez pu le faire tout de suite :

Et ne faites pas de plaisanteries

Et avez-vous déjà pensé que du code tordu et encombrant peut parfois s'exécuter plus rapidement qu'un simple code de trois lignes ? :)))
 
 INS = True;
   
   for (int i=1; i<=6000; i++)
   {
      if (INS)
      {
         if (LOWprice > iHigh(NULL,60,i))
         {
            INS = False;
            UPP = True;
            LOW = False;
            continue;

Considérez cette section du code

INS=True ;

La boucle est passée

si (INS) le vol est ok

if (LOWprice...) par exemple, la condition est vraie, mais ensuite cela se passe mal car nous obtenons INS=False et nous passons à l'itération suivante

alors si (false) et on a fini, parce que c'est une autre barre, alors que...

Pour ce qui est de mon code, je ne vérifie pas le prix mais si la barre est à moins de +300/300 pips du prix actuel et si c'est le cas, elle doit être prise en compte. Toutes les autres optimisations ne sont pas aussi critiques car les deux premières vérifications, par exemple, éliminent 90% des barres inutiles.

 
splxgf:

alors si (faux) et on est foutu, parce que c'est un bar différent, on doit se demander ce que...

Pas navigué, mais navigué sur autre chose { ... }.
 

et puis vraiment nagé...

Pourquoi pensez-vous que les variables booléennes seront plus rapides si chaque condition est suivie d'un autre if (LOWprice > iHigh(NULL,60,i)), c'est-à-dire les mêmes œufs mais du côté plus une condition et beaucoup d'affectations...

 

Whoa !

C'est là que les discussions s'enflamment.

Je vais le dire comme ça pour l'instant :

 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 ======================

Il est très intéressant de suivre l'évolution des prix. Il va toujours dans la direction de la moindre résistance.

Vous pouvez même prédire son futur mouvement. Observez.

Le prix est comme l'eau qui coule dans un ruisseau.

Merci à tous !

 

Veuillez me dire comment trouver le numéro de barre ayant la valeur la plus élevée de high.


Search_High=MathMax( High[i],High[1])

 
001:

Pouvez-vous me dire comment trouver le numéro de la barre ayant la valeur chai la plus élevée ?


Search_High=MathMax( High[i],High[1])

Vous pouvez vous rendre sur https://docs.mql4.com/ru/array/ArrayMaximum

par le biais du réseau High.