Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Пиши программы на заказ. Зарабатывай с помощью сервиса Фриланс!
MetaQuotes Software Corp.
Модератор
181260
MetaQuotes Software Corp. 2016.10.11 08:32 

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

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

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


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

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

Автор: Dmitry Fedoseev

fxsaber
4508
fxsaber 2016.10.11 08:39  

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

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

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

Vitaly Muzichenko
3482
Vitaly Muzichenko 2016.10.11 11:26  
fxsaber:

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

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

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


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

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


fxsaber
4508
fxsaber 2016.10.11 11:32  
Vitaly Muzichenko:

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

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

Dmitry Fedoseev
42906
Dmitry Fedoseev 2016.10.11 11:39  
Vitaly Muzichenko:

...

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

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

Vitaly Muzichenko
3482
Vitaly Muzichenko 2016.10.11 11:46  
fxsaber:

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

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

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

Dmitry Fedoseev
42906
Dmitry Fedoseev 2016.10.11 11:46  
fxsaber:

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

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

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

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

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

Andrey F. Zelinsky
31366
Andrey F. Zelinsky 2016.10.11 11:51  

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

 

 

 

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

 

 


fxsaber
4508
fxsaber 2016.10.11 12:17  
Dmitry Fedoseev:

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

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

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

Мэджиком.
Andrey F. Zelinsky
31366
Andrey F. Zelinsky 2016.10.11 12:19  

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

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

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

-- и т.п. 

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

fxsaber
4508
fxsaber 2016.10.11 12:22  
Vitaly Muzichenko:

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

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

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

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

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

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

123
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий