Caractéristiques du langage mql5, subtilités et techniques - page 42

 
PositionSelect remet à zéro toutes les données PositionGet en cas d'échec.
 
Une erreur classique
void Func( int& ) {}

void OnStart()
{
  int i;
  
  Func(true ? i : i); // '?' - parameter passed as reference, variable expected
  Func(i); // OK
}
 
fxsaber:
Une erreur classique
Vous vous demandez si c'est la bonne erreur ?
 
fxsaber:
Je me demande si c'est une erreur.

En termes d'exactitude, c'est correct.

Apparemment, l'opérateur ternaire ne renvoie pas une référence mais une variable par valeur (ce qui n'est pas logique en principe).

Il s'agit d'une variable temporaire, ce que les fonctions mql avec des paramètres de référence n'aiment pas.

Autrement dit, l'opérateur ternaire et les références ne s'entendent pas, en un mot.

Le bon sens... je ne sais pas, la construction est logique.
 
Combinateur:

Vous obtenez une variable de rampe, ce que les fonctions mql avec paramètres de référence n'aiment pas.

MqlTick Out()
{
  MqlTick Tick = {0};
  
  return(Tick);
}

void In( MqlTick& ) {}

void OnStart()
{
  In(Out());
}
Exactement "aime". C'est à cause de tels exemples que des doutes sont apparus.
 
fxsaber:
Exactement "aime". C'est à cause de tels exemples que des doutes sont apparus.

D'après la description de l'erreur elle-même, il s'agit d'un problème de liens et de non-liens.

Peut-être que quelqu'un ayant des connaissances plus récentes de la langue pourra vous expliquer.

 

fxsaber:
Erreur classique

void Func( int& ) {}

void OnStart()
{
  int i;
  
  Func(true ? i : i); // '?' - parameter passed as reference, variable expected
  Func(i); // OK
}

Et si oui

void Func( int& ) {}

void OnStart()
{
  int i;
  
  Func((true ? i : i));
  Func(i); // OK
}
 
Alexey Viktorov:

Que pensez-vous de ça ?

C'est plus rapide de vérifier que de faire un post.

Ça ne marche pas, bien sûr.

 
fxsaber:

C'est plus rapide de vérifier que de faire un post.

Ça ne marche pas, bien sûr.

Bizarre. J'utilise toujours cette option lorsque j'ouvre des positions avec ou sans prise de position.

          trade.BuyStop(lot, buyPrice, _Symbol, 0.0, (tacke == 0.0 ? 0 : buyPrice+tacke));
          trade.SellStop(lot, sellPrice, _Symbol, 0.0, (tacke == 0.0 ? 0 : sellPrice-tacke));
 
Alexey Viktorov:

Étrange. J'utilise toujours cette option lorsque j'ouvre des positions avec ou sans prise de contrôle.

Dans ce cas, il fonctionnera même sans supports supplémentaires.