Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Нет времени на изучение MQL5? Закажи приложение у разработчика!
andreybs
609
andreybs 2011.06.30 20:22 

Версия 4.00, билд 402

Пробуем вычислить EMA в индикаторе по формуле:

result[shift+1] + (source[shift] - result[shift+1])*2.0/(1+period)

для всех shift от Bars-IndicatorCounted()-1 до 0

и занести результат в буфер ema:

double ema[];
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,ema);

Видим график, идем в начало графика - висим...


Все дело в том, что для

shift = Bars-IndicatorCounted()-1

result[shift+1] = EMPTY_VALUE (т.е. видимо 0x7FFFFFFF)

тогда result[shift+1] + что-то = огроменное число.

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


Что-то изменили в последних билдах метатрейдера, что он умирает при отрисовке графика по гигантским числам. Кто-нить знает, как с этим бороться? (Пришлось править все старые индикаторы - вставлять проверку на EMPTY_VALUE).

ЗЫ: SetIndexEmptyValue(0,0.0); не помогает

/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий