Новая версия платформы MetaTrader 5 build 1930: Плавающие окна графиков и .Net библиотеки в MQL5 - страница 132

 
Ilyas :

As I undestand, "clazz :: clazz ()" in your macro, will be expanded to "Test3 :: Test3 (), not to" Test3 :: Test2 () "

Имя должно быть «Core @ <Test2> :: Core @ <Test2>», но показывает «Core @ <Test2> ª :: Test3».   Второй заголовок неправильно заменяется именем макроса, а не содержимым макроса.

 
Juan Fernandez:

Имя должно быть «Core @ <Test2> :: Core @ <Test2>», но показывает «Core @ <Test2> ª :: Test3».   Второй заголовок неправильно заменяется именем макроса, а не содержимым макроса.

Спасибо за уточнение.

Увидел, буду разбираться

 

Одновременно запущено много MT4 и MT5, плюс ко всему этому ME от нескольких Терминалов. К тому же могут быть открыты несколько Визуализаторов.

По итогу окон много, ориентироваться между которыми тяжело. Связка Терминал-Редактор удерживается, благодаря замечательной горячей клавише F4. Подобной связки с Визуализатором нет совсем. И если хочешь быстро переключаться туда-обратно, используешь сочетание ALT+TAB. Однако, если из ME переключился, например, на Notepad и обратно. То уже из ME переключиться на Визуализатор средствами ALT+TAB проблематично.


В общем, возможно ли что-то сделать по этой теме? Например, переключение на на свой Визуализатор по горячей клавише, как это происходит между своими Терминалом-Редактором.


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

На скрин попали три терминала и один редактор. Если бы иконки ну хоть как-то бы доформировывались, скажем, цифрой, было бы понятнее. В общем, по ориентированию среди MT4/5-ME-Tester, наверное, нужно что-то сделать.

 
В ME по-умолчанию в журнале компиляции по какой-то причине галка Автопрокрутка выключена.
 

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

Извините - новичок в МТ5, поэтому столь странный вопрос:

При запуске оптимизации в Тестере стратегий процесс в подавляющем большинстве случаев идёт медленно и при этом с низкой загрузкой ядер процессора. Всего несколько раз сталкивался с загрузкой более 50%, а обычно она в пределах 10%. С чем это может быть связано и можно ли как-нибудь "принудить" к терминал более активной работе?

 
Комментарии, не относящиеся к этой теме, были перенесены в "Вопросы от начинающих MQL5 MT5 MetaTrader 5".
 
Juan Fernandez:

Its english comment. You dont translate it or post will be weird

I checked it but conversion is wrong in old builds. It worked, but I really didn't want that. In the current capture, I stop executing the code inside the static method Stack window show methiod name. The name should be “Core @ <Test2> :: Core @ <Test2>" but shows "“Core @ <Test2> :: Test3". Second clazz is replaced by macro name, not macro content.

Более больного стиля написания кода еще не встречал.
Это как надо упороться, что бы такое использовать...


И да проблема в этом:

        #define         PLATFORMºCLASSªNAME( package, clazz )                   package##@##<##clazz##>
        #define         COREºCLASSªINTERNAL( clazz, main )                      class clazz { private: static clazz * ªªsingleton; COREºCLASSªMAINª##main( clazz )
        #define         COREºCLASSªMAINªSTATIC( clazz )                         public: static clazz * main() { clazz::clazz##ª(); return( NULL ); };
        #define         PLATFORMºCLASSªVARªSTATIC( clazz, type, name )          static type clazz::name;

        #define Test3 PLATFORMºCLASSªNAME( Core, Test2 )

        
COREºCLASSªINTERNAL( Test3, STATIC )
                private: static void Test3ª() {
                        int a;
                        a=1;

                };
                
                public: Test3() {
                };

};


Выделенная строка - это название метода, а код ожидает подстановку макроса Test3##ª
Не думаю что разработчикам стоит тратить свое время на эти бредни.

 

Sergey Dzyublik:

Не думаю что разработчикам стоит тратить свое время на эти бредни.

Тем не менее, время потрачено, проблем в инстанцировании не нашёл

Добавил verbose mode для разворачивания макросов (пока этим флагом управлять нельзя, по умолчанию отключен)

Вот что получил (убрал дублирование развёртки макроса Test3

marco 'Test3'
 >> PLATFORM_CLASS_NAME ( Core , Test2 )
   marco 'PLATFORM_CLASS_NAME' with params:
      Core
      Test2
    << Core@<Test2>
 << Core@<Test2>

marco 'CORE_CLASS_INTERNAL' with params:
   Core@<Test2>
   STATIC
 >> class Core@<Test2> { private : static Core@<Test2> * singleton ; CORE_CLASS_MAIN_STATIC ( Core@<Test2> )
   marco 'CORE_CLASS_MAIN_STATIC' with params:
      Core@<Test2>
    << public : static Core@<Test2> * main ( ) { Core@<Test2> :: Core@<Test2> ( ) ; return ( singleton ) ; } ;
 << class Core@<Test2> { private : static Core@<Test2> * singleton ; public : static Core@<Test2> * main ( ) { Core@<Test2> :: Core@<Test2> ( ) ; return ( singleton ) ; } ;
    

marco 'PLATFORM_CLASS_VAR_STATIC' with params:
   Core@<Test2>
   Core@<Test2>      *
   singleton
 << static Core@<Test2> * Core@<Test2> :: singleton ;


Ошибок в новом (заменили недавно) алгоритме разворачивания не нашёл.

Явный вызов конструктора в MQL запрещён.

 
Tortuga5:

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

Извините - новичок в МТ5, поэтому столь странный вопрос:

При запуске оптимизации в Тестере стратегий процесс в подавляющем большинстве случаев идёт медленно и при этом с низкой загрузкой ядер процессора. Всего несколько раз сталкивался с загрузкой более 50%, а обычно она в пределах 10%. С чем это может быть связано и можно ли как-нибудь "принудить" к терминал более активной работе?

Посмотрите на загрузку памяти - там может быть утечка.

 
Sergey Dzyublik :

More patient style of writing code has not yet met.
This would be a fight


And yes the problem is this:


It's not a problem
.

Это сработало несколько лет назад . Сейчас не работает . Это может быть бесполезно для вас, но пространства имен полезны для предотвращения столкновений. Так как mql5 их не поддерживает, мне пришлось искать способ