Новая версия платформы MetaTrader 5 build 5800: Улучшенный торговый диалог и удобная работа с CSV в MetaEditor - страница 15

 
Slava #:

Подождите, подождите.

CustomRatesUpdate предполагает изменение истории в неизвестном заранее месте. Пересчёт.

В отличие от CustomTickAdd, который гарантированно модифицирует последний бар. Досчёт последнего бара.

По инфе, раскопанной добрыми людьми (эта?-https://www.mql5.com/ru/forum/508121/page12#comment_59612481), происходит модификация очень старых баров 10-летней давности. Так что, пересчёт совершенно законен. Проверьте Ваш код. И проверьте правильность первоначального формирования кастомного символа.

Всё уже давно проверено и выложен тест-кейс (выше). Обновляется только последний бар. На момент написания статьи (откуда взят тест-кейс) всё работало без проблем, то есть обновление последнего бара не приводило к смаргиванию индикаторов. Потом видимо добавили какое-то "улучшение" в МТ5 (могли бы по истории коммитов посмотреть, что и как меняли, еще тогда, когда на форуме это отметили), и появился этот баг.

Место обновления истории прекрасно известно по передаваемым данным в массиве котировок. Зачем дергать полный рефреш, если изменился только последний бар? Вы же делаете рефреш уже после того как обработали бары и суть изменений известна.

Построение баров по тикам самими терминалом делается только по правилам стандартных баров, а кастом-инструменты могут иметь собственные правила формирования баров - ренко, поинт-энд-фига, например и т.д.

 
Stanislav Korotky #:
кастом-инструменты могут иметь собственные правила формирования баров - ренко, поинт-энд-фига, например и т.д.

тут скорее фич-реквест - чарты отличные от свечных всё-таки полезны и востребованы. В конце концов, у конкурентов и больших дядей есть.

но это точно не CustomSymbol  - инструмент это всё-таки поток котировок, образно - сохранённый массив тиков.  

 
Задан вопрос.
 
hini # :
Если вы поместите любой скрипт Python в каталог скриптов, вы увидите этот файл в навигации MT5. Однако при нажатии на другие скрипты MQL5 запускается некорректный скрипт.
Не воспроизводится.
 
Maxim Kuznetsov #:

тут скорее фич-реквест - чарты отличные от свечных всё-таки полезны и востребованы. В конце концов, у конкурентов и больших дядей есть.

но это точно не CustomSymbol  - инструмент это всё-таки поток котировок, образно - сохранённый массив тиков.  

Это уже работало правильно, без всяких побочных эффектов. Потом сломали. Так что это баг.
 

Достали баги компилятора. Воспроизводятся, как обычно, только в нетестовых проектах. Отбивают напрочь желание иметь дело с платформой.

Убил два часа вот на такое поведение - код (в релизе и в дебаге - без разницы, c AVX и без):

   double multfail;
   ...
   Print("Before if: ", multfail, " ", multfail < 0.0);
   if(multfail < 0.0)
   {
      Print("Inside if: ", multfail, " ", multfail < 0.0);
      ...
   }

выводит в лог:

Before if: 0.04409999999999999 false
Inside if: 0.04409999999999999 true

Пришлось фиксить так:

   Converter<double,ulong> c;
   if(!!(c[multfail] & 0x8000000000000000))
   {
      ...
   }

Так работает правильно - в if не заходит при неотрицательном числе.

ЗЫ. Нет, рано я обрадовался - это всё идет от порчи где-то ещё, теперь падает внутри цикла (int k = 0; k < ArraySize(x); k++) при обращении к элементу x[k] когда k = ArraySize(x), то есть условие проверки в заголовке цикла не срабатывает. Ушёл.

 
Vitaly Muzichenko #:

Обновил терминал.

Это не открепление, а псевдо-уменьшение.

Открепление - это когда работает независимо, здесь-же перекрывает область Метаэдитора и мешает.

Если закрыть и снова открыть - возвращается обратно, снова нужно псевдо-откреплять.

После типа открепление дерево скрыто, размеры нарушены - снова нужно настраивать.

В текущем виде это не справка, а проверка программистов на прочность.

Пожалуйста, дайте выбор между .chm справкой и текущим.

Посмотрите бету 5809, пожалуйста:

  • переделали открепление
  • открепленный хелп сохраняет свою позицию при переоткрытии
  • исправили темные стили хелпа, но продолжим улучшение - слишком серый фон переделаем




С CHM форматом Микрософт фактически закончил развитие в 2009 году. Он не просто морально устарел, а вообще никуда не годится.

Откройте вот так хелп окно во время работы с кодом и оно реально удобно будет стоять рядом поверх вашего рабочего файла, реагируя на ваши F1 в коде:


Это в разы удобнее, чем переключаться в окно чужого CHM процесса.

Попробуйте и наоборот оцените новый режим.

 
Может MQ обратит внимание, что у конкурентов появляются MCP сервера? Мне кажется, что сейчас клиентуру можно привлечь именно такой фишкой - вайбкодинг для новичков через LLM. Можно потом абонентку брать, как люди подсядут.
 
Stanislav Korotky #:

Достали баги компилятора. Воспроизводятся, как обычно, только в нетестовых проектах. Отбивают напрочь желание иметь дело с платформой.

Убил два часа вот на такое поведение - код (в релизе и в дебаге - без разницы, c AVX и без):

выводит в лог:

Пришлось фиксить так:

Так работает правильно - в if не заходит при неотрицательном числе.

ЗЫ. Нет, рано я обрадовался - это всё идет от порчи где-то ещё, теперь падает внутри цикла (int k = 0; k < ArraySize(x); k++) при обращении к элементу x[k] когда k = ArraySize(x), то есть условие проверки в заголовке цикла не срабатывает. Ушёл.

Похоже на ошибку оптимизатора.

Я попробовал в разных вариантах такой код:

void OnStart()
  {
   double multfail=rand()/32768.0;

   Print("Before if: ", multfail, " ", multfail < 0.0);
   if(multfail < 0.0)
     {
      Print("Inside if: ", multfail, " ", multfail < 0.0);
     }
  }


2026.04.21 23:46:28.244 1 (AUDCAD,H1)   Before if: 0.0675048828125 false
2026.04.21 23:46:45.656 1 (AUDCAD,H1)   Before if: 0.301239013671875 false
2026.04.21 23:46:48.377 1 (AUDCAD,H1)   Before if: 0.49298095703125 false
2026.04.21 23:46:51.839 1 (AUDCAD,H1)   Before if: 0.2005615234375 false

Пришлите или выложите воспроизводимый код, пожалуйста.

Обязательно найдем и исправим.

ps: в дебаг режиме тоже ловится?

 
Renat Fatkhullin #:

С CHM форматом Микрософт фактически закончил развитие в 2009 году. Он не просто морально устарел, а вообще никуда не годится.

По мне - так очень удобно, к примеру можно распечатать нужную часть документации. А в новой версии справки так можно?
К тому же, часто открываю по несколько файлов со справкой, когда изучаю что-то новое или забытое старое, где взаимосвязанные функции - очень удобно было.