Проблема с индикатором.

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Aleksey Lebedev
7464
Aleksey Lebedev  
Прошу потестировать индикатор, чисто технически - работает/не работает.
На одном из компьютеров индикатор не отображается.
Файлы:
ASAR.mq5 18 kb
Vladimir Karputov
Модератор
173838
Vladimir Karputov  
Aleksey Lebedev:
Прошу потестировать индикатор, чисто технически - работает/не работает.
На одном из компьютеров индикатор не отображается.

Массивы это не игрушка. В массивах (если их не инициализировать) содержится мусор. Как мусор можно присваивать?

   if(prev_calculated<1)
     {
      ArrayInitialize(BufferSARUP,EMPTY_VALUE);
      ArrayInitialize(BufferSARDN,EMPTY_VALUE);

      if(InpPriceMode==PRICE_MODE_HL)
        {
         HiPrice[0]=HighValue[0]=high[0];
         LoPrice[0]=LowValue[0]=low[0];
         HiPrice[1]=high[1];
         LoPrice[1]=low[1];


Или, по крайней мере, пишите более корректно:

   if(prev_calculated<1)
     {
      ArrayInitialize(BufferSARUP,EMPTY_VALUE);
      ArrayInitialize(BufferSARDN,EMPTY_VALUE);

      if(InpPriceMode==PRICE_MODE_HL)
        {
         HiPrice[0]=high[0];
         HighValue[0]=high[0];
         LoPrice[0]=low[0];
         LowValue[0]=low[0];
         HiPrice[1]=high[1];
         LoPrice[1]=low[1];


То есть не используйте в одно строке НЕСКОЛЬКО знаков присвоения "=".

Aleksey Lebedev
7464
Aleksey Lebedev  
Vladimir Karputov:

Массивы это не игрушка. В массивах (если их не инициализировать) содержится мусор. Как мусор можно присваивать?

Совершенно верно, но все буфера полностью заполняются при расчёте, ArrayInitialize в данном случае излишне.


Или, по крайней мере, пишите более корректно:

То есть не используйте в одно строке НЕСКОЛЬКО знаков присвоения "=".

Присвоение одного значения нескольким переменным в одной строке корректно.

Справка:

В выражении оператор присваивания может присутствовать много раз. В этом случае обработка выражения ведется справа налево.


Таки индикатор отображается или нет?)
Vladimir Karputov
Модератор
173838
Vladimir Karputov  
Aleksey Lebedev:

Совершенно верно, но все буфера полностью заполняются при расчёте, ArrayInitialize в данном случае излишне.


Присвоение одного значения нескольким переменным в одной строке корректно.

Справка:


Таки индикатор отображается или нет?)

Вы присваиваете мусор:

HiPrice[0]=HighValue[0]=high[0];

Перепишите сначала с одним "=".


Только после этого я буду смотреть дальше.

Artyom Trishkin
Модератор
119964
Artyom Trishkin  
Vladimir Karputov:

Или, по крайней мере, пишите более корректно:

То есть не используйте в одно строке НЕСКОЛЬКО знаков присвоения "=".

Почему? Что мешает?

Artyom Trishkin
Модератор
119964
Artyom Trishkin  
Aleksey Lebedev:

Совершенно верно, но все буфера полностью заполняются при расчёте, ArrayInitialize в данном случае излишне.


Присвоение одного значения нескольким переменным в одной строке корректно.

Справка:


Таки индикатор отображается или нет?)

Каковы вообще проблемы с ним?

Индикатор, если он стрелочный, требует на каждом тике сначала присваивать его буферам пустые значения, а затем уже всё рассчитывать и присваивать нужные значения.

При первом запуске и при обновлении исторических данных, инициализируете все его массивы, а затем - как выше написал.

Vladimir Karputov
Модератор
173838
Vladimir Karputov  

BufferTrend бесконтрольный.

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

Aleksey Lebedev
7464
Aleksey Lebedev  
Vladimir Karputov:

BufferTrend бесконтрольный.

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

Спасибо, да BufferTrend остался незамеченным.
поправил
Файлы:
ASAR.mq5 18 kb
Aleksey Lebedev
7464
Aleksey Lebedev  
Artyom Trishkin:

Каковы вообще проблемы с ним?

Индикатор, если он стрелочный, требует на каждом тике сначала присваивать его буферам пустые значения, а затем уже всё рассчитывать и присваивать нужные значения.

При первом запуске и при обновлении исторических данных, инициализируете все его массивы, а затем - как выше написал.

Владимир нашёл ошибку.

Да, всё именно так и было сделанно, при переписывании строка потерялась.

Vladimir Karputov
Модератор
173838
Vladimir Karputov  
Aleksey Lebedev:

Владимир нашёл ошибку.

Да, всё именно так и было сделанно, при переписывании строка потерялась.

Индикатор стал работать? Проблема ушла?

Aleksey Lebedev
7464
Aleksey Lebedev  
Vladimir Karputov:

Индикатор стал работать? Проблема ушла?

На моём компе исключительно положительный мусор :) индикатор всегда работал.
Да, проблема решилась, всем спасибо
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий