Использование макросов в программировании

 

Приветствую всех. Появился некий интерес обратиться к сообществу с данным сообщением и по возможности вынести полезные советы. Ни для кого не секрет, что существуют возможность записать некую последовательность нажатий клавиш и сохранить это событие указав новую клавишу которая бы исполняла эту последовательность. Сложновато получилось но да ладно. Достаточно много лет назад была приобретена клавиатура с большими возможностями для создания и управления макросами, в силу того, что программирования не входило в повседневную деятельность все эти преимущества не использовались до недавного времени. При программировании в MQL4 периодически приходиться писать практически одно и тоже, это могут быть циклы на пример стандартный for(int i=OrdersTotal()-1;i>=0;i--), некоторые функции, да и просто строки. Когда в процессе работы человек привыкает называть параметры по своему, появляется возможность сохранить много своего времени, к примеру, написав полностью OrderSend(), затем немного подправив параметры. Подобных примеров большое количество. Через некоторое время начинают приходить мысли о написании не просто циклов, функций, чего угодно в виде макросов, а целых блоков кода, наиболее часто встречающихся в работе. В результате, появляется возможность оптимизировать процесс программирования сделав его более удобным для конкретного программиста.

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

 

На мой взгляд намного удобнее использовать функции. Со временем у каждого программиста накапливаются целые библиотеки таких функций. Более того, даже целые классы для выполнения той или иной последовательности действий появляются. Вставлять их при помощи нажатия клавиш, по-моему, чересчур. По крайней мере, для меня написать:

#include <MyLibrary.mqh>

не составляет особого труда. Ну может на пару-тройку секунд больше, чем нажать сочетание клавиш.

 
Отчасти согласен. Однако с другой стороны, даже на уровне скобок, человеку приходиться нажимать не малое количество клавиш, а затем еще выставлять курсор в нужном месте или можно сделать так одним нажатием одной клавиши: https://yadi.sk/d/V-IUYHLY3UJjdF  
 
Vladimir Liubchenko:

Приветствую всех. Появился некий интерес обратиться к сообществу с данным сообщением и по возможности вынести полезные советы. Ни для кого не секрет, что существуют возможность записать некую последовательность нажатий клавиш и сохранить это событие указав новую клавишу которая бы исполняла эту последовательность. Сложновато получилось но да ладно. Достаточно много лет назад была приобретена клавиатура с большими возможностями для создания и управления макросами, в силу того, что программирования не входило в повседневную деятельность все эти преимущества не использовались до недавного времени. При программировании в MQL4 периодически приходиться писать практически одно и тоже, это могут быть циклы на пример стандартный for(int i=OrdersTotal()-1;i>=0;i--), некоторые функции, да и просто строки. Когда в процессе работы человек привыкает называть параметры по своему, появляется возможность сохранить много своего времени, к примеру, написав полностью OrderSend(), затем немного подправив параметры. Подобных примеров большое количество. Через некоторое время начинают приходить мысли о написании не просто циклов, функций, чего угодно в виде макросов, а целых блоков кода, наиболее часто встречающихся в работе. В результате, появляется возможность оптимизировать процесс программирования сделав его более удобным для конкретного программиста.

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

Фигня это всё - долго!

Нужно сразу - голосом с дивана.

 
Vitaly Muzichenko:

Фигня это всё - долго!

Нужно сразу - голосом с дивана.

Да лень как-то все это. Пусть мысли ловит и сразу в код формирует

 
Konstantin Nikitin:   Да лень как-то все это. Пусть мысли ловит и сразу в код формирует

Лучше конвертировать мысли в валюту и другие материальные ценности

 
Vladimir Liubchenko:  Приветствую всех. Появился некий интерес обратиться к сообществу с данным сообщением и по возможности вынести полезные советы. Ни для кого не секрет, что существуют возможность записать некую последовательность нажатий клавиш и сохранить ...

Для облегчения написания кода в MetaEditor предусмотрена возможность вставки сниппетов — небольших шаблонных фрагментов исходного кода, описывающую ту или иную конструкцию языка MQL4/MQL5. Вставка сниппета инициализируется написанием ключевого слова. После набора ключевого слова, курсор изменяется на , означающий возможность вставки сниппета. После этого необходимо нажать клавишу "Tab".

MetaEditor ---> Вызов справки ---> Разработка программ ---> Работа с исходным кодом ---> Интеллектуальное управление ---> Сниппеты

 
STARIJ:

Для облегчения написания кода в MetaEditor предусмотрена возможность вставки сниппетов — небольших шаблонных фрагментов исходного кода, описывающую ту или иную конструкцию языка MQL4/MQL5. Вставка сниппета инициализируется написанием ключевого слова. После набора ключевого слова, курсор изменяется на , означающий возможность вставки сниппета. После этого необходимо нажать клавишу "Tab".

MetaEditor ---> Вызов справки ---> Разработка программ ---> Работа с исходным кодом ---> Интеллектуальное управление ---> Сниппеты

Благодарю, посмотрю

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

еще для сокращения программы есть дефайны:   #define ND  NormalizeDouble  и тогда в программе пишем:
x = ND(Ask +_Point);

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