76 lines
6.1 KiB
MQL5
76 lines
6.1 KiB
MQL5
//+------------------------------------------------------------------+
|
|
//| Test_STARTED_FROM_CONFIG_2.mq5 |
|
|
//| Copyright 2025, MetaQuotes Ltd. |
|
|
//| https://www.mql5.com |
|
|
//+------------------------------------------------------------------+
|
|
#property copyright "Copyright 2025, MetaQuotes Ltd."
|
|
#property link "https://www.mql5.com"
|
|
#property version "1.00"
|
|
|
|
#define SYMBOL "AUDUSD"
|
|
#define PERIOD PERIOD_H1
|
|
#define COUNT 10000
|
|
#define ATTEMPTS 3
|
|
#define WAIT 1000
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| Script program start function |
|
|
//+------------------------------------------------------------------+
|
|
void OnStart()
|
|
{
|
|
//--- Объявим переменные и распечатаем в журнал способ запуска терминала
|
|
int err_code=0, received=0;
|
|
bool config_start=(bool)MQLInfoInteger(MQL_STARTED_FROM_CONFIG);
|
|
string text=(config_start ? "Started from config" : "Started manually");
|
|
Alert(StringFormat("MT5 Automation Test Script: %s",text));
|
|
|
|
//--- Если запуск из командной строки с конфигурационным файлом
|
|
if(config_start)
|
|
{
|
|
//--- В цикле по количеству ATTEMPTS попыток
|
|
for(int i=0;i<ATTEMPTS;i++)
|
|
{
|
|
//--- распечатаем в журнале номер попытки
|
|
PrintFormat("Receiving %s data. Attempt %d",SYMBOL,i+1);
|
|
//--- Получаем данные символа SYMBOL в количестве COUNT и сохраняем код возврата
|
|
//--- Если всё успешно - прерываем цикл, иначе - ждём WAIT секунд и повторяем
|
|
err_code=GetSymbolData(received);
|
|
|
|
//--- Распечатаем количество полученных данных
|
|
PrintFormat("Received: %d",received);
|
|
if(err_code==0)
|
|
break;
|
|
Print("...");
|
|
Sleep(WAIT);
|
|
}
|
|
Print("All attempts completed");
|
|
//--- По завершении всех попыток получения данных символа
|
|
//--- закрываем терминал с указанием кода возврата err_code
|
|
TerminalClose(err_code);
|
|
}
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Получает данные по символу SYMBOL в количестве COUNT |
|
|
//+------------------------------------------------------------------+
|
|
int GetSymbolData(int &data_received)
|
|
{
|
|
int err=0, copied=0;
|
|
double array[];
|
|
//--- Запрашиваем данные символа SYMBOL в количестве COUNT
|
|
ResetLastError();
|
|
copied=CopyClose(SYMBOL,PERIOD,0,COUNT,array);
|
|
err=GetLastError();
|
|
|
|
//--- Если количество скопированных данных не равно запрошенному
|
|
if(copied!=COUNT)
|
|
{
|
|
//--- Если нет ошибки, значит ещё не все данные получены.
|
|
//--- Укажем код ошибки ERR_HISTORY_NOT_FOUND
|
|
if(err==0)
|
|
err=ERR_HISTORY_NOT_FOUND;
|
|
PrintFormat("%s: CopyClose(%s, H1, 0 - %d) failed. Error %d",__FUNCTION__,SYMBOL,COUNT,err);
|
|
}
|
|
data_received=copied;
|
|
return err;
|
|
}
|
|
//+------------------------------------------------------------------+
|