Новая версия платформы MetaTrader 5 build 4755: общие улучшения - страница 26

 
BillionerClub #:
Примитивная смена графика — это тупиковый путь, тогда как событийная модель открывает возможности для более широкого спектра решений.

OnInit() - это ведь обработчик события. Само событие - Init. Не совсем понимаю, чего именно не хватает?

 
Ihor Herasko #:
- это ведь обработчик события. Само событие - Init. Не совсем понимаю, чего именно не хватает?

Допустим, нужно открыть 5 графиков на чарте типа DRAW_CANDLES . Теперь каждый раз вводить их вручную или дублировать таблицу символов?

OnInit и Deinit , по-моему, хорошо работают только с одним символом.

 
BillionerClub #:

Допустим, нужно открыть 5 графиков на чарте типа DRAW_CANDLES . Теперь каждый раз вводить их вручную или дублировать таблицу символов?

OnInit и Deinit , по-моему, хорошо работают только с одним символом.

5 индикаторов на одном чарте. Я правильно понимаю? Если да, то что понимается под "каждый раз вводить их вручную" и "таблица символов"? Видимо, какие-то специфические понятия, связанные с функционалом индикатора.

 
BillionerClub #:

Допустим, нужно открыть 5 графиков на чарте типа DRAW_CANDLES . Теперь каждый раз вводить их вручную или дублировать таблицу символов?

OnInit и Deinit , по-моему, хорошо работают только с одним символом.

Можно попробовать что-то нашаманить с индикатором-невидимкой, отслеживающим наброшенный символ и координаты мышки.

Но костыльно, да.

 

В визуализаторе (b4885) некорректно работает отображение Фибо-линий, если каждый уровень делать разноцветным. При каждом обновлении всем уровням устанавливается тот цвет, который был установлен последнему уровню. 

В онлайн такой проблемы нет.

Код (лучше запустить на D1)

struct LevelData
{
   double            fPercent;
   color             clrColor;
   ENUM_LINE_STYLE   eStyle;
   
   LevelData(const double _fPercent = 0.0, const color _clrColor = clrNONE, const ENUM_LINE_STYLE _eStyle = STYLE_SOLID)
      : fPercent(_fPercent)
      , clrColor(_clrColor)
      , eStyle(_eStyle)
   {
   }

   void Init(const double _fPercent = 0.0, const color _clrColor = clrNONE, const ENUM_LINE_STYLE _eStyle = STYLE_SOLID)
   {
      fPercent = _fPercent;
      clrColor = _clrColor;
      eStyle = _eStyle;
   }
};

int OnInit()
{
   return(INIT_SUCCEEDED);
}

void OnTick(void)
{
   LevelData arrfLevels[5];
   
   arrfLevels[0].Init(0.0, clrGreen, STYLE_SOLID);
   arrfLevels[1].Init(50.0, clrRed, STYLE_DOT);
   arrfLevels[2].Init(100.0, clrBlue, STYLE_DASHDOT);
   arrfLevels[3].Init(210.0, clrViolet, STYLE_DASHDOT);
   arrfLevels[4].Init(-110.0, clrCrimson, STYLE_DASHDOT);

   ShowFibo("MyFibo", iTime(NULL, PERIOD_CURRENT, 10), iTime(NULL, PERIOD_CURRENT, 1), iHigh(NULL, PERIOD_CURRENT, 10), iLow(NULL, PERIOD_CURRENT, 1), arrfLevels, clrGray, STYLE_SOLID);
   ChartRedraw();
}

void ShowFibo(string sName, datetime dtStartTime, datetime dtEndTime, double fStartPrice, double fEndPrice, const LevelData &arrstLevels[], color clrGridColor, ENUM_LINE_STYLE eGridStyle)
{
   if (ObjectFind(0, sName) < 0)
   {
      ObjectCreate(0, sName, OBJ_FIBO, 0, dtStartTime, fStartPrice, dtEndTime, fEndPrice);
      ObjectSetInteger(0, sName, OBJPROP_COLOR, clrGridColor);
      ObjectSetInteger(0, sName, OBJPROP_STYLE, eGridStyle);
      ObjectSetInteger(0, sName, OBJPROP_RAY, true);
      ObjectSetInteger(0, sName, OBJPROP_SELECTABLE, false);
      ObjectSetInteger(0, sName, OBJPROP_HIDDEN, true);
   }
   
   ObjectMove(0, sName, 0, dtStartTime, fStartPrice);
   ObjectMove(0, sName, 1, dtEndTime, fEndPrice);
   int levelsCnt = ArraySize(arrstLevels);
   ObjectSetInteger(0, sName, OBJPROP_LEVELS, levelsCnt);      
   for (int i = 0; i < levelsCnt; i++)
   {
      ObjectSetInteger(0, sName, OBJPROP_LEVELCOLOR, i, arrstLevels[i].clrColor);
      ObjectSetInteger(0, sName, OBJPROP_LEVELSTYLE, i, arrstLevels[i].eStyle);
      ObjectSetDouble(0, sName, OBJPROP_LEVELVALUE, i, arrstLevels[i].fPercent / 100.0);
      ObjectSetString(0, sName, OBJPROP_LEVELTEXT, i, DoubleToString(arrstLevels[i].fPercent, 1));
   }   
}
Файлы:
 

Вот это давнее обращение так и осталось без реализации и даже без ответа?

Forum on trading, automated trading systems and testing trading strategies

Services naming - suggestion for MetaTrader dev

Faisal Mahmood, 2021.08.08 04:08

I am not sure where is the best place to suggest for the improvement to the platform. Here is the suggestion:


When adding a service, at the moment it opens a dialog that allow inputting the parameters, but there is nothing to input the name of the service instance. The renaming needs to be done after the service is created/started, by right clicking on it. Can you please add the instance name in the input dialog please? Thanks


Судя по всему, сервис по-прежнему запускается сразу после создания без имени. Его стандартное имя, равное имени файла, не возвращается даже из MQL5 через MQLInfoString(MQL_PROGRAM_NAME) - первый запуск будет пустая строка. Только если перезапустить (или перекомпилировать) сервис, его имя появляется.

 
Дайте возможность откреплять и разносить окна в MetaEditor
 
Vladimir Pastushak #:
Дайте возможность откреплять и разносить окна в MetaEditor

Навигатор и инструменты открепляются, если курсором потянуть заголовок окна.
А окна с кодом, да не открепляются.

Больше напрягает то, что столько лет просят убрать толщину границы окна, что в терминале, что в редакторе.
И добавить фолдер для сворачивания блоков кода или автопрокрутку страницы кликом колеса мыши.

gr


Но в ответ полный игнор.
Метаквоты зациклились на компиляторе, оптимизации, интеграции. Всё.
Остальных сущностей юзабилити для них не существует.

 

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

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



 

В чем логика, что MQL5 не дает сохранять в песочницу js-файлы (выдает ошибку 5002, как со многими другими запрещенными расширениями), но позволяет py-файлы? И js-файлы, и py-файлы исполняются внешними программами, а не сами по себе - отличий в плане безопасности нет.

Похоже на баг проектирования.