Бета-версия платформы MetaTrader 5 build 1995: Экономический календарь, MQL5-программы в виде сервисов и API для языка R - страница 6

 
Maxim Kuznetsov:

честно говоря не понял почему именно R ? если запросы идут из отдельного процесса и кто там во внешнем процессе по большому счёту всё равно должно быть

технически - у терминала появилось API запросов, но его скрыли в дебрях пакета R :-)

зачем..почему..


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

Бета-версия платформы MetaTrader 5 build 1995: Экономический календарь, MQL5-программы в виде сервисов и API для языка R

fxsaber, 2019.02.15 19:51

Спросили, почему сделали так с R - ответил. Теперь в сравнительной таблице с конкурентами MT5 имеет галочку в строке R, как и некоторые другие платформы.


 
Serhii Shevchuk:

Любой канал связи - дыра.

Допустим, некий пользователь разрешает в настройках URL 127.0.0.1 (localhost), например, для связи с MySQL сервером, установленным на этой же машине. НО мало ли что ещё "живёт" у него в компе! Через порт 3306 будет честный обмен с БД, но что за обмен будет идти по остальным портам - известно только программисту, который писал продукт. Я не увидел в правилах запрета на продукты, которые используют сокеты. Теоретически это может быть дыра. Возможно, есть смысл в разрешение URL в настройках терминала ввести ещё и разрешённый порт?

Ясно. Лично мне надоело во всем искать негатив.))  Если MQ выбрала этот путь, значит им виднее. 

 
Стек рекурсии не переполняется
int f() { return(f()); }

void OnStart()
{
  f();
}
 
CustomTicksAdd добавляет тик в Обзор рынка, но не в историю. Это баг?
 
Serhii Shevchuk:

Любой канал связи - дыра.

Допустим, некий пользователь разрешает в настройках URL 127.0.0.1 (localhost), например, для связи с MySQL сервером, установленным на этой же машине. НО мало ли что ещё "живёт" у него в компе! Через порт 3306 будет честный обмен с БД, но что за обмен будет идти по остальным портам - известно только программисту, который писал продукт. Я не увидел в правилах запрета на продукты, которые используют сокеты. Теоретически это может быть дыра. Возможно, есть смысл в разрешение URL в настройках терминала ввести ещё и разрешённый порт?

Это уже паранойя.

 
Yuriy Asaulenko:

Это уже паранойя.

Я разработчик систем безопасности и контроля доступа. Это не паранойя, это образ мышления.
 
В такой ситуации не генерируются события таймера, хоть EventSetTimer == true. И никакой реакции нет на EventChartCustom.
// Воспроизведение ситуации, когда таймер и кастомные события не работают.

#property indicator_chart_window

#property indicator_buffers 0
#property indicator_plots indicator_buffers

input bool Custom = false;

void OnInit()
{
  if (Custom) // Запущен на кастомном
   Print(EventSetTimer(1)); // true - включили таймер
  else
  {
    const string Name = "TEST"; // Имя кастомного символа
    
    CustomSymbolCreate(Name, "", _Symbol); // Создали кастомный
    
    SymbolSelect(Name, true);

    // Открыли чарт кастомного и запустили на нем индикатор
    if (!ChartIndicatorAdd(ChartOpen(Name, _Period), 0, iCustom(Name, _Period,
                           ".." + StringSubstr(MQLInfoString(MQL_PROGRAM_PATH), StringLen(TerminalInfoString(TERMINAL_PATH)) + 5), true)))
      Alert("Error add Indicator. " + (string)GetLastError());    
  }    
}

void OnTimer()
{
  Print(__FUNCSIG__); // Вывод в лог, как подтверждение, что тайме работает.
}

void OnChartEvent(const int id,const long& lparam,const double& dparam,const string& sparam)
{  
  if (Custom)
  {
    Print(__FUNCSIG__);    
    
    ResetLastError();
    Print(EventChartCustom(0, 0, 0, 0,  NULL)); // true/false
    Print(GetLastError());                      //Если false, то 4104 - ERR_CHART_NO_EXPERT: У графика нет эксперта, который мог бы обработать событие.
  }
  
}

int  OnCalculate( const int, const int, const int, const double &[] )
{  
  return(0);
}

Просьба починить в ближайшем билде.
 

ув. Разработчики, а насколько сложно сделать штатную ф-цию, возврата ошибки в текстовом виде?

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

хотелось бы видеть вместе с штатной 

int  GetLastError();

еще бы еще в придачу

string  DescriptionError(int error_code);

 
Добрый день, после обновления, перестала в корректном виде работать функция ShortArrayToString или StringToShortArray, эти функции используются в библиотеке: JAson serialization and Deserialization (natice MQL) - MT5, возможно это как то связано с новой функцией MathSwap применительно к ushort, библиотека перестала разбирать string информацию, всегда возвращается null, все остальные типы разбираются корректно. После того как ради теста изменил функции с Short на Char (CharArrayToString,  StringToCharArray) все снова стало корректно.., вообщем это не дело, ломать то, что работает... пожалейте нервы ваших нативных разработчиков))
 
fxsaber:
В такой ситуации не генерируются события таймера, хоть EventSetTimer == true. И никакой реакции нет на EventChartCustom.
Просьба починить в ближайшем билде.

Оказалось, что дело в кастомном символе. С тем же успехом можно сделать Name = "GBPUSD".

Ситуация гораздо глубже. Оказывается, невозможно программно (кроме применения шаблона) добавить индикатор на чарт, чтобы у него работал таймер или кастомные события!


Раз этого никто не замечал, значит никто не пробовал добавлять на чарт программно индикатор, у которого есть таймер. Звучит как-то нереально.

ЗЫ Нет, была тема. Архитектурное ограничение, короче. На график нельзя программно поместить индикатор.

Таймер работает для индикаторов созданных для вызова через iCustom?
Таймер работает для индикаторов созданных для вызова через iCustom?
  • 2016.11.05
  • www.mql5.com
Столкнулся с такой ситуацией: Есть индикатор, с целью не тормозить терминал сделан на таймере...
Причина обращения: