Добрый день!
Наконец-то написал себе робота (альфа-версию), основанного на регрессионном анализе.
В основном работает, но ВНЕЗАПНО при добавлении в индикатор через стратегию очередного среднего значения свечи ругается на эксепшн деления на 0.
_strategy.LR_R3.Process((DecimalIndicatorValue)(candle.OpenPrice / 2 + candle.ClosePrice / 2));
(здесь LR_3 - R квадрат на 3 периода - характеризует "мгновенную" волатильность)
Что это может быть? Добавить обработку делений на 0 в самом индикаторе???
Kommentare (5)
Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen
посмотрите на stacktrace. по вашим словам у вас получается closeprice и openprice у свечки = 0.
Спасибо! О "нулевой" цене я и не подумал.
Вот сообщение об ошибке - я его не понимаю... Я посмотрел - цены открытия и закрытия свечки были в порядке. System.DivideByZeroException не обработано пользовательским кодом
на какой строчке exception возникает?
Update: посмотрел код, у вас видимо Length = 0. посмотрите сами дебагером по индикатору
Так, разобрался. Ошибка возникает в индикаторе - если подряд 3 одинаковых входных значения (горизонтальная на графике), то по алгоритму R Squared получается деление на ноль. В Excel, что характерно, то же самое.
Length = 3, у меня среднее от y равно любому y - сигма равна нулю, поэтому все проблемы. Идеологический вопрос - имеет ли смысл переделывать индикатор, делать проверку в индикаторе и в случае деления на ноль ставить значение "1" (что по смыслу верно, но не верно по формулам), или выдумывать проверку при заполнении индикатора?