Ошибки, баги, вопросы - страница 610

 

Здравствуйте.

Перехожу с 4 на 5. Не могу разобраться в таком вопросе. Я прописал свой класс во включаемом файле, далее использую его в эксперте. Потом еще одного эксперта хочу выставить и мне нужен этот же класс. Я должен создавать еще один включаемый файл или терминал создаст копию существующего и уже используемого и подцепит его корректно к другому эксперту (как библиотеки функции в MQL4)? А можно классы прописывать в библиотеки и использовать потом с несколькими экспертами одновременно (как библиотеки функции в MQL4)? Скачивал справку по 5-му, но там не нашел подробного описания этой процедуры, может есть где то что можно почитать, что бы разобраться?

Заранее благодарю. 

 

RedFish:

Я должен создавать еще один включаемый файл или терминал создаст копию существующего и уже используемого и подцепит его корректно к другому эксперту (как библиотеки функции в MQL4)?

создавая класс во внешнем файле - делайте этот файл с расширением mqh а не mq5.  И потом этот файл можеnе подцеплять к любому своему проекту эксперта/скрипта/индикатора через include

А можно классы прописывать в библиотеки и использовать потом с несколькими экспертами одновременно (как библиотеки функции в MQL4)?

конечно! так и делайте.

 
sergeev:

создавая класс во внешнем файле - делайте этот файл с расширением mqh а не mq5.  И потом этот файл можеnе подцеплять к любому своему проекту эксперта/скрипта/индикатора через include

конечно! так и делайте.

Спасибо за ответ.

А как библиотеки с классом к эксперту подцеплять? В MQL4 была операция #import - перечисляю функции - #import, закрыл и все работало. А как в MQL5 эта процедура? Не могу описание этого процесса ни где найти ...

Еще раз благодарю. 

 
RedFish:

Спасибо за ответ.

А как библиотеки с классом к эксперту подцеплять? В MQL4 была операция #import - перечисляю функции - #import, закрыл и все работало. А как в MQL5 эта процедура? Не могу описание этого процесса ни где найти ...

Еще раз благодарю. 

Эти моменты подробно освещены в справке: https://www.mql5.com/ru/docs/basis/preprosessor
Документация по MQL5: Основы языка / Препроцессор
Документация по MQL5: Основы языка / Препроцессор
  • www.mql5.com
Основы языка / Препроцессор - Документация по MQL5
 
Terminal: При авторизации в журнал терминала выводится информация о времени и адресе предыдущего успешного подключения.

Данная реализация приводит к нарушению безопасности - раскрывает IP-адрес торгующего, если он вдруг вздумал дать Invest-пароль кому-либо. Проверил - IP показывается всем, независимо от того, кто и как подключался - по торговому паролю или по инвесторскому.

Т. е., при логине (независимо - инвесторский или торговый пароль) показывается IP последнего коннекта (независимо, коннектились в последний раз по инвесторскому паролю или по торговому).

Необходимо отключить эту возможность для инвесторского пароля и учитывать входы только по торговому паролю. 

 
notused:

Данная реализация приводит к нарушению безопасности - раскрывает IP-адрес торгующего, если он вдруг вздумал дать Invest-пароль кому-либо. Проверил - IP показывается всем, независимо от того, кто и как подключался - по торговому паролю или по инвесторскому.

Т. е., при логине (независимо - инвесторский или торговый пароль) показывается IP последнего коннекта (независимо, коннектились в последний раз по инвесторскому паролю или по торговому).

Необходимо отключить эту возможность для инвесторского пароля и учитывать входы только по торговому паролю. 

Да, это исправим - уже видели.
 
      ObjectSetInteger(0,highlevel,OBJPROP_TIMEFRAMES,OBJ_PERIOD_M10|OBJ_PERIOD_H4);
 Каким образом я могу заранее подготовить строку с логическим(?) перечислением вроде: OBJ_PERIOD_M10|OBJ_PERIOD_H4, чтобы потом просто подставить в ObjectSetInteger() готовую переменную в виде склеенной строки? Пытался сперва склеивать символьно, а потом обёртывать в StringToInteger(), но не тут-то было... Ведь OBJ_PERIOD_...  - элемент типа enum, но имеющий флаговый hex-эквивалент типа int? Тогда такое перечисление больше смахивает на побитовую операцию "ИЛИ"...
 
x100intraday:
 Каким образом я могу заранее подготовить строку с логическим(?) перечислением вроде: OBJ_PERIOD_M10|OBJ_PERIOD_H4, чтобы потом просто подставить в ObjectSetInteger() готовую переменную в виде склеенной строки? Пытался сперва склеивать символьно, а потом обёртывать в StringToInteger(), но не тут-то было... Ведь OBJ_PERIOD_...  - элемент типа enum, но имеющий флаговый hex-эквивалент типа int? Тогда такое перечисление больше смахивает на побитовую операцию "ИЛИ"...

Может получится через #define?

Пример:

#define Fl_Fnc __FILE__+" -> "+__FUNCTION__+"(): "
 
tol64:

Может получится через #define?

Пример:

 

 Даже боюсь представить как. Вообще-то, нужен гибкий вариант, мне же не одну строку в неизменном виде нужно, а несколько разных формировать, в цикле... Если такое возможно, хотелось бы видеть пример поконкретнее...

 В сущности, вопрос сводится немного к другому. Меня интересует, возможно ли в принципе из строки, содержащей зарезервированное слово типа "OBJ_PERIOD_M30" получить собственно OBJ_PERIOD_M30 как элемент enum и по сути содержащий в себе int-значение, над которым можно было бы проделывать операции типа |? Это в простом случае. Мне же хотелось бы сразу любую строку вида "OBJ_PERIOD_M15|OBJ_PERIOD_M30|OBJ_PERIOD_H1" интерпретировать как побитовую операцию над числовыми значениями без заведения дополнительного массива соответствующих числовых значений и последующего ручного поэлементного "отождествления" со списком.

 

Добрый день, подскажите пожалуйста, необходимо использовать вот такую конструкцию void RAssignStringVector(int rhandle, string variable, string &vector[], int size);

при компиляции выдает ошибку 'vector' - invalid parameter for import function    mt4R.mqh, как мне передать указатель на массив строк, в мкл4 такое прокатывает, в 5 нет, как быть в данной ситуации?, спасибо

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