Всем привет!
Изучая ТС Коперник и кластерные ТС я столкнулся с тем, что индикатор TMA периодически сыпет алерты, двже если они в параметрах выключены (false).
В темах по ТС я так же видел жалобы на такую проблему.
Посмотрел код индикатора, обнаружил там следующее:
Индикатор вызывает сам себя с текущими параметрами HalfLength,Price,ATRMultiplier,ATRPeriod.
Но у этого индикатора параметрами также являются настройки интерполяции и алертов. Так вот, при таком вызове, они берутся по-умолчанию, т.е. те, что прописаны в коде. А в коде по-умолчанию прописано:
Таким образом, даже если мы настроим в свойствах индикатора alertsOn=false, он все равно внутри будет делать вызовы с значением по-умолчанию (а оно true)
Решения два:
1. изменить в коде значения по-умолчанию на false.
2. Более грамотный вариант, передавать текущие настройки алертов при внутренних вызовах:
Прилагаю исправленный индикатор
Я протестировал, алерты прекратились. Если кому интересно - прошу скачать, потестировать и прокомментировать
Изучая ТС Коперник и кластерные ТС я столкнулся с тем, что индикатор TMA периодически сыпет алерты, двже если они в параметрах выключены (false).
В темах по ТС я так же видел жалобы на такую проблему.
Посмотрел код индикатора, обнаружил там следующее:
PHP:
buffer1[i] = iCustom(NULL,timeFrame,indicatorFileName,"calculateTma",HalfLength,Price,ATRMultiplier,ATRPeriod,0,y);
Но у этого индикатора параметрами также являются настройки интерполяции и алертов. Так вот, при таком вызове, они берутся по-умолчанию, т.е. те, что прописаны в коде. А в коде по-умолчанию прописано:
PHP:
extern bool alertsOn = true;
Таким образом, даже если мы настроим в свойствах индикатора alertsOn=false, он все равно внутри будет делать вызовы с значением по-умолчанию (а оно true)
Решения два:
1. изменить в коде значения по-умолчанию на false.
2. Более грамотный вариант, передавать текущие настройки алертов при внутренних вызовах:
PHP:
buffer1[i] = iCustom(NULL,timeFrame,indicatorFileName,"calculateTma",HalfLength,Price,ATRMultiplier,ATRPeriod,Interpolate,alertsOn,alertsOnCurrent,alertsOnHighLow,alertsMessage,alertsSound,alertsEmail, 0,y);
Прилагаю исправленный индикатор
Я протестировал, алерты прекратились. Если кому интересно - прошу скачать, потестировать и прокомментировать
Вложения
Последнее редактирование модератором: