[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 14

 

la fonction elle-même cessera de fonctionner, s'il y a une requote par la condition else.

if ( res!=-1){    
//..
}else{
    err = GetLastError();
    if ( err > 1) try = 0;
    Comment("Ошибка - ", err);          
}

try = 0, donc la boucle while s'arrêtera et openOrder() retournera false

Mais si nous utilisons la construction while(!openOrder(...)){}, alors il continuera à fonctionner jusqu'à ce qu'il ouvre un ordre.

 
keekkenen . C'est ce qui m'intrigue : dans votre fonction start() while(!openOrder(...)){}, vous n'indiquez pas ce qui est fait dans {}. Limitez-vous le nombre de tentatives de requêtes?
 

Puisque vous avez écrit que l'ordre doit s'ouvrir, j'ai donné une construction aussi "rigide", s'il doit s'ouvrir, il s'ouvrira quel que soit le nombre de tentatives... Si nous ouvrons les ordres normalement, alors le temps n'est pas nécessaire, nous pouvons passer le nombre de tentatives dans try et dans la fonction déterminer déjà s'il faut réagir aux erreurs critiques ou les ignorer et juste essayer d'ouvrir l'ordre une fois...


L'intérêt de while(!openOrder(...)){} est que nous créons une boucle éternelle, c'est-à-dire qu'elle fonctionnera jusqu'à ce que la commande soit ouverte.

En fait, définir les tactiques à utiliser lors de l'ouverture des ordres, nous vous aiderons...

 

Voici la question :

Je ne peux pas travailler avec un tableau.

J'initialise le tableau, je le remplis avec n'importe quelle donnée, mais quand je le lis, il y a des zéros.

Qu'est-ce que je fais de mal ?


double MASS[];

for (int i = 0; i < 10; i++)
 {
  MASS[ i]= i;
 }
for (int n = 0; n < 10; n++)
 {
  Print( MASS[ n]);
 }
 
Kontra писал(а) >>

Je ne peux pas travailler avec un tableau.

Vous devez spécifier la taille du tableau, par exemple lors de sa déclaration :

double MASS[10];

Ou alors :

ArrayResize(MASS,10);
 

Que faire si je ne sais pas quelle sera la taille de mon tableau?

Et même si je le fais, ça ne compile pas :

J'insère une variable externe :

extern int Razmer = 10;

Et le reste du texte :

   double MASS[ Razmer];

for (int i = 0; i < 10; i++)
 {
  MASS[ i]= i;
 }
for (int n = 0; n < 10; n++)
 {
  Print( MASS[ n]);

La sortie est :

'Razmer' - nombre entier attendu C:\Program Files\MetaTrader - Alpari2\experts\temp.mq4 (36, 16)
']' - virgule ou point-virgule attendu C:\Program Files\MetaTrader - Alpari2\experts\temp.mq4 (36, 22)
'MASS' - variable non définie C:\Program Files\MetaTrader - Alpari2\experts\temp.mq4 (40, 3)
'MASS' - variable non définie C:\Program Files\MetaTrader - Alpari2\experts\temp.mq4 (44, 9)

 
Kontra писал(а) >>

Que faire si je ne sais pas quelle sera la taille de mon tableau ?

Vous devez donc utiliser la fonction ArrayResize lorsque vous connaissez le nombre d'éléments que contiendra le tableau.

Avec une variable externe, comme vous pouvez le voir, cela ne fonctionnera pas :)

Vous pouvez le faire de cette façon :

ArrayResize(MASS,Razmer);
 

Merci, cher chirurgien.

Ça marche :)

 
int init()
  { 
   double A=AccountBalance()         //Определяем баланс
   double B=NormalizeDouble( A/50,0)  //Выполняем вычисления и делаем результат целым числом
   double Lots= B*0.01                //Вычисление лота.

if ( Lots>0)Alert("Лот будет ", Lots )

   return(0);
  }
Quelle est l'erreur ici et comment la mettre en œuvre ?
 

Qu'essayez-vous exactement d'atteindre ?

Raison: