Изменены критерии оптимизации,
в которых учитывалось два показателя — баланс и некий второй фактор.
Теперь в них учитывается только второй фактор, без баланса. Такие
критерии являются более простыми и понятными для анализа.
Мы собрали пожелания пользователей iOS-версии MetaTrader 5 и сделали масштабный редизайн приложения
import sys chart_symbol='unknown' chart_tf=1 if len(sys.argv) == 3: chart_symbol, chart_tf = sys.argv[1:3]; print("Hello world from", chart_symbol, chart_tf) >> Hello world from T.NYSE 15
Для GitHub сразу же доступна возможность скачать исходные файлы. Загрузка осуществляется в отдельный подкаталог папки "Projects", именуемый в соответствии с названием проекта на GitHub.
Обновлена документация.
long DatabaseImport( int database, // хендл базы данных, полученный в DatabaseOpen const string table, // имя таблицы для вставки данных const string filename, // имя файла для импорта данных uint flags, // комбинация флагов const string separator, // разделитель данных ulong skip_rows, // сколько первых строк пропустить const string skip_comments // строка символов, которые определяют комментарии );
long DatabaseExport( int database, // хендл базы данных, полученный в DatabaseOpen const string table_or_sql, // имя таблицы или SQL-запрос const string filename, // имя CSV-файла для экспорта данных uint flags, // комбинация флагов const string separator // разделитель данных в CSV-файле );
long DatabasePrint( int database, // хендл базы данных, полученный в DatabaseOpen const string table_or_sql, // таблица или SQL-запрос uint flags // комбинация флагов );
int FileSelectDialog( string caption, // заголовок окна string initial_dir, // начальная папка string filter, // фильтр расширений uint flags, // комбинация флагов string& filenames[], // массив с именами файлов string default_filename // имя файла по умолчанию );Новая функция позволит реализовать удобное взаимодействие пользователя с MQL5-программой.
#property optimization_chart_mode "3d,InpX,InpY"Используя его, вы можете задать вид графика, открываемого по окончании оптимизации, а также параметры программы для его осей X и Y.
double MathArctan2( double y // y-координата точки double x // x-координата точки );
Добавлен перевод пользовательского интерфейса на панджаби (Индия).
Обновлена документация.
Исправления по крешлогам.
Обновление будет доступно через систему Live Update.
class CFoo { public: struct Item { int x; }; }; //+------------------------------------------------------------------+ class CBar { public: struct Item { int x; }; }; CBar::Item item; // правильное объявление структуры Item из класса Bar Item item; // некорректное объявлениеТакже добавлена поддержка пространства имен (namespace), что дает еще больше свободы при использовании сторонних кодов/библиотек в своих программах.
#define PrintFunctionName() Print(__FUNCTION__) namespace NS { void func() { PrintFunctionName(); } struct C { int x; C() { PrintFunctionName(); }; }; } struct C { int x; C() { PrintFunctionName(); }; }; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void func() { PrintFunctionName(); } //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { func(); NS::func(); C c; NS::C ac; }В результате исполнения программа выведет следующие строки:
class A { void operator=(const A &)=delete; // запрещаем оператор копирования объекта }; class B : public A { }; //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { A a1,a2; B b1,b2; a1=a2; b1=b2; }В этом примере для строк "a1=a2" и "b1=b2" компилятор выдаст ошибки:
input group "Signal" input int ExtBBPeriod =20; // Bollinger Bands period input double ExtBBDeviation =2.0; // deviation input ENUM_TIMEFRAMES ExtSignalTF =PERIOD_M15; // BB timeframe input group "Trend" input int ExtMAPeriod =13; // Moving Average period input ENUM_TIMEFRAMES ExtTrendTF =PERIOD_M15; // MA timeframe input group "ExitRules" input bool ExtUseSL =true; // use StopLoss input int Ext_SL_Points =50; // StopLoss in points input bool ExtUseTP =false; // use TakeProfit input int Ext_TP_Points =100; // TakeProfit in points input bool ExtUseTS =true; // use Trailing Stop input int Ext_TS_Points =30; // Trailing Stop in points input group "MoneyManagement" sinput double ExtInitialLot =0.1; // initial lot value input bool ExtUseAutoLot =true; // automatic lot calculation input group "Auxiliary" sinput int ExtMagicNumber =123456; // EA Magic Number sinput bool ExtDebugMessage=true; // print debug messagesПри запуске такого советника в тестере стратегий появляется возможность двойным кликом по имени группы сворачивать и разворачить блок входных параметров, а также одним кликом по чекбоксу группы выделять все её параметры для оптимизации.
#import "lib.dll" int func(); #import //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int func() { return(0); } //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { Print( func() ); }Ранее компиляция такого кода выдавала ошибку:
'func' - ambiguous call to overloaded function with the same parameters could be one of 2 function(s) int func() int func()Теперь вместо ошибки по умолчанию будет использоваться встроенная функция MQL, как имеющая больший приоритет. А для вызова импортированной функции необходимо явно указать область видимости:
void OnStart() { Print( lib::func() ); }
if(condition) { //--- }
// до стилизации ParameterGetRange("InpX",enable,x_cur,x_start,x_step,x_stop); // после стилизации ParameterGetRange("InpX", enable, x_cur, x_start, x_step, x_stop);
// до стилизации if(x==1&y!=2) { int a=0; } // после стилизации if(x == 1 & y != 2) { int a = 0; }
Добавлен перевод пользовательского интерфейса на 18 новых языков:
В общей сложности интерфейс платформы теперь переведен на 50 языков, в сумме они являются родными для более чем 4 миллиардов человек.
Для переключения интерфейса на свой язык воспользуйтесь меню "Просмотр / Язык" в верхней части терминала.
Обновлена документация.
Исправления по крешлогам.
Обновление будет доступно через систему Live Update.
Python является современным высокоуровневым языком программирования для разработки сценариев и приложений. Содержит множество библиотек для машинного обучения, автоматизации процессов, анализа и визуализации данных.
Пакет MetaTrader для Python предназначен для удобного и быстрого получения биржевой информации через межпроцессное взаимодействие прямо из терминала MetaTrader 5. Полученные таким образом данные можно дальше использовать для статистических вычислений и машинного обучения.
Подключение
Функции
bool TesterDeposit( double money // размер вносимой суммы );
Обновлена документация.
Обновление будет доступно через систему LiveUpdate.
bool CalendarCountryById( const long country_id, // идентификатор страны MqlCalendarCountry& country // описание страны );CalendarEventById — получение описания события по идентификатору.
bool CalendarEventById( const long event_id, // идентификатор события MqlCalendarEvent& event // описание события );CalendarValueById — получение описания значения события по идентификатору.
bool CalendarValueById( const long value_id, // идентификатор значения MqlCalendarValue& value // описание значения );CalendarEventByCountry — получение массива доступных новостей по стране.
bool CalendarEventByCountry( string country_code, // код страны MqlCalendarEvent& events[] // массив событий );CalendarEventByCurrency — получение массива доступных новостей по валюте, на которую они влияют.
bool CalendarEventByCurrency( string currency, // валюта MqlCalendarEvent& events[] // массив событий );CalendarValueHistoryByEvent — получение массива значений за указанный период времени по идентификатору события.
bool CalendarValueHistoryByEvent( ulong event_id, // идентификатор события MqlCalendarValue& values[], // массив значений datetime datetime_from, // начальная дата datetime datetime_to=0 // конечная дата );CalendarValueHistory — получение массива значений по всем событиям за заданный период времени с фильтрацией по стране и/или валюте.
bool CalendarValueHistory( MqlCalendarValue& values[], // массив значений datetime datetime_from, // начало периода datetime datetime_to=0, // конец периода string country_code=NULL, // код страны string currency=NULL // валюта );CalendarValueLastByEvent — получение массива последних значений события по идентификатору. Эта функция позволяет запрашивать только те значения, которые изменились с момента последнего запроса. Для этого используется ее in/out параметр "change_id".
bool CalendarValueHistory( ulong event_id, // идентификатор события ulong& change_id, // идентификатор последнего изменения календаря MqlCalendarValue& values[] // массив значений );CalendarValueLast — получение массива последних значений по всем событиям с фильтрацией по стране и/или валюте. Эта функция позволяет запрашивать только те значения, которые изменились с момента последнего запроса. Аналогично CalendarValueLastByEvent, для запроса используется свойство "change_id".
bool CalendarValueHistory( ulong event_id, // идентификатор события ulong& change_id, // идентификатор последнего изменения календаря MqlCalendarValue& values[], // массив значений string country_code=NULL, // код страны string currency=NULL // валюта );
struct MqlCalendarCountry { ulong id; // идентификатор страны ISO 3166-1 string name; // текстовое название страны string code; // кодовое имя страны ISO 3166-1 alpha-2 string currency; // код валюты страны string currency_symbol; // символ/знак валюты страны string url_name; // имя страны, используемое в URL на сайте mql5.com };MqlCalendarEvent — описание события.
struct MqlCalendarEvent { ulong id; // идентификатор события ENUM_CALENDAR_EVENT_TYPE type; // тип события ENUM_CALENDAR_EVENT_SECTOR sector; // сектор, к которому относится событие ENUM_CALENDAR_EVENT_FREQUENCY frequency; // периодичность публикации события ENUM_CALENDAR_EVENT_TIMEMODE time_mode; // режим публикции события по времени ulong country_id; // идентификатор страны ENUM_CALENDAR_EVENT_UNIT unit; // единица измерения значения события ENUM_CALENDAR_EVENT_IMPORTANCE importance; // важность события ENUM_CALENDAR_EVENT_MULTIPLIER multiplier; // множитель значения события uint digits; // количество знаков после запятой в значении события string source_url; // URL источника string event_code; // код события string name; // текстовое имя события на языке терминала };MqlCalendarValue — описание значения события.
struct MqlCalendarValue { ulong id; // идентификатор значения ulong event_id; // идентификатор события datetime time; // время и дата события datetime period; // отчетный период события int revision; // ревизия публикуемого индикатора по отношению к отчетному периоду long actual_value; // актуальное значение события long prev_value; // предыдущее значение события long revised_prev_value; // пересмотренное предыдущее значение события long forecast_value; // прогнозное значение события ENUM_CALENDAR_EVENT_IMPACRT impact_type; // потенциальное влияние на курс валюты };
enum ENUM_CALENDAR_EVENT_FREQUENCY { CALENDAR_FREQUENCY_NONE =0, // не используется CALENDAR_FREQUENCY_WEEK =1, // неделя CALENDAR_FREQUENCY_MONTH =2, // месяц CALENDAR_FREQUENCY_QUARTER =3, // квартал CALENDAR_FREQUENCY_YEAR =4, // год CALENDAR_FREQUENCY_DAY =5, // день }; enum ENUM_CALENDAR_EVENT_TYPE { CALENDAR_TYPE_EVENT =0, // событие(митинг, речь и т.д.) CALENDAR_TYPE_INDICATOR =1, // индикатор CALENDAR_TYPE_HOLIDAY =2, // праздник }; enum ENUM_CALENDAR_EVENT_SECTOR { CALENDAR_SECTOR_NONE =0, // нет CALENDAR_SECTOR_MARKET =1, // рынок CALENDAR_SECTOR_GDP =2, // GDP CALENDAR_SECTOR_JOBS =3, // труд CALENDAR_SECTOR_PRICES =4, // цены CALENDAR_SECTOR_MONEY =5, // деньги CALENDAR_SECTOR_TRADE =6, // торговля CALENDAR_SECTOR_GOVERNMENT =7, // правительство CALENDAR_SECTOR_BUSINESS =8, // бизнес CALENDAR_SECTOR_CONSUMER =9, // потребитель CALENDAR_SECTOR_HOUSING =10, // жилье CALENDAR_SECTOR_TAXES =11, // налоги CALENDAR_SECTOR_HOLIDAYS =12, // праздники }; enum ENUM_CALENDAR_EVENT_IMPORTANCE { CALENDAR_IMPORTANCE_NONE =0, // нет CALENDAR_IMPORTANCE_LOW =1, // низкая CALENDAR_IMPORTANCE_MODERATE =2, // средняя CALENDAR_IMPORTANCE_HIGH =3, // высокая }; enum ENUM_CALENDAR_EVENT_UNIT { CALENDAR_UNIT_NONE =0, // нет CALENDAR_UNIT_PERCENT =1, // проценты CALENDAR_UNIT_CURRENCY =2, // национальная валюта CALENDAR_UNIT_HOUR =3, // количество часов CALENDAR_UNIT_JOB =4, // количество рабочих мест CALENDAR_UNIT_RIG =5, // количество вышек CALENDAR_UNIT_USD =6, // доллары США CALENDAR_UNIT_PEOPLE =7, // число людей CALENDAR_UNIT_MORTGAGE =8, // количество ипотечных кредитов CALENDAR_UNIT_VOTE =9, // число голосов CALENDAR_UNIT_BARREL =10, // количество баррелей CALENDAR_UNIT_CUBICFEET =11, // объем в кубических футах CALENDAR_UNIT_POSITION =12, // количество рабочих мест CALENDAR_UNIT_BUILDING =13 // количество строений }; enum ENUM_CALENDAR_EVENT_MULTIPLIER { CALENDAR_MULTIPLIER_NONE =0, // нет CALENDAR_MULTIPLIER_THOUSANDS =1, // тысячи CALENDAR_MULTIPLIER_MILLIONS =2, // миллионы CALENDAR_MULTIPLIER_BILLIONS =3, // миллиарды CALENDAR_MULTIPLIER_TRILLIONS =4, // триллионы }; enum ENUM_CALENDAR_EVENT_IMPACRT { CALENDAR_IMPACT_NA =0, // неизвестно CALENDAR_IMPACT_POSITIVE =1, // положительное CALENDAR_IMPACT_NEGATIVE =2, // отрицательное }; enum ENUM_CALENDAR_EVENT_TIMEMODE { CALENDAR_TIMEMODE_DATETIME =0, // источник публикует точное время CALENDAR_TIMEMODE_DATE =1, // событие занимает весь день CALENDAR_TIMEMODE_NOTIME =2, // источник не публикует время по событию CALENDAR_TIMEMODE_TENTATIVE =3, // источник не публикует заранее точного времени события, только день, время уточняется по факту наступления события };
ERR_CALENDAR_MORE_DATA =5400, // массив мал для всего результата (отданы значения, которые поместились в массив) ERR_CALENDAR_TIMEOUT =5401, // превышен таймаут ожидания ответа на запрос данных из календаря ERR_CALENDAR_NO_DATA =5402, // данные не обнаружены
bool CharArrayToStruct( void& struct_object, // структура const uchar& char_array[], // массив uint start_pos=0 // начальная позиция в массиве );StructToCharArray — копирует POD-структуру в массив типа uchar.
bool StructToCharArray( const void& struct_object, // структура uchar& char_array[], // массив uint start_pos=0 // начальная позиция в массиве );
ushort MathSwap(ushort value); uint MathSwap(uint value); ulong MathSwap(ulong value);
bool StringReserve( string& string_var, // строка uint new_capacity // размер буфера для хранения строки );StringSetLength — устанавливает для строки указанную длину в символах.
bool StringSetLength( string& string_var, // строка uint new_length // новая длина строки );
bool ArrayRemove( void& array[], // массив любого типа uint start, // с какого индекса начинаем удалять uint count=WHOLE_ARRAY // количество элементов );ArrayInsert — вставляет в массив-приемник из массива-источника указанное число элементов, начиная с указанного индекса.
bool ArrayInsert( void& dst_array[], // массив-приемник const void& src_array[], // массив источник uint dst_start, // индекс в массиве-приемнике для вставки uint src_start=0, // индекс в массиве-источнике для копирования uint count=WHOLE_ARRAY // количество вставляемых элементов );ArrayReverse — разворачивает в массиве указанное число элементов, начиная с указанного индекса.
bool ArrayReverse( void& array[], // массив любого типа uint start=0, // с какого индекса начинаем переворачивать массив uint count=WHOLE_ARRAY // количество элементов );
int CustomBookAdd( const string symbol, // имя символа const MqlBookInfo& books[] // массив с описаниями элементов стакана цен uint count=WHOLE_ARRAY // количество элементов, которые будут использованы );
bool CustomSymbolCreate( const string symbol_name, // имя пользовательского символа const string symbol_path="", // название группы, в которой будет создан символ const string symbol_origin=NULL // имя символа, на основе которого будет создан пользовательский символ );Имя символа, из которого будут скопированы свойства создаваемого пользовательского символа, указывается в параметре "symbol_origin".
Добавлен перевод пользовательского интерфейса на Хорватский язык.
Обновлена документация.
#import "TestLib.dll" //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { int x=41; TestClass::Inc(x); Print(x); }C# код функции Inc класса TestClass выглядит следующим образом:
public class TestClass { public static void Inc(ref int x) { x++; } }В результате выполнения скрипт вернет значение 42.
struct MqlTick
{
datetime time; // Время последнего обновления цен
double bid; // Текущая цена Bid
double ask; // Текущая цена Ask
double last; // Текущая цена последней сделки (Last)
ulong volume; // Объем для текущей цены Last
long time_msc; // Время последнего обновления цен в миллисекундах
uint flags; // Флаги тиков
double volume_real; // Объем для текущей цены Last c повышенной точностью
};
struct MqlBookInfo { ENUM_BOOK_TYPE type; // тип заявки из перечисления ENUM_BOOK_TYPE double price; // цена long volume; // объем double volume_real; // объем с повышенной точностью };
//+------------------------------------------------------------------+ //| Default packing | //+------------------------------------------------------------------+ struct A { char a; int b; }; //+------------------------------------------------------------------+ //| Specified packing | //+------------------------------------------------------------------+ struct B pack(4) { char a; int b; }; //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { Print("sizeof(A)=",sizeof(A)); Print("sizeof(B)=",sizeof(B)); } //+------------------------------------------------------------------+Вывод:
sizeof(A)=5 sizeof(B)=8Более подробная информация о выравнивании в структурах доступно в MSDN.
enum Main { PRICE_CLOSE_, PRICE_OPEN_ }; input Main Inp=PRICE_CLOSE; //+------------------------------------------------------------------+ //| Start function | //+------------------------------------------------------------------+ void OnStart() { }Компилятор выдаст предупреждение:
class X { }; void f(int) { } template<typename T> void a(T*) { new T(2); } // ранее в этом месте компилятор выдавал ошибку template<typename T> void a() { f(0); } void OnInit() { a<X>(); }
Обновлена документация.
Обновлена документация.
Обновлена документация.
Полностью переработан диалог открытия счетов. Теперь вы сначала выбираете интересующего брокера, а затем — тип счета, который хотите открыть. Благодаря этому список брокеров стал более компактным, поскольку в нем теперь отображаются названия компаний, а не всех доступных серверов.
Также для облегчения поиска в список добавлены логотипы компаний. Если нужного брокера нет в списке, просто наберите название компании или адрес сервера в поисковой строке и нажмите "Найти вашего брокера".
Чтобы помочь начинающим трейдерам, в диалог добавлены описания типов счетов. Также в связи с обновлением General Data Protection Regulation (GDPR) при открытии счета теперь могут показываться ссылки на различные соглашения и политики брокерских компаний:
Значительно расширены возможности для открытия реальных счетов. Функция загрузки документов для подтверждения личности и адреса, представленная ранее в мобильных терминалах, теперь доступна и в десктопной версии. MiFID-регулируемые брокеры теперь могут запрашивать всю необходимую информацию для идентификации клиента, включая данные о занятости, доходах, опыте торговли и т.п. Все это позволит проще и быстрее получать реальные счета, а также избавит от лишней бюрократии.
В историю сделок добавлено отображение значений Стоп Лосс и Тейк Профит. Для сделок входа и разворота они устанавливаются в соответствии со значениями Стоп Лосс и Тейк Профит ордеров, в результате исполнения которых они были совершены. Для сделок выхода используются значения Стоп Лосс и Тейк Профит соответствующих позиций на момент их закрытия. Последнее позволяет сохранять и показывать информацию о том, какие значения Стоп Лосс и Тейк Профита были у позиции в момент ее закрытия. До этого такая информация нигде не сохранялась, так как позиция после закрытия исчезает, а история позиций в терминале формируется на основе сделок.
datetime iTime( string symbol, // символ ENUM_TIMEFRAMES timeframe, // период int shift // сдвиг );
double iOpen( string symbol, // символ ENUM_TIMEFRAMES timeframe, // период int shift // сдвиг );
double iHigh( string symbol, // символ ENUM_TIMEFRAMES timeframe, // период int shift // сдвиг );
double iLow( string symbol, // символ ENUM_TIMEFRAMES timeframe, // период int shift // сдвиг );
double iClose( string symbol, // символ ENUM_TIMEFRAMES timeframe, // период int shift // сдвиг );
long iVolume( string symbol, // символ ENUM_TIMEFRAMES timeframe, // период int shift // сдвиг );
int iBars( string symbol, // символ ENUM_TIMEFRAMES timeframe // период );
int iBarShift( string symbol, // символ ENUM_TIMEFRAMES timeframe, // период datetime time, // время bool exact=false // режим );
int iLowest( string symbol, // символ ENUM_TIMEFRAMES timeframe, // период int type, // идентификатор таймсерии int count, // число элементов int start // индекс );
int iHighest( string symbol, // символ ENUM_TIMEFRAMES timeframe, // период int type, // идентификатор таймсерии int count, // число элементов int start // индекс );
long iRealVolume( string symbol, // символ ENUM_TIMEFRAMES timeframe, // период int shift // сдвиг );
long iTickVolume( string symbol, // символ ENUM_TIMEFRAMES timeframe, // период int shift // сдвиг );
long iSpread( string symbol, // символ ENUM_TIMEFRAMES timeframe, // период int shift // сдвиг );
void TesterHideIndicators( bool hide // флаг );
Полностью обновлена система работы с кэшем оптимизации. Кэш — это данные о ранее рассчитанных проходах оптимизации. Тестер стратегий хранит их, чтобы возобновлять оптимизацию после паузы и не пересчитывать уже рассчитанные проходы тестирования.
Изменения в формате хранения кэша оптимизации
Ранее кэш оптимизации хранился в виде одного XML-файла, в который попадали все проходы оптимизации эксперта с заданными настройками тестирования. В один и тот же файл попадали результаты оптимизации с разными входными параметрами.
Теперь кэш оптимизации хранится в виде бинарных файлов отдельно для каждого набора оптимизируемых параметров. За счет изменения формата и сокращения размера файлов работа тестера с кэшем оптимизации значительно ускорилась. Это ускорение будет особенно заметно при продолжении ранее приостановленной оптимизации.
Просмотр результатов ранее выполненных оптимизаций
Теперь вы можете просматривать результаты ранее выполненных оптимизаций прямо в тестере стратегий, не разбирая огромные XML-файлы в сторонних программах. Откройте вкладку "Результаты оптимизации", выберите эксперта и файл с кэшем оптимизации:
В списке отображаются все файлы кэша оптимизации, которые есть на диске для выбранного эксперта. Для каждого файла показывается дата оптимизации, настройки тестирования (символ, таймфрейм, даты), а также информация о входных параметрах. Дополнительно вы можете отфильтровать результаты оптимизации по торговому серверу, на котором они были получены.
Пересчет критерия оптимизации на ходу
Критерий оптимизации — некий показатель, значение которого определяет качество тестируемого набора входных параметров. Чем больше значение критерия оптимизации, тем лучше оценивается результат тестирования с данным набором параметров.
Ранее при оптимизации рассчитывался только один критерий, выбранный перед началом оптимизации. Теперь при просмотре результатов вы можете на ходу изменить критерий оптимизации, тестер стратегий автоматически пересчитает все значения.
Как использовать кэш оптимизации вручную
Ранее кэш оптимизации хранился в виде XML-файла, который можно было открывать и анализировать в сторонних программах. Теперь он хранится в закрытых бинарных файлах. Чтобы получить данные в формате XML, экспортируйте их через контекстное меню вкладки "Результаты оптимизации".
Обновлена документация.
Исправления по крешлогам.
MetaTrader 5 build 1745 — последняя версия торговой платформы, которая поддерживает Microsoft Windows XP/2003/Vista.
Несколько месяцев назад мы уже сообщали о завершении поддержки старых версий операционных систем.
Windows 2003, Windows Vista и в особенности Microsoft Windows XP
являются устаревшими. Microsoft прекратила поддержку Windows XP 3 года
назад, так как ввиду технических ограничений эта система не позволяет в
полной мере реализовать потенциальные возможности аппаратного
обеспечения.
MetaTrader 5 build 1745, а также ранее
выпущенные версии платформы продолжат свою работу на указанных
операционных системах, но никаких обновлений они получать не будут.
Также на указанных операционных системах не будут запускаться инсталляторы.
Минимальной
версией для работы MetaTrader 5 является Windows 7, но мы настоятельно
рекомендуем использовать 64-битную версию Windows 10.