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

 
OK, merci.
 
Vladimir Karputov #:

Comment obtenir le code de la fonction WinAPI 'GetLastError' ? Je veux supprimer un fichier inexistant avec la fonction WinAPI DeleteFileW.

Selon l'aidede DeleteFileW, si

Description du code "ERROR_FILE_NOT_FOUND".

ERREUR_FICHIER_NON_TROUVÉ

2 (0x2)

Le système ne trouve pas le fichier spécifié.


En d'autres termes, je devrais obtenir un '2' lorsque j'essaie de supprimer un fichier qui n'existe pas, mais j'obtiens un '0'.


Mon code de script :

Résultat de l'exécution :

uint res = kernel32::GetLastError();
 

Koldun Zloy #:

uint res = kernel32::GetLastError();


! Merci !

 

Comment puis-je faire fonctionner ce contrôle ?

double arrHTF[];
double arrETF[];

bool printArr(double& arr[])
   {
   bool isequal=arr==arrETF;
   Print("equals ETF"+isequal);
   return true;
   }
 
Max B #:

Comment pouvons-nous faire fonctionner ce contrôle ?

Si ce n'est pas ArrayCompare, alors dans une boucle par comparaison élément par élément.

 
JRandomTrader #:

Si ce n'est pas ArrayCompare, alors en boucle par comparaison élément par élément.

Je veux juste comparer les pointeurs, pas les contenus (vers quel tableau pointe arr ?).

 

Bonjour ! Veuillez m'aider à obtenir la valeur de la marge requise.

#include <Trade\SymbolInfo.mqh>  
#include <Trade\AccountInfo.mqh>

CSymbolInfo    m_symbol;                     // symbol info object
CAccountInfo   m_account;                    // account info object
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   m_symbol.Name(Symbol());
   
   const string this_symbol = m_symbol.Name();
   //ENUM_ORDER_TYPE order_type = ORDER_TYPE_BUY;
   double order_volume =  0;
   double order_price = 0;
   double Price_Min_Lot = 0;
   
   
   order_volume = 1;
   order_price = m_symbol.Ask();
   Price_Min_Lot = m_account.MarginCheck(this_symbol, ORDER_TYPE_BUY, order_volume, order_price);
   Print("Требуемая маржа =", Price_Min_Lot);
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {

   
  }
//+---------------------------------------------------------------

Résultats : "Marge requise =1,797693134862316e+308", c'est-à-dire la valeur maximale du double. Pouvez-vous me dire où se trouve l'erreur, ou comment faire pour obtenir la bonne valeur, merci d'avance.



 
-IMXO- #:

Bonjour ! Veuillez m'aider à obtenir la valeur de la marge requise.

Résultats : "Marge requise =1,797693134862316e+308", c'est-à-dire la valeur maximale du double. Veuillez m'indiquer où se trouve l'erreur ou comment obtenir la bonne valeur, merci d'avance.

En général, lorsque vous imprimez des valeurs doubles, utilisez :

Print( DoubleToString(Price_Min_Lot,2) );
 
Vitaly Muzichenko #:

En général, lorsque vous imprimez des valeurs doubles, utilisez :

Ça ne servira à rien. La fonction elle-même est paralysée. Et l'utilisation de SB est doublement gênante.

Et il est également exécuté dans OnInit(), lorsque rien n'a encore été chargé.
 
-IMXO- #:

Bonjour ! Veuillez m'aider à obtenir la valeur de la marge requise.

Résultats : "Marge requise =1,797693134862316e+308", c'est-à-dire la valeur maximale du double. Veuillez me dire où se trouve l'erreur ou comment obtenir la bonne valeur, merci d'avance.



Lorsque vous vérifiez quelque chose après les heures de travail, vérifiez le script.

Raison: