Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 1388

 
OK, obrigado.
 
Vladimir Karputov #:

Como obter o código da função WinAPI 'GetLastError'? Quero apagar um ficheiro inexistente com a função WinAPI DeleteFileW.

De acordo com a ajudado DeleteFileW, se

Descrição do código 'ERROR_FILE_NOT_FOUND

ERROR_FILE_NOT_FOUND

2 (0x2)

O sistema não consegue encontrar o ficheiro especificado.


Ou seja, eu deveria obter um '2' quando tento apagar um ficheiro que não existe - mas recebo um '0'.


O meu código de script:

Resultado da execução:

uint res = kernel32::GetLastError();
 

Koldun Zloy #:

uint res = kernel32::GetLastError();


! Obrigado!

 

Como posso fazer com que este cheque funcione?

double arrHTF[];
double arrETF[];

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

Como podemos fazer este controlo funcionar?

Se não for o ArrayCompare, então num loop by element-by-element comparison.

 
JRandomTrader #:

Se não for o ArrayCompare, então em loop by element-by-element comparison.

Só quero comparar apontadores, não conteúdos (que matriz aponta para arr?)

 

Boa tarde! Por favor, ajude-me a obter o valor de margem requerido.

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

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

Saídas: "Margem necessária =1,797693134862316e+308", ou seja, valor máximo do dobro. Pode dizer-me por favor onde está o erro, ou como fazer para obter o valor certo, obrigado antecipadamente.



 
-IMXO- #:

Boa tarde! Por favor, ajude-me a obter o valor de margem requerido.

Saídas: "Margem necessária =1,797693134862316e+308", ou seja, valor máximo do dobro. Por favor, informe-me onde está o erro ou como obter o valor correcto, obrigado antecipadamente.

Em geral, quando se imprime um valor duplo, utilizar:

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

Em geral, quando se imprimem valores duplos, utilizar:

Não vai ajudar. A função em si é aleijada. E a utilização de SB é duplamente embaraçosa.

E também é executado no OnInit(), quando ainda nada foi carregado.
 
-IMXO- #:

Boa tarde! Por favor, ajude-me a obter o valor de margem requerido.

Saídas: "Margem necessária =1,797693134862316e+308", ou seja, valor máximo do dobro. Por favor, digam-me onde está o erro ou como obter o valor correcto, obrigado antecipadamente.



Quando verifica algo fora de horas, verifique o guião.

Razão: