Новая версия платформы MetaTrader 5 build 3260: Массовые операции, функции матриц и векторов и улучшения в чате - страница 3

 
Alexey Viktorov #:

И теперь будет, если в имени шаблона name.tpl, то будет сохранено name.tpl.tpl

Надо было это делать?


Расширением в имени шаблона теперь считается только ".tpl", будет добавлено только если не задано пользоваетелем.

Например:

  1. "name.tpl" сохранится в файл как "name.tpl" и имя шаблона будет "name"
  2. "name.x" сохранится в файл как "name.x.tpl" и имя шаблона будет "name.x"


Теперь поведение соответствтет справке https://www.mql5.com/ru/docs/chart_operations/chartsavetemplate

filename

[in]  Имя файла для сохранения шаблона. Расширение ".tpl" будет добавлено к имени файла автоматически, указывать его не требуется. Шаблон сохраняется в папку каталог_данных\Profiles\Templates\ и может быть использован также и для ручного применения в терминале. Если шаблон с данным именем уже существует, то его содержимое будет переписано заново.


Документация по MQL5: Операции с графиками / ChartSaveTemplate
Документация по MQL5: Операции с графиками / ChartSaveTemplate
  • www.mql5.com
ChartSaveTemplate - Операции с графиками - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alexey Viktorov #:

И теперь будет, если в имени шаблона name.tpl, то будет сохранено name.tpl.tpl

Надо было это делать?

программа должна делать то что ей велено но не свое 

 
Ilyas #:


Расширением в имени шаблона теперь считается только ".tpl", будет добавлено только если не задано пользоваетелем.

Например:

  1. "name.tpl" сохранится в файл как "name.tpl" и имя шаблона будет "name"
  2. "name.x" сохранится в файл как "name.x.tpl" и имя шаблона будет "name.x"


Теперь поведение соответствтет справке https://www.mql5.com/ru/docs/chart_operations/chartsavetemplate

Я только хотел уточнить как это будет выглядеть. Ведь « указывать его не требуется » не означает что указывать запрещено. Главное что сделали как надо и больше вопросов не возникнет. Спасибо.

 

Ошибка работы Тестера с кастомными символами, когда в Терминале  TERMINAL_TRADE_ALLOWED == false.


Советник для демонстрации.

#define PRINT(A) Print(#A + " = " + (string)(A))

int OnInit()
{
  PRINT((bool)::MQLInfoInteger(MQL_TESTER));
  PRINT((bool)::TerminalInfoInteger(TERMINAL_TRADE_ALLOWED));
  PRINT(EnumToString((ENUM_SYMBOL_TRADE_MODE)::SymbolInfoInteger(_Symbol, SYMBOL_TRADE_MODE)));
  
  return(INIT_FAILED);
}


Запускаем в Терминале на кастомном символе.

(bool)::MQLInfoInteger(MQL_TESTER) = false
(bool)::TerminalInfoInteger(TERMINAL_TRADE_ALLOWED) = false
EnumToString((ENUM_SYMBOL_TRADE_MODE)::SymbolInfoInteger(_Symbol,SYMBOL_TRADE_MODE)) = SYMBOL_TRADE_MODE_FULL

Видим, что по символу разрешено торговать (на счете - нет) - правильно.


Теперь запуск в Тестере  (режим по пипсам) на том же символе.

(bool)::MQLInfoInteger(MQL_TESTER) = true
(bool)::TerminalInfoInteger(TERMINAL_TRADE_ALLOWED) = true
EnumToString((ENUM_SYMBOL_TRADE_MODE)::SymbolInfoInteger(_Symbol,SYMBOL_TRADE_MODE)) = SYMBOL_TRADE_MODE_CLOSEONLY

Нельзя торговать - ошибка!


Если зайти на счет, где в Терминале  TERMINAL_TRADE_ALLOWED == true, то Тестер отрабатывает без проблем на том же символе.


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

Строка для поискаOshibka 038.

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

b3260, NTFS. Ошибка FileWriteArray.

struct STRUCT
{
  uchar Array[20];
};

#define PRINT(A) Print(#A + " = " + (string)(A))

void OnStart()
{  
  #define AMOUNT 22e7 // Если заменить на 21e7, то ошибка не возникает.
  STRUCT Array[];

  if (ArrayResize(Array, AMOUNT) == AMOUNT)
  {
    const string FileName = __FILE__;
    const int Handle = FileOpen(FileName, FILE_WRITE | FILE_BIN);
    
    if (Handle != INVALID_HANDLE)
    {
      PRINT(FileWriteArray(Handle, Array));     // Сколько якобы записали элементов массива.
      PRINT(FileTell(Handle) / sizeof(STRUCT)); // Сколько на самом деле.
      
      FileClose(Handle);
      FileDelete(FileName);
    }
  }  
}


FileWriteArray(Handle,Array) = 220000000
FileTell(Handle)/sizeof(STRUCT) = 5251635

Строка для поискаOshibka 039.

 
fxsaber #:

b3260, NTFS. Ошибка FileWriteArray.


Строка для поискаOshibka 039.

а сколько реально объективно записалось ?

в строчке могут быть ошибки Print, и приведения типов (ulong делим на int и приводим к строке).

PS/ возможно Print глючит с большими значениями

 
fxsaber #:


Строка для поискаOshibka 039.

формат 22e7 

используется для записи чисел double

а ArrayResize() - принимает в качестве параметров int

 
Igor Makanu #:

формат 22e7 

используется для записи чисел double

а ArrayResize() - принимает в качестве параметров int

Смело использую лаконичную запись при работе с целыми. Проблем не возникает.

 

Перестали работать сетевые агенты оптимизации.

Это только у меня? кто-то может проверить?

agent

Причина обращения: