select count(*) as book_count, cast(avg(parent) as integer) as mean, cast(median(parent) as integer) as median, mode(parent) as mode, percentile_90(parent) as p90, percentile_95(parent) as p95, percentile_99(parent) as p99 from moz_bookmarks;
void func(int &arr[ ][ ][ ][ ]) { }
struct MyStruct { string Array[]; }; void OnStart() { MyStruct a1,a2; ArrayResize(a1.Array,3); ArrayResize(a2.Array,1); a1=a2; }Ранее в результате вызова такой функции массив "а1" имел размер 3. Теперь он будет иметь размер 1.
ENUM_FP_CLASS MathClassify( double value // вещественное число );Перечисление содержит следующие значения:
if(MathClassify(value)>FP_ZERO) { Print("value is not a valid number"); }
Изменены критерии оптимизации,
в которых учитывалось два показателя — баланс и некий второй фактор.
Теперь в них учитывается только второй фактор, без баланса. Такие
критерии являются более простыми и понятными для анализа.
Мы собрали пожелания пользователей 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.