технический вопрос: RefreshRates+таймсерии или функции

 

Часто в постах видел, что вызывать RefreshRates для получения Ask / Bid необязательно, если использовать MarketInfo (, MODE_ASK / MODE_BID).

Вопрос тогда в следующем: можно ли не вызывать RefreshRates, если обращаться к ценам не через массивы Close/Open... а через функции iClose/iOpen итд?

Обновляются ли массивы, вызываемые через функции сами. Или всё таки нужен RefreshRates для получения обновления последних баров?

То есть, если например советнег долго вычисляет на тике, то нужно ли обращаться к iClose только после RefreshRates, или же ядро само обновляет данные?

 

методом научного тыка получено:)

iClose(NULL,0,0) или указан текущий тф - возвращает цену на момент старта программы.

iClose с другими тф обновленную.

 

Да. действительно.

Если указывать получение данных с валюты, отличной от текущей, iClose и MarketInfo работают синхронно. То есть показывают последнюю известную цену.

RefresRates не требуется.


int start()
  {
  	while(true)
  	{
  		Print("1 "+iClose("GBPUSD", Period(), 0));
  		Print("ModeAsk "+MarketInfo("GBPUSD", MODE_BID));
  		Sleep(5000);
  	}
   return(0);
  }

но если валюта будет указана текущая, то iClose не будет обновлятся, получается. что iClose для текущей валюты берёт свои данные с массива Close?

А значит требуется обновления RefreshRates.

Причина обращения: