Questions d'un "mannequin - page 24

 
tol64:
Puis-je avoir un exemple simple ?
montrez le code à quelle ligne l'avertissement est émis et quels types il jure.
 
sergeev:
montrer le code sur quelle ligne l'avertissement est émis et quels types il désapprouve.

void OnStart()
  {
//--- выведем всю информацию, доступную из функции AccountInfoInteger()
   printf("ACCOUNT_LOGIN =  %d",AccountInfoInteger(ACCOUNT_LOGIN));
   printf("ACCOUNT_LEVERAGE =  %d",AccountInfoInteger(ACCOUNT_LEVERAGE));
   bool thisAccountTradeAllowed=AccountInfoInteger(ACCOUNT_TRADE_ALLOWED);
   bool EATradeAllowed=AccountInfoInteger(ACCOUNT_TRADE_EXPERT);

   ENUM_ACCOUNT_TRADE_MODE tradeMode=AccountInfoInteger(ACCOUNT_TRADE_MODE);           // На этой строке: Строка 25 Столбец 40 и Столбец 78
   ENUM_ACCOUNT_STOPOUT_MODE stopOutMode=AccountInfoInteger(ACCOUNT_MARGIN_SO_MODE);   // И на этой     : Строка 26 Столбец 44 и Столбец 86

...
Mis en évidence et commenté dans le code.
 
tol64:

Mis en évidence et commenté dans le code.

   ENUM_ACCOUNT_TRADE_MODE tradeMode=(ENUM_ACCOUNT_TRADE_MODE)AccountInfoInteger(ACCOUNT_TRADE_MODE);
   ENUM_ACCOUNT_STOPOUT_MODE stopOutMode=(ENUM_ACCOUNT_STOPOUT_MODE)AccountInfoInteger(ACCOUNT_MARGIN_SO_MODE);

 
uncleVic:

Merci. J'aimerais également poser une question sur le réglage du mode de niveau d'arrêt. Puis-je seulement connaître ce mode tel qu'il est défini par le serveur de trading ou puis-je le modifier ?
 
tol64:
Merci. J'aimerais également poser une question sur le réglage du mode de niveau d'arrêt. Je ne peux connaître ce mode que parce qu'il est défini par le serveur de trading ou puis-je le changer ?
Stop Out est en lecture seule, vous ne pouvez pas le définir. Et tout ce avec quoi les fonctions AccountInfo...() opèrent est en lecture seule.
 
tol64:

Mis en évidence et commenté dans le code.

Merci, l'exemple a été corrigé. Maintenant, le compilateur n'émettra pas d'avertissement sur cet exemple.
 

Il s'avère que partout où l'on a besoin de lire certaines données/propriétés, il faut appliquer la variante qu'oncleVic a montrée: https://www.mql5.com/ru/forum/3775/page24#comment_84143.

Par exemple, si vous le faites, ce qui semble logique à première vue (et familier de la transition mql4), le compilateur générera un avertissement :

   int val_x_dist;
   int val_y_dist;
   
   Create_Label(0,"INFO","//-------------------- INFORMATION --------------------//",ANCHOR_RIGHT_UPPER,CORNER_RIGHT_UPPER,font,font_sz,fnt_clr_hdr,10,20);
   
   val_x_dist = ObjectGetInteger(0,"INFO",OBJPROP_XDISTANCE,0);
   val_y_dist = ObjectGetInteger(0,"INFO",OBJPROP_YDISTANCE,0);

Pour se débarrasser des avertissements du compilateur, il faut procéder de la manière suivante :

   int val_x_dist;
   int val_y_dist;
   
   Create_Label(0,"INFO","//-------------------- INFORMATION --------------------//",ANCHOR_RIGHT_UPPER,CORNER_RIGHT_UPPER,font,font_sz,fnt_clr_hdr,10,20);
   
   val_x_dist = (ENUM_OBJECT_PROPERTY_INTEGER)ObjectGetInteger(0,"INFO",OBJPROP_XDISTANCE,0);
   val_y_dist = (ENUM_OBJECT_PROPERTY_INTEGER)ObjectGetInteger(0,"INFO",OBJPROP_YDISTANCE,0);

Ou comme l'a démontré oncleVic, c'est-à-dire :

   Create_Label(0,"INFO","//-------------------- INFORMATION --------------------//",ANCHOR_RIGHT_UPPER,CORNER_RIGHT_UPPER,font,font_sz,fnt_clr_hdr,10,20);
   
   ENUM_OBJECT_PROPERTY_INTEGER val_x_dist = (ENUM_OBJECT_PROPERTY_INTEGER)ObjectGetInteger(0,"INFO",OBJPROP_XDISTANCE,0);
   ENUM_OBJECT_PROPERTY_INTEGER val_y_dist = (ENUM_OBJECT_PROPERTY_INTEGER)ObjectGetInteger(0,"INFO",OBJPROP_YDISTANCE,0);

Est-ce que j'ai bien compris ?

 
AUser:
Pouvez-vous me dire comment fonctionne le générateur de nombres aléatoires et s'il existe une fonction permettant de vérifier si le nombre est pair ou impair ? A propos du générateur, il est souhaitable d'avoir une explication dans un langage compréhensible pour les nuls))). L'aide n'est pas comprise))

Voici l'exemple le plus simple pour savoir ce que fait une fonction particulière. Exécutez le script et regardez le journal.

void OnStart()
  {
   int x;
   
   x = MathRand();
   
   Print("x : ",x);
  }
 
#define Vrsn "0.01a"
#property version   Vrsn

ChartSaveTemplate(Chrt_Smbl_ID_Crrnt,Vrsn);

le modèle est enregistré sous le nom de 0.tpl

#define Vrsn "001a"

Le modèle est enregistré sous le nom de001a.tpl, qui est en fait ce que vous voulez obtenir.

Question : comment enlever le point au préalable ?

upgr probablement plus précisément : comment trouver un caractère dans une chaîne de caractères ?

upgr et une autre confusion. S'il y a un point dans

#define Vrsn "0.01a"

il y a un point, il coupe non seulement ce qui le suit, mais aussi ce qui est aplati.

ChartSaveTemplate(Chrt_Smbl_ID_Crrnt,Vrsn+Smbl_Crrnt);
Pourquoi ? Si StringToInteger est déclenché à la compilation...
 
Silent:

le modèle est enregistré sous le nom de 0.tpl

Le modèle est enregistré sous le nom de001a.tpl, qui est en fait ce que vous voulez obtenir.

Question : comment enlever le point au préalable ?

upgr est probablement plus précis : comment trouver un caractère dans une chaîne de caractères ?

Il y a aussi un malentendu. Si en

il y a un point, il coupera non seulement ce qui est après lui, mais aussi ce qui est aplati

pourquoi ? si, vraisemblablement, StringToInteger est déclenché au moment de la compilation.

Tout ce qui est écrit sur le disque est nécessairement vérifié pour éviter les déchets et les malveillances.

Si vous écrivez un modèle, le modèle doit être un fichier avec l'extension tpl, peu importe ce que l'utilisateur voulait. C'est pourquoi le point défini par l'utilisateur dans le nom est coupé.