Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Устанавливай программы из библиотеки прямо в MetaTrader. Это просто!
buyanov
46
buyanov 2016.09.06 05:48 

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

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

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

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

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