tableau statique ? - page 4

 
Pour i=Bars dans la deuxième boucle, tous les éléments du tableau sont imprimés, mais pas les valeurs, et tous = 0.

Je suis confus.

J'ai enlevé la terminaison i-- dans la première boucle, mais cela n'a eu aucun effet.

 

Avec un petit changement, ton code semble faire quelque chose...

2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5min AUDUSD,H1 : v1[0]= 0
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5min AUDUSD,H1 : v1[1]= 0
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5min AUDUSD,H1 : v1[2]= 0
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5min AUDUSD,H1 : v1[3]= 0.8202
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5min AUDUSD,H1 : v1[4]= 0.8202
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5min AUDUSD,H1 : v1[5]= 0.8202
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5min AUDUSD,H1 : v1[6]= 0.8202
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5min AUDUSD,H1 : v1[7]= 0.8202
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5min AUDUSD,H1 : v1[8]= 0

Quand tu as lu le livre sur les tableaux, as-tu vu où il est dit ceci ?

"Lors de la déclaration d'un tableau, le type de données, le nom du tableau et le nombre d'éléments de chaque dimension doivent être spécifiés :"

 
RaptorUK:

Avec un petit changement, ton code semble faire quelque chose...

2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5min AUDUSD,H1 : v1[0]= 0
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5min AUDUSD,H1 : v1[1]= 0
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5min AUDUSD,H1 : v1[2]= 0
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5min AUDUSD,H1 : v1[3]= 0.8202
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5min AUDUSD,H1 : v1[4]= 0.8202
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5min AUDUSD,H1 : v1[5]= 0.8202
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5min AUDUSD,H1 : v1[6]= 0.8202
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5min AUDUSD,H1 : v1[7]= 0.8202
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5min AUDUSD,H1 : v1[8]= 0

Quand tu as lu le livre sur les tableaux, as-tu vu où il est dit ceci ?

"Lors de la déclaration d'un tableau, le type de données, le nom du tableau et le nombre d'éléments de chaque dimension doivent être spécifiés :"

Oui, je l'ai fait.

J'avais compris que le double v1[] décidait du type de données globalement et avant le start().
Puis [i] initialise le tableau en lui indiquant le nombre d'éléments dans le tableau, dans ce cas 1 dimension avec éléments = Bars, cependant le nombre change pendant la désincrémentation de i--.
n'est-ce pas ?

Donc si le nombre d'éléments est désincrémenté, comment le tampon stocke-t-il et affiche-t-il l'indicateur si le nombre d'éléments n'est plus présent ?
Ou je suppose que je devrais dire ce qui arrive aux éléments lorsqu'ils se désincrémentent [i] ?
Disparaissent-ils simplement ? Sont-ils toujours stockés dans v1[i] pour être référencés ou ont-ils disparu ?

Si je parviens à le savoir, je pourrai peut-être comprendre comment les référencer ou, s'ils ont disparu, comment les conserver pour les utiliser.
Ce que je ne comprends pas, c'est que l'instruction else semble pouvoir référencer v1[i]=v1[i+1]. Alors comment peut-elle référencer v1[i] si à ce moment-là v1[i] = 0 quand j'imprime à ce moment-là.

D'une certaine manière, cela a du sens pour = 0, car si le tableau est vide, l'impression du tableau vide sera égale à 0 puisqu'il n'y a pas d'éléments dans le tableau.

Je ne suis pas sûr d'avoir bien compris, mais je continue à y penser et à lire le document encore et encore.

Maintenant, si l'on considère que les barres ont plus d'un numéro associé à elles, la dimension pourrait être différente de ce que je pense.
Je pense donc que je vais me documenter davantage sur ce sujet pour être sûr de bien comprendre ce que c'est.

Je pensais qu'il s'agissait d'un nombre unique, comme dans Bar = le nombre de barres sur le graphique.
Lorsque j'imprime les barres, cela me donne 1002 sur le graphique 5min et je pense que c'est une dimension unique.


Je vais continuer à travailler dessus.

 

Si vous voulez agrandir (ou réduire) un tableau, vous devez utiliser ArrayResize. . . un tableau est comme n'importe quelle autre variable . . . c'est juste qu'il peut y en avoir plusieurs auxquelles vous pouvez accéder facilement . . .

Copiez ce code et exécutez-le en tant que script, que pensez-vous que le résultat sera ?

//+------------------------------------------------------------------+
//|                                                  TestArray.mq4   |
//|                      Copyright © 2011, MetaQuotes Software Corp. |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, MetaQuotes Software Corp."
#property link      ""


// #property indicator_chart_window



//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   
   
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
   {
   double test[];
   
   test[39] = 45.6;
   Print("test[39]= ",test[39] );
   

      return(0);
   }
//+------------------------------------------------------------------+

     
 
2011.09.21 07:54:26 none EURUSD,M5 : supprimé
2011.09.21 07:54:26 none EURUSD,M5 : uninit reason 0
2011.09.21 07:54:26 none EURUSD,M5 : deinitialisé
2011.09.21 07:54:26 none EURUSD,M5 : test[39]= 0
2011.09.21 07:54:26 none EURUSD,M5 : initialisé


Voici ce que le script produit Je l'ai copié exactement

J'ai juste double-cliqué dessus et il s'est exécuté et voici ce qui apparaît dans l'onglet experts

Le journal du script dit juste
2011.09.21 07:54:26 Script none EURUSD,M5 : removed
2011.09.21 07:54:26 Script none EURUSD,M5 : loaded successfully

Je pensais que je devrais voir 45.6 comme sortie ? ai-je tort ?

J'ai créé mon propre tableau fixe [5] = {1,2,3,4,5}.

Et je semble être capable d'imprimer [5] ou d'imprimer [3] etc.

Laissez-moi mettre les accolades et revoir le script.





 

OK, bien... maintenant, modifiez cette ligne...

. . . et réessayez.

double test[];

to

double test[40];
 
2011.09.21 08:07:58 none EURUSD,M5 : désinitialisé raison 0
2011.09.21 08:07:58 none EURUSD,M5 : Désinitialisé
2011.09.21 08:07:58 none EURUSD,M5 : test[39]= 45.6


Mince, je dois sortir et je reviens dans quelques heures.

Peut-être que je peux y penser un peu plus en conduisant.

 

Il n'y a vraiment rien à penser...

"Lors de la déclaration d'un tableau, le type de données, le nom du tableau et le nombre d'éléments de chaque dimension doivent être spécifiés :"

Vous devez déclarer le nombre d'éléments dans le tableau . . .

 

Intéressant
Je pensais que la déclaration du nombre d'éléments se faisait avec v1[i] ? puisque i=Bars je pensais que c'était la même chose que de dire v1[Bars] qui est le nombre que l'on veut.


Si ce n'est pas déclaré, je ne comprends pas comment l'indicateur pourrait savoir ce qu'est v1[i] si je ne peux pas le référencer non plus ?
Ce même script fonctionne sur la version de l'indicateur et stocke ceci dans le tampon de v1[] alors comment sait-il comment référencer le tampon afin de dessiner la ligne ?

Cela fonctionne actuellement sur l'indicateur. Est-ce un autre sujet ?

 

Oui, les tampons Indicator sont traités différemment des tableaux ordinaires.

v[i] ne déclare pas le tableau, c'est juste un des éléments . . mais double v[] ; est un tableau avec zéro élément . . donc v[anything] = toujours 0

Raison: