Некоторые вопросы касательно индикаторов - страница 2

 

Я тоже предполагаю варианты некоторые, но знать бы что по факту имеется. А то предположениями сыт не будешь, как говорится. Пока что я решил не обращать внимания на этот нонсенс. Буду просто писать количество и всё. 

 
для того что бы не светить лишними буферами в окне "Цвета" - настроек индикатора, и в "Окне данных" терминала.
 
hoz:

Вот ещё момент.

 В документации написано, что:

PLOT_EMPTY_VALUE - Пустое значение для построения, длякоторого нет отрисовки. 

Это получается типа инициализация "пустым значением" буфера? Типа защита от "наличия мусора в буфере до помещения туда значения" на всякий случай? Так?

А касаемо этого вопроса я прав? Это типа явная инициализация? Что бы на всякий случай в каком-нить индексе таймсерии не оказалось "мусора" ? Или всё не совсем так?
 
hoz:
А касаемо этого вопроса я прав? Это типа явная инициализация? Что бы на всякий случай в каком-нить индексе таймсерии не оказалось "мусора" ? Или всё не совсем так?
  фактически... если вы рисуете зигзагом, или стрелками, то значимые значения будут вписаны в буфер только в месте появления\перелома, все остальные значения буфера будут заполнены EMPTY_VALUE которое не отображается на графике
 

Здравствуйте.   Что-то никак не могу сообразить, так как пока плохо знаю MQL4.  Может у кого будут идеи ?

  Требуется в окне инструмента, который в настоящий момент не торгуется (например, перерыв между сессиями),  рисовать текущий график другого инструмента (который в настоящий момент как раз торгуется ).   Конечно, программно я сдвигаю рисуемый график назад во времени . Проблема в том,  что постоянного обновления картинки не происходит (это понятно, ведь нового тика по "спящему" инструменту не поступает) и поэтому картинка индикатора прорисовывается в окне только один раз-при запуске. И если надо ее обновить с учетом поступивших новых баров по активному инструменту, приходится вручную перезапускать индикатор. А хотелось бы , чтобы на неподвижной картинке "спящего" инструмента, по мере поступления новых баров по другому-"активному" инструменту , дорисовывалась бы текущая картинка .

WindowRedraw- не помог ,видимо он перерисовывает только график текущего инструмента,но не пользовательский индикаторный буфер 

 
vdrd:

Здравствуйте.   Что-то никак не могу сообразить, так как пока плохо знаю MQL4.  Может у кого будут идеи ?

  Требуется в окне инструмента, который в настоящий момент не торгуется (например, перерыв между сессиями),  рисовать текущий график другого инструмента (который в настоящий момент как раз торгуется ).   Конечно, программно я сдвигаю рисуемый график назад во времени . Проблема в том,  что постоянного обновления картинки не происходит (это понятно, ведь нового тика по "спящему" инструменту не поступает) и поэтому картинка индикатора прорисовывается в окне только один раз-при запуске. И если надо ее обновить с учетом поступивших новых баров по активному инструменту, приходится вручную перезапускать индикатор. А хотелось бы , чтобы на неподвижной картинке "спящего" инструмента, по мере поступления новых баров по другому-"активному" инструменту , дорисовывалась бы текущая картинка .

WindowRedraw- не помог ,видимо он перерисовывает только график текущего инструмента,но не пользовательский индикаторный буфер 

Ну попробуй непрерывный цикл. Только поставь какие-нибудь задержки, например поступление нового тика на работающем инструменте. На глобальном уровне переменная double bid_; и условие в цикле if(bid_ != MarketInfo(Symbol(), MODE_BID) {}

Теоретически должно работать.

Или размести весь код в void OnTimer() {}


 
AlexeyVik:

Ну попробуй непрерывный цикл. Только поставь какие-нибудь задержки, например поступление нового тика на работающем инструменте. На глобальном уровне переменная double bid_; и условие в цикле if(bid_ != MarketInfo(Symbol(), MODE_BID) {}

Теоретически должно работать.

Спасибо, но засада в том, что индикатор-то как раз и  перезапускается каждый раз по приходу нового тика работающего инструмента и добавляет очередное значение в индикаторный буфер неработающего инструмента. Но это ни хрена не отображается !  Видимо этот пользовательский индикаторный буфер сбрасывает данные в системный буфер экрана только по своему-"родному " тику, ну или при начальном запуске.
 
а по таймеру надо попробовать, спасибо
 
hoz:
А касаемо этого вопроса я прав? Это типа явная инициализация? Что бы на всякий случай в каком-нить индексе таймсерии не оказалось "мусора" ? Или всё не совсем так?

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

 И соответственно пользовательские индикаторы от нескольких инструментов корректны только в те моменты времени, когда реально присутствовали одновременно 

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

 
vdrd:
Спасибо, но засада в том, что индикатор-то как раз и  перезапускается каждый раз по приходу нового тика работающего инструмента и добавляет очередное значение в индикаторный буфер неработающего инструмента. Но это ни хрена не отображается !  Видимо этот пользовательский индикаторный буфер сбрасывает данные в системный буфер экрана только по своему-"родному " тику, ну или при начальном запуске.

Я говорил о непрерывном цикле в коде брошенном на НЕработающий инструмент. Да и таймер тоже должен быть на неработающем.


Только допустил ошибку которая могла ввести в заблуждение if(bid_ != MarketInfo(Symbol(), MODE_BID) {}

Не Symbol() а символ работающего инструмента.

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