Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1388

 
Хорошо, спасибо 
 
Vladimir Karputov #:

Как получить код из WinAPI функции 'GetLastError'? Я хочу удалить несуществующий файл при помощи WinAPI функции DeleteFileW.

Согласно справке DeleteFileW если 

Описание кода 'ERROR_FILE_NOT_FOUND'

ERROR_FILE_NOT_FOUND

2 (0x2)

The system cannot find the file specified.


То есть я должен получить '2' при попытке удалить несуществующий файл - но я получаю '0'.


Мой код скрипта:

Результат выполнения:

uint res = kernel32::GetLastError();
 

Koldun Zloy #:

uint res = kernel32::GetLastError();


! Спасибо!

 

Как можно  сделать чтобы эта проверка работала?

double arrHTF[];
double arrETF[];

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

Как можно  сделать чтобы эта проверка работала?

Если не ArrayCompare, то в цикле поэлементным сравнением.

 
JRandomTrader #:

Если не ArrayCompare, то в цикле поэлементным сравнением.

Мне бы просто указатели сравнить а  не содержимое ( на какой массив arr указывает?)

 

Доброго времени! Помогите, пожалуйста, с получением величины тербуемой маржи.

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

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

Выводит: " Требуемая маржа =1.797693134862316e+308", т.е. максимальное значение double. Подскажите, пожалуйста- где ошибка, или как сделать, чтобы верное значение получить, заранее благодарю.



 
-IMXO- #:

Доброго времени! Помогите, пожалуйста, с получением величины тербуемой маржи.

Выводит: " Требуемая маржа =1.797693134862316e+308", т.е. максимальное значение double. Подскажите, пожалуйста- где ошибка, или как сделать, чтобы верное значение получить, заранее благодарю.

В целом, когда принтуете double значения, то используйте:

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

В целом, когда принтуете double значения, то используйте:

Не поможет. Сама функция корявая. А с использованием СБ корявая вдвойне.

Да ещё и выполняется в OnInit(), когда ничего ещё не подгружено.
 
-IMXO- #:

Доброго времени! Помогите, пожалуйста, с получением величины тербуемой маржи.

Выводит: " Требуемая маржа =1.797693134862316e+308", т.е. максимальное значение double. Подскажите, пожалуйста- где ошибка, или как сделать, чтобы верное значение получить, заранее благодарю.



Когда что-то проверяете в нерабочее время, проверяйте в скрипте.

Причина обращения: