Прощаи робот-да здравствует маразм - страница 3

 

Я опасался переходить на новые билды, но, оказалось, что все индикаторы, советники и скрипты работают, как есть. Компилировались, правда, с набором предупреждений. Но, новый скомпилированный код работает в несколько раз быстрее. Из нового использую только OnTimer(), новые возможности  работы  с файлами, увеличенное количество индикаторных буферов, некоторые новые функции (увеличение их количества в пользовании только дело времени). Очень полезен контроль выхода за границы массива с указанием строки в коде. Раньше было: деление на ноль, и ищи, где хочешь. А еще хуже, если ошибка не проявлялась.

"Что нового в MQL4" можно писать для тех, кто помнит старое. Новичков больше не ждем?

Для них можно сделать описание MQL4 Lite, исключив из документации, все принципиально новое и им не нужное: структуры, классы, ресурсы, указатели объектов,  ООП, отладчик, сигналы, события графика, все функции использующие это новое, и т.д. Все, что останется, будет ненамного сложнее старого MQL4. Слегка подправить Учебник под, оставшееся неубранным, новое.

.

 

 

Renat 09.09.2014 02:55 #

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

Ответ Ренату!

----------------------------------------------------------------

вы пытаетесь голословно меня обхаять!

вы как разработчик прислуживаете банкам,

а не сообшеству!вы строите гоночную машину

с педальным приводом от детского велосипеда!

поетому я вынужден выступить с фактами.

Вопрос :

куда деласъ юсер32.длл( User32.dll)

с функциями для вызова скрипта из ехперта,индикатора.

все ето исчезло!Привожу ниже как доказательство.

сам компостер изготовил мне платно ехперта,которыи

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

теперь вызов скрипта только вручную.

сам вызов обложен разными окнами-разрешение на вызов

длл-маразм!или хочу вызвать второи скрипт-окно"неужели

вы хотите покинуть скрипт1"-маразм!Возможна только ручная

торговля!чтоже делать роботу?и всем роботописателям?

Я не против ООП и якобы более быстрои работы МТ4.

Если бы вы хотели ускорить работу МТ4 то давно бы ограничили

поток дат по симболам-я пользуюсь 5-6 а приходят сотни!

Ненужный симбол ето мусор.Вот я пометил нужные галочкой

и они только и приходят!вот где скорость и быстрая реакция

ехперта.но ето вредно для банков!

Pansa

Import of functions from User32. If their purpose isn't pretty much immediately

// clear, then documenting it here frankly isn't going to help much. Requires 

// "Allow DLL imports" to be turned on.

#import "user32.dll"

   int RegisterWindowMessageA(string MessageName);

   int PostMessageA(int hwnd, int msg, int wparam, string Name);

   void keybd_event(int VirtualKey, int ScanCode, int Flags, int ExtraInfo);

#import

 

 

// The hWnd parameter for all these functions is obtained using WindowHandle().

// For example, an EA/script can get the handle of its own chart using

// WindowHandle(Symbol(), 0). If the EA/script knows that another chart 

// is open, then its handle can be obtained using the known symbol and

// timeframe. Unpredictable behaviour if there are multiple charts for 

// the same symbol and timeframe. AutomaticallyAcceptDefaults clears

// the configuration window for the new indicator/EA/script by simulating

// a press of the Enter key after a small wait. A longer wait might 

// prove to be more robust. None of this is for the faint-hearted...

 

void StartStandardIndicator(int hWnd, string IndicatorName, bool AutomaticallyAcceptDefaults = false)

{

   int MessageNumber = RegisterWindowMessageA("MetaTrader4_Internal_Message");

   PostMessageA(hWnd, MessageNumber, 13, IndicatorName);

   if (AutomaticallyAcceptDefaults) ClearConfigDialog();

}

 

void StartCustomIndicator(int hWnd, string IndicatorName, bool AutomaticallyAcceptDefaults = false)

{

   int MessageNumber = RegisterWindowMessageA("MetaTrader4_Internal_Message");

   PostMessageA(hWnd, MessageNumber, 15, IndicatorName);

   if (AutomaticallyAcceptDefaults) ClearConfigDialog();

}

 

void StartEA(int hWnd, string EAName, bool AutomaticallyAcceptDefaults = false)

{

   int MessageNumber = RegisterWindowMessageA("MetaTrader4_Internal_Message");

   PostMessageA(hWnd, MessageNumber, 14, EAName);

   if (AutomaticallyAcceptDefaults) ClearConfigDialog();

}

 

void StartScript(int hWnd, string ScriptName, bool AutomaticallyAcceptDefaults = false)

{

   int MessageNumber = RegisterWindowMessageA("MetaTrader4_Internal_Message");

   PostMessageA(hWnd, MessageNumber, 16, ScriptName);

   if (AutomaticallyAcceptDefaults) ClearConfigDialog();

}

 

void ClearConfigDialog()

{

   Sleep(100);

   keybd_event(13, 0, 0, 0);

}

 
pansa:

 

Renat 09.09.2014 02:55 #

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

Ответ Ренату!

----------------------------------------------------------------

вы пытаетесь голословно меня обхаять!

Зачем хаять, когда мы находимся на совершенно разных уровнях понимания?


user32.dll никуда не делась - это системная библиотека операционки.

Вместо A(nsi) функций используйте W(idechar/unicode) варинты функций:

#import "user32.dll"

   int  RegisterWindowMessageW(string MessageName);
   int  PostMessageW(int hwnd, int msg, int wparam, string Name);

   void keybd_event(int VirtualKey, int ScanCode, int Flags, int ExtraInfo);

#import
 
Если убрать символ из окна Market Watch, то трафика по нему приходить не будет. Этот механизм работает уже 14 лет.
 

Модератору,Ренату!

по поводу уровня понимания - ето относительно,

я везу копье рядом со славным рыцарем дон Кихотте

и соответствую задаче.

вы же взлетев должны удовлетворять более

высоким требованиям и выпускать продукцию  более

высокого качества.

хорошо  что    user32,dll          относится к виндоус.

ваш совет от А переити к W никаkого еффекта не дал!

попробуите сами запустить скрипт с ехперта!

а убирание символов не влияет на нагрузку цпу и сети

ето только вызов на екран, а поток тот же!

 я надеюсь что вы согласитесь со мнои.

панса

 

Я тоже вижу, что соответствуете.

Но здесь идет речь о программировании и программах, написанных программистами. Если вы не понимаете используемого вами исходного кода, то надо учиться. Для этого мы многое сделали: обширную документацию, учебник, статьи, базу исходников, фриланс, маркет готовых продуктов, сигналы, форум и тд.

 
pansa:

Попробуйте изменить регистр первой буквы имени скрипта/индикатора. Как-то тоже парился https://www.mql5.com/ru/forum/152533/page2#982156

P.S: ну и string менять на char[]

 

Уважаемый Renat  у меня тоже после компиляции советников выскочило куча предупреждений-ошибок нет.

У меня вопрос -что означают данные предупреждения(в основном напротив строчек с return())  и не влияют ли они негативно на работу советников?

А так конечно хотелось бы пореже всяких обновлений-советники писал сам-очень не хочется заново изучать язык и переделывать свои советники(я трейдер а не программист)  

 
vasabu2012:

Уважаемый Renat  у меня тоже после компиляции советников выскочило куча предупреждений-ошибок нет.

У меня вопрос -что означают данные предупреждения(в основном напротив строчек с return())  и не влияют ли они негативно на работу советников?

А так конечно хотелось бы пореже всяких обновлений-советники писал сам-очень не хочется заново изучать язык и переделывать свои советники(я трейдер а не программист)  


Приложите, пожалуйста, ошибки или код советника в котором появились ошибки.
 
vasabu2012:

 у меня тоже после компиляции советников выскочило куча предупреждений-ошибок нет.

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

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

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

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