
Originally Posted by
Caglar
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
Keçiyi yardan uçuran bir tutam ottur..
Yer İmleri