Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 1388

 
OK, grazie.
 
Vladimir Karputov #:

Come ottenere il codice dalla funzione WinAPI 'GetLastError'? Voglio cancellare un file inesistente con la funzione WinAPI DeleteFileW.

Secondo l'aiuto diDeleteFileW, se

Descrizione del codice 'ERROR_FILE_NOT_FOUND

ERRORE_FILE_NON_TROVATO

2 (0x2)

Il sistema non riesce a trovare il file specificato.


Cioè, dovrei ottenere un '2' quando cerco di cancellare un file che non esiste - ma ottengo uno '0'.


Il mio codice di script:

Risultato dell'esecuzione:

uint res = kernel32::GetLastError();
 

Koldun Zloy #:

uint res = kernel32::GetLastError();


! Grazie!

 

Come posso far funzionare questo controllo?

double arrHTF[];
double arrETF[];

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

Come possiamo far funzionare questo controllo?

Se non ArrayCompare, allora in un ciclo per confronto elemento per elemento.

 
JRandomTrader #:

Se non ArrayCompare, allora in loop per confronto elemento per elemento.

Voglio solo confrontare i puntatori, non i contenuti (a quale array punta arr?)

 

Buon pomeriggio! Per favore aiutatemi a ottenere il valore di margine richiesto.

#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()
  {

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

Output: "Margine richiesto =1.797693134862316e+308", cioè il valore massimo del doppio. Potete per favore dirmi dov'è l'errore, o come fare per ottenere il giusto valore, grazie in anticipo.



 
-IMXO- #:

Buon pomeriggio! Per favore aiutatemi a ottenere il valore di margine richiesto.

Output: "Margine richiesto =1.797693134862316e+308", cioè il valore massimo del doppio. Per favore consigliatemi dov'è l'errore o come ottenere il giusto valore, grazie in anticipo.

In generale, quando stampate un valore doppio, usate:

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

In generale, quando stampate valori doppi, usate:

Non servirà. La funzione stessa è paralizzata. E usare SB è doppiamente imbarazzante.

Ed è anche eseguito in OnInit(), quando nulla è stato ancora caricato.
 
-IMXO- #:

Buon pomeriggio! Per favore aiutatemi a ottenere il valore di margine richiesto.

Output: "Margine richiesto =1.797693134862316e+308", cioè il valore massimo del doppio. Per favore, ditemi dov'è l'errore o come ottenere il valore giusto, grazie in anticipo.



Quando controllate qualcosa dopo l'orario, controllate in script.