Новая версия платформы MetaTrader 5 build 4350: больше аналитических объектов в веб-платформе и стартовая страница в MetaEditor
MetaEditor: Добавлена стартовая страница
Главное, чтобы её можно было отключить.
И вкладки "Articles" и "Code Base" - тоже. А то попадаешь мышкой случайно, и начинается ненужный трафик и расход памяти.
Какие-то мелочные исправления - не затрагивают ни одну из имеющихся у реальных трейдеров проблем с терминалом МТ5!
Из того что реально важно: необходимо дальше развивать "Торговый отчет" - в направлении предоставлению трейдерам полной информации по проскальзывании при исполнении ордеров (Slippage ).
Речь идет о разнице в котировке по которой на сервере брокера исполнилась отправленная трейдером/экспертов сделка с теми котировками ask/bid, которые отражались в "MarketWatch" в момент отправки сделки на сервер.
Проблема значима - так отсутствие встроенного в терминал МТИ5 мониторинга параметра Slippage уже привело к тому что девиз "Slip them to hell" стал внутренним девизом многих брокеров (погулите для деталей).
Итак, то что терминал МТ5 не учитывает и не отображает проскальзывания при исполнении ордеров (Slippage ) как убытки трейдеров, и это значимое упущение в развитии Торгового отчета и эту проблему необходимо адресовать в следующих релизах.
Соответственно большая просьба в следующих релизах терминала МТ5:
- ввести учет проскальзывания по каждой сделке, и отражать значение этого показателя по каждой сделке в Торговом Отчете на закладке "History";
- при наличии проскальзывания размером более 1х спреда, наблюдаемого на момент отправки сделки на сервер, засчитывать этот размер как доп. убыток трейдера;
- в Торговом отчете на странице "Summary" внести графу "Убытки от проскальзывания" ("Losses on slippage") в целом по счету;
- в Торговом отчете на странице "Symbols" внести таблицу "Убытки от проскальзывания" ("Losses on slippage") в разрезе символов.
Ренат, крайне не удобно смотреть лог-журналы если не подходишь времени сервера
прекрасно понимаю что и в файл лог пишется, нельзя просто так добавить в таблицу.
но может уже поставить просто конец этой не правильно изначально созданной,
В пятницу 24 мая 2024 года будет выпущена обновленная версия платформы MetaTrader 5 в бета-режиме.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Тестер стратегий MetaTrader 5: ошибки, баги, предложения по улучшению работы
fxsaber, 2024.05.23 12:56
b4305, на одном и том же кастомном символе (в режиме по пипсам) запускаю подряд (автоматически) одиночные проходы.
При этом во время запуска каждый раз получаю непонятные паузы на 24 секунды суммарно. Логи ниже.
2024.05.23 13:40:41.094 Tester CUCTOM_EURUSD: ticks data begins from 2021.01.01 00:00 2024.05.23 13:40:41.094 Core 01 connecting to 127.0.0.1:3017 2024.05.23 13:40:41.098 Core 01 connected 2024.05.23 13:40:41.100 Core 01 authorized (agent build 4305) 2024.05.23 13:40:41.103 Tester CUCTOM_EURUSD,M1 (RannForex-Live): testing of Experts\Test.ex5 from 2021.01.01 00:00 to 2024.01.01 00:00 2024.05.23 13:40:41.143 Core 01 common synchronization completed 2024.05.23 13:40:41.148 Core 01 CUCTOM_EURUSD: history for 2020 year synchronized 2024.05.23 13:40:41.152 Core 01 CUCTOM_EURUSD: ticks synchronized already [91 bytes] // Что-то здесь делается 6 секунд. 2024.05.23 13:40:47.256 Core 01 test Experts\Test.ex5 on CUCTOM_EURUSD,M1 thread finished 2024.05.23 13:40:47.256 Core 01 prepare for shutdown 2024.05.23 13:40:47.256 Core 01 shutdown finished 2024.05.23 13:40:47.256 Core 01 login (build 4305) 2024.05.23 13:40:47.256 Core 01 account info found with currency USD 2024.05.23 13:40:47.256 Core 01 20164 bytes of input parameters loaded 2024.05.23 13:40:47.256 Core 01 expert file added: Experts\Test.ex5. 326106 bytes loaded 2024.05.23 13:40:47.256 Core 01 calculate profit in pips, initial deposit 100000000, leverage 1:100 2024.05.23 13:40:47.256 Core 01 successfully initialized 2024.05.23 13:40:47.256 Core 01 319 Kb of total initialization data received 2024.05.23 13:40:47.256 Core 01 Intel Xeon Gold 6258R @ 2.70GHz, 24574 MB 2024.05.23 13:40:47.256 Core 01 CUCTOM_EURUSD: symbol to be synchronized 2024.05.23 13:40:47.256 Core 01 CUCTOM_EURUSD: symbol synchronized, 3720 bytes of symbol info received 2024.05.23 13:40:47.256 Core 01 CUCTOM_EURUSD: load 75 bytes of history data to synchronize in 0:00:00.000 2024.05.23 13:40:47.256 Core 01 CUCTOM_EURUSD: history synchronized from 2021.01.01 to 2024.05.17 2024.05.23 13:40:47.256 Core 01 CUCTOM_EURUSD: ticks synchronization started 2024.05.23 13:40:47.256 Core 01 CUCTOM_EURUSD: load 82 bytes of tick data to synchronize in 0:00:00.000 2024.05.23 13:40:47.256 Core 01 CUCTOM_EURUSD: history ticks synchronized from 2021.01.01 to 2024.05.17 2024.05.23 13:40:47.256 Core 01 CUCTOM_EURUSD: start time changed to 2021.01.05 00:00 to provide data at beginning 2024.05.23 13:40:47.256 Core 01 CUCTOM_EURUSD,M1: history cache allocated for 1123613 bars and contains 1441 bars from 2021.01.01 00:00 to 2021.01.04 23:59 2024.05.23 13:40:47.256 Core 01 CUCTOM_EURUSD,M1: history begins from 2021.01.01 00:00 2024.05.23 13:40:47.256 Core 01 CUCTOM_EURUSD,M1 (RannForex-Live): generating based on real ticks 2024.05.23 13:40:47.256 Core 01 CUCTOM_EURUSD,M1: testing of Experts\Test.ex5 from 2021.01.01 00:00 to 2024.01.01 00:00 started with inputs: // Что-то здесь делается 18 секунд. 2024.05.23 13:41:05.569 Core 01 CUCTOM_EURUSD : real ticks begin from 2021.01.01 00:00:00
Возможно ли узнать, что происходит в выделенных местах?
input datetime inFrom = D'2023.01.01'; class TICKS_ARRAY { public: MqlTick Ticks[]; }; template <typename T> long GetSum( const T &TicksArray[] ) { const int Amount = ::ArraySize(TicksArray); int Count = 0; int Size[]; bool Res[]; int Pos[]; ::ArrayResize(Pos, Amount); ::ArrayInitialize(Pos, 0); long Tmp = 0; for (uint i = ::ArrayResize(Res, ::ArrayResize(Size, Amount)); (bool)i--;) { Size[i] = ::ArraySize(TicksArray[i].Ticks); if (Res[i] = Size[i]) Count++; } while (Count) { MqlTick MinTick = {0, 0, 0, 0, 0, LONG_MAX}; uint Index; for (int i = 0; i < Amount; i++) if (Res[i]) { // Количество вызовов в ~(1+Amount)/2 раз больше общего числа элементов. const MqlTick Tick = TicksArray[i].Ticks[Pos[i]]; if (Tick.time_msc < MinTick.time_msc) { MinTick = Tick; Index = i; } } if (!(Res[Index] = (++Pos[Index] != Size[Index]))) Count--; Tmp += MinTick.time_msc; } return(Tmp); } #include <fxsaber\Benchmark\Benchmark.mqh> // https://www.mql5.com/ru/code/31279 void OnStart() { const string Symbols[] = {"EURUSD", "GBPUSD", "AUDUSD"}; TICKS_ARRAY TicksArray[]; const int Size = ::ArrayResize(TicksArray, ::ArraySize(Symbols)); for (int i = 0; i < Size; i++) Print(CopyTicksRange(Symbols[i], TicksArray[i].Ticks, COPY_TICKS_ALL, inFrom * 1000)); _B(GetSum(TicksArray), 1); _B(GetSum(TicksArray), 1); // Ускоряет выполнение предыдущей строки! }
Если строка добавлена, то такой результат (воспроизводится на повторных запусках).
22248074 26320684 25557149 Alert: Bench_Stack = 0, 1 <= Time[Test9.mq5 76 in OnStart: GetSum(TicksArray)] = 1049103 mcs. Alert: Bench_Stack = 0, 1 <= Time[Test9.mq5 77 in OnStart: GetSum(TicksArray)] = 1057312 mcs.
Когда строка не добавлена.
22248074 26320684 25557149 Alert: Bench_Stack = 0, 1 <= Time[Test9.mq5 76 in OnStart: GetSum(TicksArray)] = 1286175 mcs.
Т.е. при удалении строки получаем, что предыдущая строка начинает выполняться на 20% медленнее.
MetaQuotes:
MQL5: Оптимизирована и значительно ускорена работа функции ArrayResize. В некоторых случаях ускорение работы может достигать 40%.
Случайно узнал, что в MetaEditor (двойной клик рядом с вкладками открытых файлов) можно открыть окно 'Окна' со списком всех открытых файлов.
//---
Это удобно, когда открыто очень много файлов.
Но лучше сделать так, чтобы это окно можно было прикрепить к левой/правой части редактора, как это можно сделать сейчас с окном 'Навигатор' .
Также нужно добавить вызов окна по нажатию горячих клавиш и добавить в контекстное меню Главное меню -> Вид
Извиняюсь,что напоминаю, но господин Sergey Golubev сказал писать об этом во всех темах новой версии терминала.
Не работает OBJPROP_ANCHOR для OBJ_BITMAP в тестере.
Для OBJ_TEXT работает, а для OBJ_BITMAP нет.
Господа разработчики, сделайте пожалуйста, чтоб работало и для OBJ_BITMAP.
#resource "\\Images\\dollar.bmp" //+------------------------------------------------------------------+ int OnInit() { ObjectCreate(0, "txt", OBJ_TEXT, 0, 0, 0); ObjectCreate(0, "bmp", OBJ_BITMAP, 0, 0, 0); ObjectSetString(0, "bmp", OBJPROP_BMPFILE, "::Images\\dollar.bmp"); ObjectSetInteger(0, "bmp", OBJPROP_XSIZE, 32); ObjectSetInteger(0, "bmp", OBJPROP_YSIZE, 32); return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ void OnTick() { static int i = 0; static datetime lasttime = 0; datetime time = iTime(_Symbol, PERIOD_CURRENT, 0); if(lasttime != time) { lasttime = time; double price = iHigh(_Symbol, PERIOD_CURRENT, 0); ObjectSetDouble(0, "txt", OBJPROP_PRICE, price); ObjectSetInteger(0, "txt", OBJPROP_TIME, time); ObjectSetDouble(0, "bmp", OBJPROP_PRICE, price); ObjectSetInteger(0, "bmp", OBJPROP_TIME, time); i = i == 9 ? 0 : i; ObjectSetString(0, "txt", OBJPROP_TEXT, EnumToString((ENUM_ANCHOR_POINT)i)); ObjectSetInteger(0, "txt", OBJPROP_ANCHOR, (ENUM_ANCHOR_POINT)i); ObjectSetInteger(0, "bmp", OBJPROP_ANCHOR, (ENUM_ANCHOR_POINT)i); i++; ChartRedraw(); } } //+------------------------------------------------------------------+
Для графического стиля DRAW_ARROW или DRAW_COLOR_ARROW с точкой 158
как например в этом индикаторе https://www.mql5.com/ru/code/49558
Если скрыть точки, а затем отобразить их по новой, то сбивается размер этих точек.
#property indicator_chart_window #property indicator_buffers 1 #property indicator_plots 1 #property indicator_type1 DRAW_ARROW #property indicator_color1 clrRed #property indicator_width1 2 #include <Comm.mqh> double ExtBuffer[]; //+------------------------------------------------------------------+ int OnInit() { SetIndexBuffer(0, ExtBuffer, INDICATOR_DATA); PlotIndexSetInteger(0, PLOT_ARROW, 158); return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime& time[], const double& open[], const double& high[], const double& low[], const double& close[], const long& tick_volume[], const long& volume[], const int& spread[]) { static int start = rates_total; if(start + 5 < rates_total) { if(PlotIndexGetInteger(0, PLOT_DRAW_TYPE) != DRAW_NONE) { Comm("Скроем отображение точек\nPlotIndexSetInteger(0, PLOT_DRAW_TYPE, DRAW_NONE)"); PlotIndexSetInteger(0, PLOT_DRAW_TYPE, DRAW_NONE); } else { Comm("Отобразим точки\nPlotIndexSetInteger(0, PLOT_DRAW_TYPE, DRAW_ARROW)"); PlotIndexSetInteger(0, PLOT_DRAW_TYPE, DRAW_ARROW); } start = rates_total; } for(int i = MathMax(prev_calculated - 1, 0); i < rates_total; i++) ExtBuffer[i] = high[i]; return(rates_total); } //+------------------------------------------------------------------+


- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
В пятницу 31 мая 2024 года будет выпущена обновленная версия платформы MetaTrader 5.
Мы добавили новые аналитические объекты в веб-версию платформы. Теперь вы можете использовать «линейку» для измерения времени и цен, фигуры (прямоугольник, эллипс, треугольник, круг), а также добавлять любые подписи на график.
Чтобы помочь разработчикам торговых приложений, мы добавили приветственную страницу в MetaEditor. Новичкам она поможет легче погрузиться во множество учебных материалов, а действующим разработчикам — держать руку на пульсе: получать последние новости и контролировать собственные продажи.
Помимо этого, для функции автоматического дополнения кода AI Assistant появилась поддержка последней модели ChatGPT — GPT-4o.
MetaTrader 5 Client Terminal
Материалы для новичков
Раздел «Знакомство» подробно расскажет об обучающих материалах, доступных на MQL5.com: полная документация языка, книги, статьи, форум разработчиков, а также библиотека готовых кодов. Здесь же вы познакомитесь с сервисами, где вы можете применить и монетизировать свои знания: маркет приложений, фриланс-биржа и торговые сигналы.
В разделах документации и книг вы найдете более подробное описание доступных обучающих материалов.
Полезные функции для тех, кто уже занимается разработкой
В разделе «Что нового» мы собрали максимум информации, которая нужна разработчику, чтобы держать руку на пульсе:
Здесь же есть список последних открытых файлов для быстрого доступа.
Если вы уже активно продаете свои приложения в Маркете, отчет «Мои продажи» поможет оценить ваши успехи. Вам доступны:
MetaTrader 5 Web Terminal
Обновление будет доступно через систему Live Update.