Скачать MetaTrader 5

функция RefreshRates()

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

Господа, объясните,если можете,как работает функция RefreshRates(), пожалуйста.  Насколько я мог понять, она во время тика принимает на короткое время значение TRUE, потом до следующего тика

имеет значение FALSE затем в результате очередного ТИКА опять TRUE,и так далее. Вопрос: надо ли помещать Функцию RefreshRates() в начале каждой функции, или только в начале первой?

с уважением, С.Buyanov

Alexey Viktorov
8026
Alexey Viktorov  
Функцию RefreshRates() надо вызывать тогда, когда есть вероятность что цена может измениться во время выполнения кода. Например во время закрытия относительно большого количества ордеров в цикле. Само предназначение этой функции обновить значения предопределённых переменных. В остальных случаях вызов этой функции схож с прогулкой в ясную погоду с зонтиком в руке.
Ilya Prozumentov
274
Ilya Prozumentov  
Вопрос: надо ли помещать Функцию RefreshRates() в начале каждой функции, или только в начале первой?
Всё зависит от того, что в самих функциях происходит. Там, где должны использоваться только самые свежие данные, RefrashRates пишется прямо перед тем местом, за которым будет происходить использование этих данных.
Например, в любом эксперте, прежде, чем открывать позицию, вычисляется состояние рынка по каким-либо параметрам. Затем, если условия подошли, открывается позиция. Чтобы открыть позицию, эксперт вызывает функцию OrderSend. В параметры этой функции нужно передать самую свежую цену Bid или Ask, а пока эксперт вычислял состояние рынка, эти цены могли измениться. Но внутри всего блока OnTick, в текущем проходе, эти изменения автоматически не происходят. Новые цены будут только в следующем проходе OnTick, а нам они нужны в текущем проходе. Поэтому перед OrderSend надо написать RefrashRates, что бы получить новые цены в текущем проходе блока OnCalculate.

Господа, объясните,если можете,как работает функция RefreshRates(), пожалуйста.
Если текущий проход блока OnTick ещё не завершился и в терминал поступил новый тик, то RefrashRates становится true.
Если после прихода нового тика, что поступил в терминал в момент текущего прохода блока OnTick, будет вызвана RefreshRates то, Bid, Ask и другие предопределённые переменные обновятся, RefrashRates вернёт true и изменит своё состояние на false, иначе, предопределённые переменные тоже обновятся, но после завершения текущего прохода блока OnTick, и RefrashRates так же станет false.
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий