Не могу понять, может, кто подскажет?
OnInit в индикаторе выполняется мгновенно. Тот же код в OnInit эксперта выполняется секунд 40.
В обоих случаях используется одна и та-же библиотека классов, написанных мной.
Такой же код в индикаторе, но там "End OnInit" появляется мгновенно после "Start OnInit"Не могу понять, в чем дело. Может, кто сталкивался с подобным?
Если не сложно, попробуйте, пожалуйста, повызывать свои классы из индикаторов и советников и сравнить время.
Судя по всему, Вам необходимо обратить внимание на примечания к функциям из раздела Доступ к таймсериям и индикаторам:
При запросе данных из индикатора, если запрашиваемые таймсерии еще не построены или их необходимо загрузить с сервера, то функция сразу же вернет -1, но при этом сам процесс загрузки/построения будет инициирован.
При запросе данных из эксперта или скрипта, будет инициирована загрузка с сервера, если локально этих данных у терминала нет, либо начнется построение нужной таймсерии, если данные можно построить из локальной истории, но они еще не готовы. Функция вернет то количество данных, которые будут готовы к моменту истечения таймаута.
Спасибо, Рош!
Буду смотреть указанное Вами.
Единственное, что могу возразить, еще не читая, это то, что необходимые данные, скорее всего, есть уже давно: мне нужны последние сто баров из всех стандартных девяти таймфреймов, и они, ясное дело, давно уже есть в терминале, ибо и индикатор их строит, и чисто визуально я их наблюдаю.
Уважаемый Rosh, спасибо еще раз!
Как это часто бывает (но не всегда :), это был мой косяк.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Не могу понять, может, кто подскажет?
OnInit в индикаторе выполняется мгновенно. Тот же код в OnInit эксперта выполняется секунд 40.
В обоих случаях используется одна и та-же библиотека классов, написанных мной.
Вот кусок кода эксперта:
clsIndR0_MultyChart _indR0_MC;
clsIndR1_MultyChart _indR1_MC;
clsIndR2_MultyChart _indR2_MC;
clsIndR3_MultyChart _indR3_MC;
bool _blnUseTimer=false;
//-------------------------------------------------------------------------------------------------
int OnInit() {
ArrayInitialize(_adblR0,0.0);
ArrayInitialize(_adblR1,0.0);
ArrayInitialize(_adblR2,0.0);
ArrayInitialize(_adblR3,0.0);
_structIndicParam_MC.strSymbol=_Symbol;
_structIndicParam_MC.enumTF_thisTF=_Period;
_structIndicParam_MC.intAmountBarsForCalc=_intAmountBarsForCalc;
_structIndicParam_MC.intBarFromCalc=0;
_structIndicParam_MC.intWidthInBars=200;
_structIndicParam_MC.intSpaceInBars=1;
Print("Start OnInit");
_indR0_MC.Initialize(_structIndicParam_MC);
_indR1_MC.Initialize(_structIndicParam_MC);
_indR2_MC.Initialize(_structIndicParam_MC);
_indR3_MC.Initialize(_structIndicParam_MC);
Print("End OnInit"); // появляется секунд через 40 после "Start OnInit"
if(_blnUseTimer) {EventSetTimer(1);}
return(0);
}
Такой же код в индикаторе, но там "End OnInit" появляется мгновенно после "Start OnInit"
Не могу понять, в чем дело. Может, кто сталкивался с подобным?
Если не сложно, попробуйте, пожалуйста, повызывать свои классы из индикаторов и советников и сравнить время.