Questions des débutants MQL5 MT5 MetaTrader 5 - page 24

 
Dites-moi, je suis en train d'utiliser une fonction dans une autre. Dans outer, je déclare une variable. Dans l'interne, je l'utilise. Voici à peu près
  string PositionSymboll = "";
   if  (PositionSymboll=PositionGetSymbol(i)){//Возвращает символ соответствующей открытой позиции и автоматически выбирает позицию для дальнейшей работы с ней
    if (PositionGetInteger(POSITION_MAGIC)== MAGIC)//Функция возвращает запрошенное свойство открытой позиции, предварительно выбранной
              { BU_();}}

Etc. Il jure comme ça. 'PositionSymboll' - identifiant non déclaré Redo.mq5 2472 5

Honnêtement, je ne m'attendais pas à une prise ici. Si je l'encapsule dans la fonction BU_() que j'utilise, le pyrimen sera "nul". Que dois-je faire de mieux ?

Il serait très bien pour moi de le déclarer à l'intérieur de la première fonction, dans la boucle if.

 
Oh, vous ! Et même en le déclarant à l'intérieur de la fonction void OnTick(), le compilateur jure aussi la même chose, déjà sur la première fonction ! Je suis dehors, je suis dehors...
 
Dimka-novitsek:
Oh, vous ! Et même en le déclarant à l'intérieur de la fonction void OnTick(), le compilateur se plaint toujours de la même manière, déjà sur la première fonction ! Je vais passer, je viens de tomber...
void OnStart()
  {
   int i=0; long MAGIC=1234;
   
   string PositionSymboll="";
   if(PositionSymboll=PositionGetSymbol(i))
     {//Возвращает символ соответствующей открытой позиции и автоматически выбирает позицию для дальнейшей работы с ней
      if(PositionGetInteger(POSITION_MAGIC)==MAGIC)//Функция возвращает запрошенное свойство открытой позиции, предварительно выбранной
        { BU_();}
     }
  }
void  BU_(){} 

compile normalement, mais la construction

string PositionSymboll="";
   if(PositionSymboll)

discutable, vérifiez-vous les variables de type chaîne de caractères true/false ? ???????? je suis perplexe

la question est rhétorique.

 
Merci ! !! Je suis toujours en train d'apprendre, c'est mon premier EA dans MQL5. Que voulez-vous dire par rhétorique ?
 
Dimka-novitsek:
Merci ! !! Je suis en train d'apprendre, c'est mon premier EA dans MQL5. Que voulez-vous dire par rhétorique ?

Cela signifie ne pas exiger de réponse.

Une simple variable de type chaîne de caractères passée comme expression dans une instruction if, ne produira false que dans un seul cas si la variable n'a pas été initialisée.

Dans tous les autres cas, le contenu de la variable sera donné vrai.

 
Merci ! !!
 

Pourriez-vous me dire s'il existe une fonction qui devrait retourner vrai s'il y a un ordre en attente au prix envoyé à la fonction. Mais il renvoie "chauve" (alternativement vrai/faux). Veuillez m'indiquer où je manque la logique de travail avec les commandes dans mql5 ? (je suis en train d'apprendre).


bool OrderExist(double price)                                                                      // функция возвращает наличие ордера на передаваемой цене
{
         
uint total=OrdersTotal();
ulong    ticket;

for(uint i=0;i<total;i++)
   {
   if((ticket=OrderGetTicket(i))>0)      
      {
      if(NormalizeDouble(OrderGetDouble(ORDER_PRICE_OPEN),4)== price)
         {
         return(true);
         }
      }
   }
return(false);
}
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 
DMXX:

Veuillez me conseiller, il y a une fonction qui devrait retourner vrai s'il y a un ordre en attente au prix que j'ai envoyé à la fonction. Mais il renvoie une question simple (alternativement vrai/faux). Veuillez m'indiquer où je manque la logique de travail avec les commandes dans mql5 ? (je suis en train d'apprendre).

Mais il n'est pas certain que l'ordre s'est ouvert au prix donné, il peut y avoir eu un glissement, donc j'obtiens le résultat suivant : si l'ordre s'est ouvert à temps - vrai, s'il ne l'a pas fait (le prix s'est déplacé) - faux.

 
fyords:
Mais ce n'est pas le fait que l'ordre a été ouvert au prix fixé, un slippage a pu se produire et c'est pourquoi nous obtenons le résultat suivant : si l'ordre a été ouvert à temps - vrai, s'il n'a pas été ouvert à temps (le prix a bougé) - faux.
Oui, il est affiché dans le terminal à ce prix. S'il est en opération, cela signifie qu'il a été placé avec succès, n'est-ce pas ?
 
DMXX:
Oui, il est suspendu dans le terminal à ce prix. S'il est en opération, cela signifie qu'il a été placé avec succès, n'est-ce pas ?

Oui, il est réglé, mais quand il est déclenché...

Ou un autre exemple : nous avons un ordre en attente, son prix diffère de celui du jour d'un point, au tick suivant le prix augmente non pas d'un point, mais, disons, de 3 à 5 points, ce qui entraîne une ouverture à un prix erroné. Un exemple évident est un écart.

Ou peut-être que je ne comprends pas la question et que je suis stupide.