Questions des débutants MQL4 MT4 MetaTrader 4 - page 22

 
A1exPit:
Je voulais dire que lorsque des données sont passées dans un tableau, elles seront remplies séquentiellement, c'est-à-dire tableau1[] = x ; dans quelle cellule la valeur x sera-t-elle écrite si le numéro de la cellule n'est pas spécifié directement ?

Non. Si vous voulez remplir toutes les cellules avec la même valeur , utilisez ArrayInitialize().

Si vous voulez écrire des valeurs différentes, utilisez la boucle de manière séquentielle. Si vous devez écrire dans une cellule spécifique, spécifiez son adresse.

 
Vitalie Postolache:

Non. Si vous voulez remplir toutes les cellules avec la même valeur , utilisez ArrayInitialize().

Si vous voulez écrire des valeurs différentes, utilisez la boucle de manière séquentielle. Si vous devez écrire dans une cellule spécifique, spécifiez son adresse.

Merci,

Voici une autre question : grâce à ArrayCopy, pourrai-je créer un nouveau tableau dont la taille est égale au nombre de cellules remplies dans le tableau précédent ? Ou dois-je d'abord créer un deuxième tableau, et seulement ensuite le copier ?

int  ArrayCopy(
   void&        dst_array[],         // куда копируем
   const void&  src_array[],         // откуда копируем
   int          dst_start=0,         // с какого индекса пишем в приемник
   int          src_start=0,         // с какого индекса копируем из источника
   int          count=WHOLE_ARRAY    // сколько элементов
   );
 
A1exPit:

Merci,

Voici une autre question : avec ArrayCopy, puis-je créer un nouveau tableau ayant la même taille que le nombre de cellules remplies dans le tableau précédent ? Ou dois-je d'abord créer un deuxième tableau et ensuite le copier ?

int  ArrayCopy(
   void&        dst_array[],         // куда копируем
   const void&  src_array[],         // откуда копируем
   int          dst_start=0,         // с какого индекса пишем в приемник
   int          src_start=0,         // с какого индекса копируем из источника
   int          count=WHOLE_ARRAY    // сколько элементов
   );
Créer d'abord, bien sûr.
 
Vitalie Postolache:
Créer d'abord, bien sûr.
Merci, encore une fois.
 
Spread = MarketInfo(Symbol(),MODE_SPREAD);
if ( Spread >= 0 ) ExtSpread [x] = Spread;
if ( TimeCurrent() - iTime( NULL, 0, 0) >= 60 ){
int Spread2[x];
ArrayCopy( Spread2[],ExtSpread[],0,0, WHOLE_ARRAY);}
x=x+1;
if (x > 1000) x = 0;

Comme ceci, j'écris la valeur du Spread dans ExtSpread[] et lorsque la barre d'une minute est terminée, je la déplace dans un autre tableau - qui devrait, en théorie, survivre à la barre suivante.

Taille ExtSpread [1000]

Une autre question : si le tableau est numéroté à partir de zéro, alors, si sa taille est de 1000, sa dernière cellule sera 999 ?

Alors c'est correct : x++ et si ( x > 999 ) x=0 ;

 
A1exPit:
Spread = MarketInfo(Symbol(),MODE_SPREAD);
if ( Spread >= 0 ) ExtSpread [x] = Spread;
if ( TimeCurrent() - iTime( NULL, 0, 0) >= 60 ){
int Spread2[x];
ArrayCopy( Spread2[],ExtSpread[],0,0, WHOLE_ARRAY);}
x=x+1;
if (x > 1000) x = 0;

Comme ceci, j'écris la valeur du Spread dans ExtSpread[] et lorsque la barre d'une minute est terminée, je la déplace dans un autre tableau - qui devrait, en théorie, survivre à la barre suivante.

Taille ExtSpread [1000]

Une autre question : si le tableau est numéroté à partir de zéro, alors, si sa taille est de 1000, sa dernière cellule sera 999 ?

Alors c'est correct : x++ et si ( x > 999 ) x=0 ;

Spread = (int)MarketInfo(Symbol(),MODE_SPREAD);
if ( Spread >= 0 ) ExtSpread [x] = Spread;
if ( TimeCurrent() - iTime( NULL, 0, 0) >= 60 ){
int Spread2[];ArrayInitialize (Spread2,EMPTY_VALUE); ArrayResize( Spread2,x,0);
ArrayCopy( Spread2,ExtSpread,0,0, WHOLE_ARRAY);}
x=x+1;
if (x > 999) x = 0;
 
Bonjour ! Pourriez-vous me dire, j'ai téléchargé la version mt4 636 sur android, mais il ne voit pas la liste des brokers. La version terminale n'est plus supportée ?(( Si oui, où puis-je en télécharger une qui fonctionne ?
 

Reporté :

scomoroh, 2016.12.04 18:58

Une erreur s'est produite lors de la compilation. Quel est le problème ? Aidez-nous à le résoudre !
Dossiers :
 
Vladimir Karputov:

Reporté :

scomoroh, 2016.12.04 18:58

Pendant la compilation, une erreur apparaîtra. Quel est le problème ? Aidez-moi à le résoudre !

ArrayInitialize(max,0) =>ArrayInitialize(arr,0) ;

for(int a=1;a<=pr;a++) =>for(int a=1;a<pr;a++)

Ce code n'est pas du tout optimal, le terminal se bloque pendant quelques minutes lors de son lancement, puis il est très lent, et si vous l'exécutez avec plusieurs graphiques, il ne fonctionnera pas du tout.

 
Vitalie Postolache:

ArrayInitialize(max,0) =>ArrayInitialize(arr,0) ;

for(int a=1;a<=pr;a++) =>for(int a=1;a<pr;a++)

Ce code n'est pas du tout optimal, le terminal se bloque pendant quelques minutes lors de son lancement, puis il est très lent, et si vous l'exécutez avec plusieurs graphiques, il ne fonctionnera pas du tout.

Oui, merci, j'ai tout réparé, pas d'erreurs. Des retards, oui, très. Pouvez-vous me dire dans quelle direction aller pour optimiser, ou dois-je tout réécrire ?
Raison: