Скачать MetaTrader 5

Отличие MarketInfo(Symbol(),MODE_BID) от Bid

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Узнай последние события MQL5.community!
Conductor
33
Conductor 2010.09.24 14:30 
Господа знатоки, подскажите, пожалуйста. Документацию читал, ответа не нашел. Является ли следствием обращения к функции MarketInfo(Symbol(),MODE_BID) обращение терминала к серверу (по типу RefreshRates)? Смысл вопроса- узнать, буду ли я излишне нагружать торговый сервер, находясь в бесконечном цикле while и вызывая в каждом цикле функцию MarketInfo(Symbol(),MODE_BID) ?
Игорь
131
Игорь 2010.09.24 15:35  
Нет,сервер загружать не будете,т.к. фактически будут происходить повторный запрос котировок.Аналогичную нагрузку сервер получит,если Вы запустите 2 терминала.Обращение к этой функции,как Вы правильно решили,аналогично RefreshRates.Остался ответ на вопрос топика - MarketInfo(Symbol(),MODE_BID)=Bid;Это точно.Если не верите - выведите алертом эти значения и убедитесь сами;-)


Conductor
33
Conductor 2010.09.25 09:19  

Хотелось бы получить ссылочку на документацию, где написано, обращается ли MarketInfo(Symbol(),MODE_BID) к серверу.

Спасибо

Вот код эксперта. Выводит на печать Bid, MarketInfo(Symbol(),MODE_BID) и их разность

int start()
{  while(!IsStopped()) 
   {  Print("Bid = ",DoubleToStr(Bid,Digits), "  MODE_BID = ",DoubleToStr(MarketInfo(Symbol(),MODE_BID),Digits),
            "  Diff = ", DoubleToStr(MarketInfo(Symbol(),MODE_BID)-Bid,Digits));
      Sleep(200);
   }return(0);
}

А вот результаты его работы

21:58:39 1_Print EURUSDcx,M1: Bid = 1.34708  MODE_BID = 1.34718  Diff = 0.00010
21:58:40 1_Print EURUSDcx,M1: Bid = 1.34708  MODE_BID = 1.34721  Diff = 0.00013
21:58:40 1_Print EURUSDcx,M1: Bid = 1.34708  MODE_BID = 1.34721  Diff = 0.00013
21:58:40 1_Print EURUSDcx,M1: Bid = 1.34708  MODE_BID = 1.34724  Diff = 0.00016

В данном случае (в таком цикле) переменная Bid не изменяет значение даже при приходе новых тиков (как видно из лога)

Естественно, при использовании RefreshRates Bid ведёт себя корректно, Diff = 0

o_o
Модератор
23689
o_o 2010.09.25 09:36  

Slim:

А вот результаты его работы

В данном случае (в таком цикле) переменная Bid не изменяет значение даже при приходе новых тиков (как видно из лога)


и не будет меняться. RefreshRates надо в зацикленных или долгоиграющих функциях
Conductor
33
Conductor 2010.09.25 09:45  
sergeev:
и не будет меняться. RefreshRates надо в зацикленных или долгоиграющих функциях


Это понятно. Но видно также, что MarketInfo позволяет получить нужное значение.

Документированного ответа на свой основной вопрос я пока так и не получил.

Alexander
4034
Alexander 2010.09.25 09:51  
Slim:


Это понятно. Но видно также, что MarketInfo позволяет получить нужное значение.

Это значение берётся из переменных окружения, передаваемых сервером без запроса. Где-то разработчики отвечали уже.

P.S. Нашёл:

Модератор
3284
Renat 31.10.2008 16:03
Запросы на сервер идут только от прямых торговых операций. Функции AccountXXXX, MarketInfo, OrderSelect и аналогичные берут данные из текущего рыночного окружения.
Модератор
3284
Renat 01.11.2008 11:36
diakin >>:

А когда окружение обновляется? В момент запуска терминала, или раз в сутки или по другому еще?

Все изменения рыночного окружения приходят в реальном режиме времени. Потиково + подкачка чартов кусками в режиме OnDemand (по требованию/необходимости).



При каких командах идет обращение к ДЦ.

Conductor
33
Conductor 2010.09.25 09:53  
goldtrader:
Это значение берётся из переменных окружения, передаваемых сервером без запроса. Где-то разработчики отвечали уже.


Спасибо большое, уже понятнее. Поищу ещё.

Добавлено: goldtrader, еще раз спасибо. Я узнал именно то, что хотел.

o_o
Модератор
23689
o_o 2010.09.25 09:54  
Slim:


Это понятно. Но видно также, что MarketInfo позволяет получить нужное значение.

это плохо?

Является ли следствием обращения к функции MarketInfo(Symbol(),MODE_BID) обращение терминала к серверу (по типу RefreshRates)?

Нет

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