Alıntı Originally Posted by Caglar Yazıyı Oku
Sn Anonim, daha önce user.dll e yazmıştım ama deneme şansım olmamıştı. Denedikten sonra buraya yazarsanız memnun olurum. Eğer bir hata varsa düzeltmeye çalışırım.

Kod:
/*
 * Average price of the current bar
   xClose = (Open+High+Low+Close)/4 

 * Midpoint of the previous bar
   xOpen = [xOpen(Previous Bar) + Close(Previous Bar)]/2

 * Highest value in the set
   xHigh = Max(High, xOpen, xClose)

 * Lowest value in the set
   xLow = Min(Low, xOpen, xClose)
*/
public List<cxBar> ToHeikinAshi(List<cxBar> bars)
{
    var ha = bars.Select(b => b.Clone()).ToList();

    try
    {
        for (int i = 1; i < bars.Count; i++)
        {
            ha[i].Close = (bars[i].Open + bars[i].High + bars[i].Low + bars[i].Close) / 4;
            ha[i].Open = (ha[i - 1].Open + ha[i - 1].Close) / 2;
            ha[i].High = Max(bars[i].High, ha[i].Open, ha[i].Close);
            ha[i].Low = Min(bars[i].Low, ha[i].Open, ha[i].Close);
        }
    }
    catch (Exception ex)
    {
        //Log(string.Format("ToHeikinAshi failed. Ex: {0}", ex));
    }

    return ha;
}
Eğer Şablon;
xOpen = [xOpen(Previous Bar) + Close(Previous Bar)]/2
ise
ha[i].Open = (ha[i - 1].Open + ha[i - 1].Close) / 2;
değil
ha[i].Open = (ha[i - 1].Open + bars[i - 1].Close) / 2;
olmalı sanırım.

İdeal ise dahada farklı;
ha[i].Open = (bars[i - 1].Open + bars[i - 1].Close) / 2;
şeklinde hesaplıyor sanırım

test etmedim kodlara göre yazıyorum sadece.
sanırım bilinen formül ile ideal arasında da yorum farkı var veya ideal HeikinAshi yi hatalı hesaplıyor