"Heikin Ashi Prices" - расчёт
Code:
if (i < 2)
                {
                    haOpen = O[i];
                    haClose = C[i];
                    haLow = L[i];
                    haHigh = H[i];
                }
                else
                {
                    haClose = (C[i] + O[i] + L[i] + H[i]) / 4;
                    haOpen = (haOn[i - 1] + haCn[i - 1]) / 2;
                    haLow = Math.Min(L[i], Math.Min(haOpen, haClose));
                    haHigh = Math.Max(H[i], Math.Max(haOpen, haClose));
                }


"Heikin Ashi":
Code:
if (i < 2)
                {
                    haOn[i] = O[i]; haCn[i] = C[i]; haLn[i] = L[i]; haHn[i] = H[i];
                }
                else
                {
                    haCn[i] = (C[i] + O[i] + L[i] + H[i]) / 4;
                    haOn[i] = (haOn[i - 1] + haCn[i - 1]) / 2;
                    haLn[i] = Math.Min(L[i], Math.Min(haOn[i], haCn[i]));
                    haHn[i] = Math.Max(H[i], Math.Max(haOn[i], haCn[i]));
                }


идентично.
По Close расхождений нет скорее всего из-за того, что рассчитывается по ценам источника, которые без лишних знаков после точки, а все остальные значения HA - по другим расчётным значениям HA, тут погрешность видимо и накапливается.
Можно для пущей точности везде использовать "Heikin Ashi Smoothed" - расчёт стандартный, а при желании можно и поиграть со сглаживанием.


Отредактировано vito333 (Sun Jun 03 2012 03:15 PM)