Обсуждение статьи "Основы программирования на MQL5: Глобальные переменные терминала"

 

Опубликована статья Основы программирования на MQL5: Глобальные переменные терминала:

Глобальные переменные терминала — незаменимое средство при разработке сложных и надежных экспертов. Освоив работу с глобальными переменными терминала, вы уже не сможете представить себе создание экспертов на MQL5 без их использования.

Не следует путать глобальные переменные терминала со всем известными глобальными переменными программы (рис. 2) и пытаться найти им аналогию в других языках программирования, если вы с ними знакомы.


Рис. 2. Фрагмент кода эксперта MovingAverage из примеров терминала, глобальные переменные программы выделены красной областью

Основная особенность и отличие глобальных переменных терминала в том, что они сохраняют свои значения даже после закрытия терминала. Именно поэтому они являются очень удобным и быстрым средством для хранения важных данных и становятся почти незаменимыми при разработке надежных экспертов со сложным взаимодействием между ордерами. Когда вы освоите работу с глобальными переменными терминала,  вам будет сложно представить себе создание экспертов на MQL5 без их использования.

Автор: Dmitry Fedoseev

 

Образцовая статья!

Глобальные переменные терминала — незаменимое средство при разработке сложных и надежных экспертов. Освоив работу с глобальными переменными терминала, вы уже не сможете представить себе создание экспертов на MQL5 без их использования.

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

 
fxsaber:

Образцовая статья!

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

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


Dmitry Fedoseev:
Не следует путать глобальные переменные терминала со всем известными глобальными переменными программы (рис. 2) и пытаться найти им аналогию в других языках программирования, если вы с ними знакомы.

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


 
Vitaly Muzichenko:

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

Нет. Другое имел в виду. Взаимодействие ТС - не было таких задач.

 
Vitaly Muzichenko:

...

Ну тут конечно есть некоторые сомнения, чем не замена в языке js и php

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

 
fxsaber:

Нет. Другое имел в виду. Взаимодействие ТС - не было таких задач.

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

Да и вообще, область применения очень широкая, и как писал ранее, то без них обойтись не всегда получается.  

 
fxsaber:

Образцовая статья!

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

Как бы вы решили такую задачу: стратегия стоп-переворот - у рыночного ордера на стоплоссе стоит стопордер увеличенного объема, и так выполняется переворот и увеличение лота пока не будет прибыль. Но коэффициент умножения равен 1.4, такой коэффициент, что не при каждом умножение будет фактическое увеличение лота (из-за необходимости выполнять нормализацию лота). Здесь только считать через MathPow(), а значит нужно начальный лот и индекс ордера.

Можно и по истории пройти, но все равно, начальный ордер должен быть как-то помечен.

Как бы вы это сделали без глобальных переменных?    

 

переход по любой ссылке оглавления:

 

 

 

привод к такой странице:

 

 


 
Dmitry Fedoseev:

Как бы вы решили такую задачу: стратегия стоп-переворот - у рыночного ордера на стоплоссе стоит стопордер увеличенного объема, и так выполняется переворот и увеличение лота пока не будет прибыль. Но коэффициент умножения равен 1.4, такой коэффициент, что не при каждом умножение будет фактическое увеличение лота (из-за необходимости выполнять нормализацию лота). Здесь только считать через MathPow(), а значит нужно начальный лот и индекс ордера.

Можно и по истории пройти, но все равно, начальный ордер должен быть как-то помечен.

Как бы вы это сделали без глобальных переменных?    

Мэджиком.
 

От статьи ожидал пояснения:

-- как и где хранятся глобальные переменные (в памяти, на диске)

-- как часто можно считывать эти глобальные переменные

-- и т.п. 

К сожалению, ответов на вопросы в статье не нашёл.

 
Vitaly Muzichenko:

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

Да и вообще, область применения очень широкая, и как писал ранее, то без них обойтись не всегда получается.  

Да, при такой постановке глобальные переменные идеальны. У меня просто ни разу при написании ТС и индикаторов не возникало задач, где нужно было бы что-то запоминать на уровне терминала.

Поэтому несколько удивило такое утверждение

Глобальные переменные терминала — незаменимое средство при разработке сложных и надежных экспертов. Освоив работу с глобальными переменными терминала, вы уже не сможете представить себе создание экспертов на MQL5 без их использования.

Владею глобальными переменными, графическими объектам и файлами на хорошем уровне. Но никогда с помощью них (и чего-либо другого) ничего не запоминал для ТС. Хотя, вроде, ТС были надежными и довольно тяжелыми.