Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 694

 
Renat Akhtyamov:

ну а дальше цикл индикатора, в котором количество баров - эта самая строка.

Интересно - что понятно(?), т.е. где почитать о особенностях работы МТ5 в режиме офлайн, подскажите пжста?

В индикатор rates_total - с успехом используется вместо Bars() в цикле в OnCalculate()
 
Artyom Trishkin:
В индикатор rates_total - с успехом используется вместо Bars() в цикле в OnCalculate()

Ок. Да, есть такое.

А по разным инструментам/таймфреймам будет одинаковое количество баров, ведь у меня мультивалютный индюк?

Здесь я могу менять параметры

Bars(_Symbol,_Period);

, а как быть с rates_total с целью расчета индюка на разных ТФ и инструментах?

 
Renat Akhtyamov:

Ок. Да, есть такое.

А по разным инструментам/таймфреймав будет одинаковое количество баров, ведь к меня мультивалютный индюк?

Для получения количества баров истории для не текущего таймфрейма или не текущего символа в мультивалютном/мультитаймфреймовом индикаторе, придётся использовать Bars()
 
Artyom Trishkin:
Для получения количества баров истории для не текущего таймфрейма или не текущего символа в мультивалютном/мультитаймфреймовом индикаторе, придётся использовать Bars()

Вот как раз об этом я и пишу - что эта фича не работает в офлайне, хотя история котировки есть

Соответственно в офлайне тестированию индюк не поддаётся.

Получается что котировка в МТ5 высылается персонально на каждый IP-арес и может отличаться от истории котировки, которая уже нарисована на чарте? //ну и пошла поехала логика...

 
Renat Akhtyamov:

ну а дальше индикатор, в котором количество баров - эта самая строка.

Интересно - что понятно(?), т.е. где почитать о особенностях работы МТ5 в режиме офлайн, подскажите пжста?

Понятно что МТ5. Непонятно, что делалось перед вызовом Bars(). Такой вот простой скрипт у меня работает и возвращает не ноль, даже когда нет соединения с сервером или когда вообще сети нет.

 А в индикаторах пока не пробовал, потому и спросил, как там сделано у вас. Скорее всего, при повторном вызове уже будет реальное количество баров, превый вызов спровоцирует обновление данных в кэше.

void OnStart()
  {
        Print("Bars on chart - ",Bars(_Symbol,PERIOD_CURRENT));  
  }
 
Vitalie Postolache:

Понятно что МТ5. Непонятно, что делалось перед вызовом Bars(). Такой вот простой скрипт у меня работает и возвращает не ноль, даже когда нет соединения с сервером или когда вообще сети нет.

 А в индикаторах пока не пробовал, потому и спросил, как там сделано у вас.

void OnStart()
  {
        Print("Bars on chart - ",Bars(_Symbol,PERIOD_CURRENT));  
  }
ясно
 

Как лучше простым способом привязаться к закрытию свечи для запуска советника? Чтобы пересчитать индикаторы, снять/выставить ордера и т.п.

По таймеру?

Но как запустить таймер в нужное время, чтобы срабатывал ежечасно в ЧЧ:00:00? а не через каждый час с момента активации таймера?

 
dimnik:

Как лучше простым способом привязаться к закрытию свечи для запуска советника? Чтобы пересчитать индикаторы, снять/выставить ордера и т.п.

По таймеру?

Но как запустить таймер в нужное время, чтобы срабатывал ежечасно в ЧЧ:00:00? а не через каждый час с момента активации таймера?

Проверять время открытия текущей свечи и сравнивать со временем открытия на прошлой проверке. Если равны - значит ещё не открылся новый бар и return из OnTick(). Если не равны - открытие нового бара определили - выполняем всё, что заложено в советник и запоминаем новое время открытия для следующей проверки.
 
Vitaly Muzichenko:

Вопрос по графику:

Есть вот такая конструкция

for(long currChart = ChartFirst();currChart != -1; currChart=ChartNext(currChart)) {
 if(currChart == график тестера) continue; // Что сюда написать?
  ObjectSetInteger(currChart,"Sync",OBJPROP_BGCOLOR,clrGreen);
}

Как выяснить, что график не основной, а открытый в режиме тестера и его пропустить?

Как предложение.

Создать шаблон для графика на него накинуть лэйбу с именем, например, "TesterChart" или любой другой объект, можно на нулевых координатах, чтобы не было видно. Назвать этот шаблон "Tester". Теперь все графики от тестов будут иметь объект с этим именем. Дальше спрашивать, имеет ли график данный объект, если да, это "Наш тестерный", пропускаем.

Через пень колоду, но другого пути не знаю.

 
Vasiliy Pushkaryov:
Как предложение.

Создать шаблон для графика на него накинуть лэйбу с именем, например, "TesterChart" или любой другой объект, можно на нулевых координатах, чтобы не было видно. Назвать этот шаблон "Tester". Теперь все графики от тестов будут иметь объект с этим именем. Дальше спрашивать, имеет ли график данный объект, если да, это "Наш тестерный", пропускаем.

Через пень колоду, но другого пути не знаю.

Спасибо, но это решение не подходит в том плане, что тестирую не на одном шаблоне, но это пол-беды, а вот то, что этот индикатор работает не только у меня, то народ просто забодается набрасывать лейблы в тестере.

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

.

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