Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 1388

 
Bien, gracias.
 
Vladimir Karputov #:

¿Cómo obtener el código de la función WinAPI 'GetLastError'? Quiero eliminar un archivo inexistente con la función WinAPI DeleteFileW.

Según la ayudade DeleteFileW, si

Descripción del código "ERROR_FILE_NOT_FOUND

ERROR_FILE_NOT_FOUND

2 (0x2)

El sistema no puede encontrar el archivo especificado.


Es decir, debería obtener un "2" al intentar eliminar un archivo que no existe, pero obtengo un "0".


El código de mi guión:

Resultado de la ejecución:

uint res = kernel32::GetLastError();
 

Koldun Zloy #:

uint res = kernel32::GetLastError();


¡! Gracias.

 

¿Cómo puedo hacer que esta comprobación funcione?

double arrHTF[];
double arrETF[];

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

¿Cómo podemos hacer que esta comprobación funcione?

Si no es ArrayCompare, entonces en un bucle por comparación elemento a elemento.

 
JRandomTrader #:

Si no es ArrayCompare, entonces en el bucle por comparación elemento a elemento.

Sólo quiero comparar punteros, no contenidos (¿a qué array apunta arr?)

 

¡Buenas tardes! Por favor, ayúdenme a obtener el valor del margen 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()
  {

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

Salida: "Margen requerido =1,797693134862316e+308", es decir, valor máximo del doble. Me pueden decir por favor dónde está el error, o cómo hacer para obtener el valor correcto, gracias de antemano.



 
-IMXO- #:

¡Buenas tardes! Por favor, ayúdenme a obtener el valor del margen requerido.

Salida: "Margen requerido =1,797693134862316e+308", es decir, valor máximo del doble. Por favor, aconséjenme dónde está el error o cómo obtener el valor correcto, gracias de antemano.

En general, cuando se imprime un valor doble, se utiliza

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

En general, cuando se imprimen valores dobles, se utiliza:

No servirá de nada. La función en sí misma está paralizada. Y usar SB es doblemente incómodo.

Y también se ejecuta en OnInit(), cuando aún no se ha cargado nada.
 
-IMXO- #:

¡Buenas tardes! Por favor, ayúdenme a obtener el valor del margen requerido.

Salida: "Margen requerido =1,797693134862316e+308", es decir, valor máximo del doble. Por favor, díganme dónde está el error o cómo obtener el valor correcto, gracias de antemano.



Cuando compruebes algo fuera de horario, comprueba el guión.