tableau statique ? - page 3

 

OK, je vois quelque chose,

 while(i>=0)
     {
      val1=iFractals(NULL, 0, MODE_UPPER,i);
      if (val1 > 0) v1[i]=High[i];
      else          v1[i]=v1[i+1];

      val2=iFractals(NULL, 0, MODE_LOWER,i);
      if (val2 > 0) v2[i]=Low[i];
      else          v2[i]=v2[i+1];
      
      i--;    
     }

quand est-ce que cette boucle se termine ? quand i n'est pas >=0 c'est à dire -1

alors le code suivant est ...

     for(val1=High[i]; v1[i] == 0 ;i++)  // or v1[i] == EMPTY_VALUE
      {
      Print (v1[i]);
      }

donc la valeur de départ pour i est -1... d'où l'impression. v[-1] est effectivement = 0 et la boucle se termine.

 
Lorsque j'imprime quoi que ce soit, cela semble toujours être égal à 0.

int i=Bars;         
   
   while(i>=0)
     {
      val1=iFractals(NULL, 0, MODE_UPPER,i);
      if (val1 > 0) v1[i]=High[i];
      else          v1[i]=v1[i+1];

      val2=iFractals(NULL, 0, MODE_LOWER,i);
      if (val2 > 0) v2[i]=Low[i];
      else          v2[i]=v2[i+1];
      
      i--;
       
     }
   
     Print (v1[i+10]);
      

J'ai changé i par quelque chose d'autre et les instructions while et même créé un code totalement différent et tout semble = 0 je n'ai aucune idée pourquoi.
Pourtant, l'indicateur fonctionne et le tampon semble contenir val1 dans v1[i] correctement, mais je ne peux pas faire référence à quoi que ce soit dans le tableau pour l'imprimer.

tout est toujours = 0

Je continue à lire.






 
for(v1[i]=High[i]; v1[i] !=0; i++)
      {
      Print (v1[i]);
      }
      

This prints nothing so still having -1 issue I guess
mais s'il commence à -1, il se termine dès qu'il a effectué un cycle, car i++ le ramène également à zéro.

Je ne savais pas que l'instruction for serait affectée par l'instruction while puisque cela se produit en dehors de l'instruction while.

 
int i=Bars;         
   
   while(i>=0)
     {
      val1=iFractals(NULL, 0, MODE_UPPER,i);
      if (val1 > 0)
      { 
      v1[i]=High[i];
      Print (v1[i]);
      }
      else          
      {
      v1[i]=v1[i+1];
      }

      val2=iFractals(NULL, 0, MODE_LOWER,i);
      if (val2 > 0) v2[i]=Low[i];
      else          v2[i]=v2[i+1];
      
      i--;
       
     }
Toujours 0 même en imprimant à l'intérieur et avant la boucle.

Il semble que même les tâches les plus élémentaires m'échappent. Même la lecture de Bars ne mentionne pas le sujet de -1 dans la documentation ou le livre, du moins dans les sections Bars ou Variables prédéfinies où je pensais qu'il devrait être.
C'est décourageant. 1,5 semaines sur ce simple sujet et pourtant l'impression que je pensais être la plus simple des tâches qui m'aiderait à aller dans la bonne direction.

Quelle déception ! LOL

Je vais encore essayer demain.
 

Vous n'avez pas lu mon message très attentivement...

Bars n'est pas égal à -1 à aucun moment... et n'a rien à voir avec le -1 que j'ai mentionné.

Vous utilisez la variable i dans deux boucles... à moins que vous ne la changiez en une autre valeur entre les boucles, la valeur de départ de la seconde boucle sera la valeur d'arrivée de la première boucle.

 
Je suis confus


Je me suis débarrassé de ma boucle for et j'ai pensé que j'allais juste imprimer à l'intérieur de la boucle.
J'ai essayé de réinitialiser i=0 ou i !=0 sans effet. ou même une variable totalement différente comme val3-iFractals.....a.
Et a=0 et non les barres, puis compté vers le haut à partir de là aussi et l'impression est toujours égale à 0.

Je ne comprends pas pourquoi l'impression à l'intérieur de la boucle ne fonctionne pas non plus comme dans le code posté ci-dessus.

Merci

 

Peut-être pouvez-vous répondre à une question pour moi...

Pourquoi tant de personnes ayant peu d'expérience du codage semblent-elles terrifiées par l'ajout d' instructions Print? Pourquoi voulez-vous vous rendre la vie si difficile ? Peut-être êtes-vous adepte du SM ?

Vous avez une seule instruction Print. . . et elle sort 0 . . . vous ne savez même pas quelle était la valeur de i à ce moment-là, vous ne savez pas quelle était la valeur de val1. . . savez-vous comment fonctionne iFractals, je veux dire comment il calcule ce qu'il fait et quelle gamme de valeurs il donne ?

 

J'ai copié votre code, j'ai ajouté des instructions d'impression et je l'ai exécuté... il s'imprime...

2011.09.18 14:42:24 Agent86 EURUSD,H1 : v1[29]= 1.4727

 
RaptorUK:

Peut-être pouvez-vous répondre à une question pour moi...

Pourquoi tant de personnes ayant peu d'expérience du codage semblent-elles terrifiées par l'ajout d'instructions Print ? Pourquoi voulez-vous vous rendre la vie si difficile ? Peut-être êtes-vous adepte du SM ?

Vous avez une seule instruction Print. . . et elle sort 0 . . . vous ne savez même pas quelle était la valeur de i à ce moment là, vous ne savez pas quelle était la valeur de val1. . . savez-vous comment fonctionne iFractals, je veux dire comment il calcule ce qu'il fait et quelle gamme de valeurs il donne ?


Je n'ai pas peur d'ajouter des instructions d'impression, je les ai placées après chaque variable et je ne comprends pas ce qui est imprimé et pourquoi, car ce n'est pas ce que je m'attendais à voir imprimé.
L'unique instruction print que vous voyez n'est pas la seule que j'ai mise là. Je n'aurais pas posté de message si je n'avais essayé qu'une seule instruction d'impression.
Ce n'est qu'après 2 ou 3 semaines à essayer des centaines de choses et à lire et relire des centaines de messages, des dictionnaires, des livres, de la documentation et bien d'autres choses encore que j'ai posté pour essayer de comprendre comment ce tableau fonctionne et comment imprimer les éléments et les valeurs

. J'ai travaillé sur ce sujet 2 ou 3 heures par jour pour essayer de le comprendre et je n'en suis pas beaucoup plus près, bien que j'aie appris beaucoup d'autres choses en essayant de le comprendre.

J'ai complètement réécrit le code avec une boucle for au lieu d'une boucle while et j'ai limité le tableau à 100 éléments en pensant que cela me simplifierait un peu la tâche ; et je n'ai toujours pas pu imprimer les valeurs.


Je ne comprends pas.

Je pensais que iFractals donne la valeur du haut/bas de la bougie du milieu dans une série de 5 bougies à condition que ces 2) bougies à gauche, et 2) bougies à droite soient plus hautes ou plus basses que la bougie du milieu. Marquer ou enregistrer le point haut ou bas de la bougie du milieu.

Je ne connais pas les calculs réels de iFractals, mais je ne pensais pas que cela aurait de l'importance puisque je l'imprimais si >0 ce qui, je pensais, signifiait vrai, et comme il était initialisé avec High[i] également .

Je ne comprends pas.


 
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5 : v1[0]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5 : v1[1]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5 : v1[2]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5 : v1[3]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5 : v1[4]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5 : v1[5]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5 : v1[6]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5 : v1[7]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5 : v1[8]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5 : v1[9]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5 : v1[10]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5 : v1[11]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5 : v1[12]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5 : v1[13]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5 : v1[14]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5 : v1[15]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5 : v1[16]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5 : v1[17]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5 : v1[18]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5 : v1[19]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5 : v1[20]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5 : v1[21]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5 : v1[22]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5 : v1[23]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5 : v1[24]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5 : v1[25]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5 : v1[26]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5 : v1[27]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5 : v1[28]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5 : v1[29]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5 : v1[30]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5 : v1[31]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5 : v1[32]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5 : v1[33]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5 : v1[34]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5 : v1[35]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5 : v1[36]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5 : v1[37]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5 : v1[38]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5 : v1[39]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5 : v1[40]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5 : v1[41]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5 : v1[42]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5 : v1[43]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5 : v1[44]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5 : v1[45]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5 : v1[46]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5 : v1[47]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5 : v1[48]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5 : v1[49]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5 : v1[50]= 0


A partir de ce code et oui il y avait d'autres instructions d'impression partout sauf pour val1 toutes les autres tentatives d'imprimer v1[i] n'importe où dans le code imprime = 0

//+------------------------------------------------------------------+
//|                                                  Agent86_5min.mq4 |
//|                                                    Unfinished POS |
//|                                    
//+------------------------------------------------------------------+
#property copyright "Unfinished POS by Agent86"


//---- input parameters
extern double    TakeProfit=20.0;
extern double    Lots=0.1;
extern double    StopLoss=15.0;
extern int MagicNumber=123486;

double v1[];
double v2[];
double v3[];
double val1;
double val2;
double val3;


//++++ These are adjusted for 5 digit brokers.

int     pips2points;    // slippage  3 pips    3=points    30=points
double  pips2dbl;       // Stoploss 15 pips    0.0015      0.00150
int     Digits.pips;    // DoubleToStr(dbl/pips2dbl, Digits.pips)

    // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
   if (Digits == 5 || Digits == 3)
   {    // Adjust for five (5) digit brokers.
      pips2dbl    = Point*10; pips2points = 10;   Digits.pips = 1;
   } 
   else 
    {    
      pips2dbl    = Point;    pips2points =  1;   Digits.pips = 0; 
    }
    // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl
     
   
    
//---- 

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//---- 
   
//----
   return(0);
  }
   
    
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
  
  
   double   faster = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1), //MODE_MAIN
            slower = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1); //MODE_SIGNAL
            
  
          
   
    for(int i=Bars; i >= 0; i--)
     {
      val1=iFractals(NULL, 0, MODE_UPPER,i);
   
      // Print (val1, (" val1")); //will print some 0's
      if (val1 > 0)
         {        
         
          v1[i]=High[i];
 
         }
      else          
         {
         v1[i]=v1[i+1];
         }
        

      val2=iFractals(NULL, 0, MODE_LOWER,i);
     
      if (val2 > 0) 
         {
         v2[i]=Low[i];
         }
      else          v2[i]=v2[i+1];
     
      i--;
       
     }
   
   for(i=50; i>=0; i--)
      {
      Print ("v1[", i, "]= ", v1[i]);
      }

//----
            
                       
            

           

//---- 

 
                    
        

                
   return(0);
  }    

//+------------------------------------------------------------------+