Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Увеличивай свой рейтинг. Выполняй заказы в сервисе Фриланс!
majestic
738
majestic 2011.05.07 18:26 

при вызове iClose для инструмента, графики которого не были открыты (нет истории), первый раз возвращается 0

через некоторе время значение для 1000 бара, к примеру появляется, т.е. история сама подгружается...

а для 2000, например, уже не подгружается... хотя он есть (если открыть график и руками подгрузить)

так как же должно быть? должна она подгружать или нет?

где-то в другой теме данные подгружаются эмуляцией открытия графика и нажатия кнопки хом, значит нет?

почему тогда иногда итак грузит простым вызовом iClose и ожиданием?

Victor Nikolaev
Модератор
14072
Victor Nikolaev 2011.05.07 18:28  
majestic:

при вызове iClose для инструмента, графики которого не были открыты (нет истории), первый раз возвращается 0

через некоторе время значение для 1000 бара, к примеру появляется, т.е. история сама подгружается...

а для 2000, например, уже не подгружается... хотя он есть (если открыть график и руками подгрузить)

так как же должно быть? должна она подгружать или нет?

где-то в другой теме данные подгружаются эмуляцией открытия графика и нажатия кнопки хом, значит нет?

почему тогда иногда итак грузит простым вызовом iClose и ожиданием?


История загружается (если конечно инструмент есть в обзоре рынка). Но при загрузке формируется ошибка, которую можно отследить
majestic
738
majestic 2011.05.07 18:32  
Vinin:

История загружается (если конечно инструмент есть в обзоре рынка). Но при загрузке формируется ошибка, которую можно отследить

GetLastError у меня при первом вызове iClose возвращает 0, как отследить?
Victor Nikolaev
Модератор
14072
Victor Nikolaev 2011.05.07 18:34  
majestic:

GetLastError у меня при первом вызове iClose возвращает 0, как отследить?

Код еще раз предоставьте
majestic
738
majestic 2011.05.07 18:44  
   string s = "EURUSD";
   int p = PERIOD_H1;
   int i = 10;
   while(iClose(s, p, i)==0) 
   {
      RefreshRates(); 
   }
   Alert(iClose(s, p, i), " ", iBars(s, p));


возвращает при трех запусках:

  • 1.4532 512
  • 1.4532 2048
  • 1.4532 2048

т.е. грузит первые 2048 баров независимо от заданного и все, если сделать i = 3000 - зависнет.

открываю график и прокручиваю в начало, баров более 6000.

majestic
738
majestic 2011.05.07 21:30  

не знаю, насколько актуален сейчас ответ Renat'a, но похоже победить только эмуляцией ручной загрузки

вообще удивляюсь, как люди пишут мульти-советники с такими заморочками )

Andrei
2316
Andrei 2011.05.08 06:12  
majestic:

через некоторе время значение для 1000 бара, к примеру появляется, т.е. история сама подгружается...

а для 2000, например, уже не подгружается... хотя он есть (если открыть график и руками подгрузить)

так как же должно быть?

https://www.mql5.com/ru/forum/132490/page33
hrenfx:
Получается, что для абсолютной надежности советников "все в одном" надо делать в самом начале функции старт вызов ПУСТОГО индикатора и RefreshRates(). Это и будет гарантировать подкачку истории (после обрыва) и исполнение советника на первом тике, соответствующем уже закачанной истории.
Vadim Zhunko
5221
Vadim Zhunko 2011.05.08 06:52  
Самый надёжный способ подкачки здесь и здесь. Другого ещё не придумали.
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий