Новая версия платформы MetaTrader 5 build 5200: расширение OpenBLAS и усиление контроля в MQL5 - страница 13

 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Новая версия платформы MetaTrader 5 build 5200: расширение OpenBLAS и усиление контроля в MQL5

Stanislav Korotky, 2025.08.11 14:09

Задача. Нужно запустить индикатор A в визуальном тестере. Для индикатора A специально настроен tpl-шаблон (Profiles/Templates/A.tpl), в котором прописан дополнительный индикатор B с нужными настройками.

Специально для отладки сделать вызов индикатора B в индикаторе A. Наверное, уже пробовали.
 
Stanislav Korotky #:
Неужели не очевидно, что EMPTY_VALUE (как впрочем и любые NaN-ы), должны в расчетах гладко перерабатываться как нули?

Не очевидно. Можно пропускать или использовать соседнее значение. Нули тоже будут искажать расчеты, особенно для цен, далеких от 0 или 1.

 
Georgiy Merts #:
надо, чтобы LLM имела доступ ко всем файлам проекта

Посмотрите программу Warp

Кажется, там даёте доступ к своим папкам с кодом. И есть разные модели, включая Claude.

The Agentic Development Environment
The Agentic Development Environment
  • www.warp.dev
Warp is an AI agent platform that lets you run multiple agents in parallel to complete any development task.
 
Stanislav Korotky #:
Неужели не очевидно, что EMPTY_VALUE (как впрочем и любые NaN-ы), должны в расчетах гладко перерабатываться как нули?

Тоже сбивает расчёт. Может, лучше даже пропускать (или использовать предыдущее значение, чтобы не выпадать из хронологии).

PS: На предыдущей странице ещё не видел, что уже ответили.
 
Stanislav Korotky #:
Неужели не очевидно, что EMPTY_VALUE (как впрочем и любые NaN-ы), должны в расчетах гладко перерабатываться как нули?

Не очевидно.

  • EMPTY_VALUE это число, почему вы его отождествляете к "not a number"?
  • Почему "nan-ы должны перерабатываться как нули"? inf это nan, вы хотите чтобы inf + 1 равнялось 1? Нафига такой inf тогда нужен?

По мне очевидно, что если вы хотите использовать вторую сигнатуру OnCalculate, то в индикаторе, который подается на вход, должен быть задан draw begin.


#define _print(a) Print(#a" = ", a)

void OnStart()
  {
   _print(MathIsValidNumber(EMPTY_VALUE));
   _print(MathIsValidNumber((double)"inf"));
  }
Edgar Akhmadeev #:
Тоже сбивает расчёт. Может, лучше даже пропускать (или использовать предыдущее значение, чтобы не выпадать из хронологии).
Я думаю, что для дырявых входных данных лучше написать собственное "сглаживание", которое будет работать в соответствии с вашими ожиданиями.
 
Andrey Khatimlianskii #:

Не очевидно. Можно пропускать или использовать соседнее значение. Нули тоже будут искажать расчеты, особенно для цен, далеких от 0 или 1.

Да, я неправильно выразился. Имелось в виду, что EMPTY_VALUE должно оказывать нулевое воздействие на агрегируемую величину. Я делал так в статьях по OLAP, потому что кубы данных как правило сильно разрежены и останавливать расчет или наоборот отправлять его в inf при обнаружении пустой ячейки - это нонсенс.

 
Stanislav Korotky #:
отправлять его в inf при обнаружении пустой ячейки - это нонсенс.

Нонсенс это сглаживать "пустые ячейки" встроенными в МТ5 индикаторами (или любыми другими, которые этого не предусматривают явным образом)

 
Vladislav Boyko #:

Не очевидно.

  • EMPTY_VALUE это число, почему вы его отождествляете к "not a number"?
  • Почему "nan-ы должны перерабатываться как нули"? inf это nan, вы хотите чтобы inf + 1 равнялось 1? Нафига такой inf тогда нужен?

По мне очевидно, что если вы хотите использовать вторую сигнатуру OnCalculate, то в индикаторе, который подается на вход, должен быть задан draw begin.

Речь не про начало расчета, а про многие другие варианты, например, если индикаторы строятся по другим символам и в барах есть пропуски.

EMPTY_VALUE - это специальное значение, которое не работает как число в индикаторах. Оно задумано как "не число" для этого контекста.

NaN-ы не могут участвовать в расчете, потому что далее получите бесконечный NaN. Для пользователя это просто пустой экран (на всех барах после не числа). ИМХО, лучше постараться максимально показывать то, что можно посчитать без NaN-ов. И если хочется показывать пользователю inf, то я согласен исключить inf из рассмотрения, но есть куча других NaN-ов, которые сейчас испортят расчет, но не должны.

 
Vladislav Boyko #:

Я думаю, что для дырявых входных данных лучше написать собственное "сглаживание", которое будет работать в соответствии с вашими ожиданиями.

У меня не было дырявых данных. Но если бы были, логично было бы пропускать пустую ячейку, а не создавать пик при помощи inf или 0. Для этого, действительно, можно написать всё самому, подставив очередной костыль.

Мы много времени теряем на создании велосипеда собственных инструментов.

 
Vladislav Boyko #:

Нонсенс это сглаживать "пустые ячейки" встроенными в МТ5 индикаторами (или любыми другими, которые этого не предусматривают явным образом)

Я как раз уточнил начальную неудачную формулировку, что не надо на этих ячейках ничего менять/сглаживать/вычислять. Сейчас они участвуют в расчетах и выдают тот самый inf, хотя на самом деле там пропуск данных.