Обновить окно графика - страница 3

 
Эй, ребята, все работает отлично. Спасибо еще раз,
 
phy:

Что такое ГВ?

В последнее время я делаю примерно следующее:

for( int i = MathMax(WindowFirstVisibleBar(), Bars-IndicatorCounted()); i>= 0; i--){

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

Привет, phy.....

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

Поскольку я новичок в кодировании, я не знаю, где добавить волшебную линию................

for( int i = MathMax(WindowFirstVisibleBar(), Bars-IndicatorCounted()); i>= 0; i--){

Plesae suggest....

Спасибо... .....lot.

Гарри.

 
brspMA:
Эй, ребята, все работает нормально. Спасибо еще раз,

Здравствуйте, brspMA,

У меня такая же проблема.

Не могли бы вы подсказать мне, куда добавить этот лайм...

Спасибо......

 
  1. Почему вы пишете в тему пятилетней давности? Вы действительно ожидаете, что кто-то, кто не писал в этой теме годами, ответит?
  2. for( int i = MathMax(WindowFirstVisibleBar(), Bars-IndicatorCounted()); i>= 0; i--){
    Вы уже перерисовали все бары, поэтому меняется только нулевой бар. Какой смысл перерисовывать видимые бары?
  3. Смена таймфрейма, обновление графика и т.д. уже обрабатывается IndicatorCounted, никакого дополнительного кода не нужно, кроме недостающего -1 -- самый левый бар это Bars-1.
  4. hp69: Даже у меня такая же проблема.........
    Если ваш индикатор не обновляется без обновления, проблема в том, что ваш индикатор сломан. Изменение цикла НЕ поможет. Вы должны починить индикатор. Только в первый раз (и при обновлении) он отрисует все бары. В большинстве других тиков Bars-1-IndicatorCounted() будет равен нулю. Цикл выполняется один раз. Вы используете неинициализированные переменные вместо значений, сохраненных в буферах, с предыдущего бара. Если вы не можете разобраться, откройте НОВЫЙ пост с вашим кодом.
  5. Hp69 Не делайте даблпост
 


Дата начала нити - 2007.11.29
 

WHRoeder- Почему вы пишете в тему пятилетней давности?

RaptorUK - Дата начала нити - 2007.11.29

============================

Что плохого в том, чтобы отвечать на старые темы?

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

Моды ходят в школу, где их учат, как очернять и осуждать новичков?

 
FlatFap:

WHRoeder - Почему вы пишете в тему пятилетней давности?

RaptorUK - Дата начала нити - 2007.11.29

============================

Что плохого в том, чтобы отвечать на старые темы?

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

Модеры ходят в школу, где их учат, как очернять и осуждать новичков?

В принципе, нет ничего плохого в том, чтобы отвечать на старые темы.

Именно такие ответы, как ваш, которые не имеют ничего общего с темой, раздражают других.

Кроме того, ответы на вопрос 5-летней давности часто не полезны, так как mql4 развивается со временем. Поднятие старой темы в начало списка часто означает, что новички читают информацию, которая больше не актуальна.

 
FlatFap, не стоит расстраиваться. Это совершенно нормально отвечать на старую тему. Сам факт, что Google поместил эту тему на первое место в списке поиска, означает, что она наиболее близка к тому, что вы ищете. MQL4 развивается, как и любое другое приложение, но большинство командных функций не меняются каждый день, и с помощью небольшого количества проб и ошибок и дальнейших исследований вы можете достичь желаемого решения. Удачи!
 

Возможно, что нам придется перерисовать индикатор, но мы не знаем, сколько баров нам придется перерисовать. Если мы создаем фрактальный индикатор, нам придется пересчитать последние три бара, потому что третий бар может стать фракталом, если следующие 2 бара слева удовлетворяют правилам. Я создал индикатор, который будет отмечать уровень поддержки или сопротивления, когда он пробит. Однако это может произойти через 10 баров или через 1000 баров. Поэтому мы не знаем, сколько баров нам нужно пересчитать. И если мы будем пересчитывать все бары на каждом тике, нам обычно придется ограничить наш индикатор последними 500 или 1000 барами.

Можно также обновить график, чтобы он пересчитал все бары нашего индикатора. Но как это сделать программно? WindowsRedraw() и ChartRedraw() не вызывают обновления индикатора. Если мы перейдем на другой таймфрейм и вернемся обратно, индикатор будет пересчитан, как описано в первом сообщении. Мы можем поместить на наш график эксперта с обработчиком CHARTEVENT_CLICK, а затем вызвать метод ChartSetSymbolPeriod(0, NULL, 0). Это установит график на фактический период символа и фактически позволит индикатору автоматически пересчитываться каждый раз, когда мы щелкаем по графику. Использование события щелчка - это только пример, и вы можете использовать его так, как хотите.

 

В конце кода индикатора поставьте "ChartNavigate(0,CHART_CURRENT_POS,0);"

{

...

ChartNavigate(0,CHART_CURRENT_POS,0);

return(rates_total);

}