Article-20147-MQL5-Terminal.../Test_STARTED_FROM_CONFIG_2.mq5

77 行
6.1 KiB
MQL5

2026-03-26 17:44:46 +07:00
<EFBFBD><EFBFBD>//+------------------------------------------------------------------+
//| 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()
{
//--- 1JO28< ?5@5<5==K5 8 @0A?5G0B05< 2 6C@=0; A?>A>1 70?CA:0 B5@<8=0;0
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));
//--- A;8 70?CA: 87 :><0=4=>9 AB@>:8 A :>=D83C@0F8>==K< D09;><
if(config_start)
{
//---  F8:;5 ?> :>;8G5AB2C ATTEMPTS ?>?KB>:
for(int i=0;i<ATTEMPTS;i++)
{
//--- @0A?5G0B05< 2 6C@=0;5 =><5@ ?>?KB:8
PrintFormat("Receiving %s data. Attempt %d",SYMBOL,i+1);
//--- >;CG05< 40==K5 A8<2>;0 SYMBOL 2 :>;8G5AB25 COUNT 8 A>E@0=O5< :>4 2>72@0B0
//--- A;8 2AQ CA?5H=> - ?@5@K205< F8:;, 8=0G5 - 64Q< WAIT A5:C=4 8 ?>2B>@O5<
err_code=GetSymbolData(received);
//--- 0A?5G0B05< :>;8G5AB2> ?>;CG5==KE 40==KE
PrintFormat("Received: %d",received);
if(err_code==0)
break;
Print("...");
Sleep(WAIT);
}
Print("All attempts completed");
//--- > 7025@H5=88 2A5E ?>?KB>: ?>;CG5=8O 40==KE A8<2>;0
//--- 70:@K205< B5@<8=0; A C:070=85< :>40 2>72@0B0 err_code
TerminalClose(err_code);
}
}
//+------------------------------------------------------------------+
//| >;CG05B 40==K5 ?> A8<2>;C SYMBOL 2 :>;8G5AB25 COUNT |
//+------------------------------------------------------------------+
int GetSymbolData(int &data_received)
{
int err=0, copied=0;
double array[];
//--- 0?@0H8205< 40==K5 A8<2>;0 SYMBOL 2 :>;8G5AB25 COUNT
ResetLastError();
copied=CopyClose(SYMBOL,PERIOD,0,COUNT,array);
err=GetLastError();
//--- A;8 :>;8G5AB2> A:>?8@>20==KE 40==KE =5 @02=> 70?@>H5==><C
if(copied!=COUNT)
{
//--- A;8 =5B >H81:8, 7=0G8B 5IQ =5 2A5 40==K5 ?>;CG5=K.
//--- #:065< :>4 >H81:8 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;
}
//+------------------------------------------------------------------+