Обнаружил, что способ расчета DiPlus, DiMinus и, как следствие, ADX, не совпадает с описываемым
тут а также со значениями из как минимум 2 программ теханализа (WLD, AlfaDirect).
После моего фикса считает правильно.
Единственным исправлением было использование параметров по умолчанию у AverageTrueRange при расчете DiPart. (+удаление неиспользуемого DmTrueRange)
Было:
Code
protected DiPart()
{
_averageTrueRange = new AverageTrueRange(new ExponentialMovingAverage(), new DmTrueRange());
_movingAverage = new WilderMovingAverage();
}
Стало:
Code
protected DiPart()
{
_averageTrueRange = new AverageTrueRange();
_movingAverage = new WilderMovingAverage();
}
в связи с чем у меня вопрос:
Это вообще баг или расчет +-DI/ADX намеренно выполняется с использованием нестандартных параметров?
Если это не баг, то каким образом коммитить фикс? Как отдельный индикатор?