benbunu nasýl kullanabilirim.
yeni versiyonu indirdim ancak zlag yok malesef.
Printable View
Lib.cs veya user.dll ile yapabilirsiniz. Ben user.dll kullanýyorum.
Log ile belirttiðim yeri //Log þeklinde yazarsanýz derlenir. Ben hatalarý tutmak amacýyla bir dosyaya yazýyorum. Gönderdiðim metotlar (ZLEMA, EMA, List) sistem referansý almadýðýndan Sistem.Mesaj gibi bir iDeal metodu kullanamýyoruz.Kod:/// <summary> Zero Lag Exponential Moving Average </summary>
public List<float> ZLEMA(List<float> data, int period)
{
var x = new List<float>();
try
{
if (data == null || data.Count == 0) throw new ArgumentNullException("data is null or empty");
x = List(0f, data.Count);
if (period == 0) throw new ArgumentException("period is zero");
var ema1 = EMA(data, period);
var ema2 = EMA(ema1, period);
for (int i = 0; i < data.Count; i++)
{
x[i] = 2 * ema1[i] - ema2[i];
}
x = EMA(x, period);
}
catch (System.Threading.ThreadAbortException)
{
// Ignore...
}
catch (Exception ex)
{
Log("### {0}: {1}", MethodBase.GetCurrentMethod().Name, ex);
}
return x;
}
/// <summary>Exponential Moving Average</summary>
public List<float> EMA(List<float> data, int period)
{
if (period == 1) return data;
var x = new List<float> { 0 };
try
{
if (data == null || data.Count == 0) throw new ArgumentNullException("data is null or empty");
x = List(0f, data.Count);
if (period <= 0) throw new ArgumentException("period cannot be equal or less than 0");
x[0] = data[0];
var k = 2f / (period + 1f);
for (int i = 1; i < data.Count; i++)
{
x[i] = data[i] * k + x[i - 1] * (1 - k); // todaysPrice * k + EMAYesterday * (1 – k);
}
}
catch (System.Threading.ThreadAbortException)
{
// Ignore...
}
catch (Exception ex)
{
Log("### {0}: {1}", MethodBase.GetCurrentMethod().Name, ex);
}
return x;
}
public List<T> List<T>(T value, int count)
{
return Enumerable.Repeat(value, count).ToList();
}
arkadaþlar merhaba
ideal yetkilerinden uzun zamandýr grafik üzzerine çizmiþ oldugumuz tren çizgilerine , fiyatýn bu treend cizgilerini aþagý ve yukarý kýrmasý durumunda sesli ve pop-up lu alarm kurulabilmesini talep etmiþttimm ,sezai beyle bu konuyu görüþtüðümde bu tür bir alarm eklenebilmesiningrafik arayüzü bakýmýndan mumkun olmadýgýný söyledi
arkadaþlþar daha çnce görmiþtüm eski forumda bir arkadaþ formül paylaþmýstý otomatik destek direnç çizdiriyordu
otomatik olarak grafik üzerine otomatik trend çizdirebilen bir formulasyon varmýdýr
var ise paylaþýrsanýz seviniriz
matriks te vardý otomatik trend çizimi
Ekte ki dizede ki her iki median2ýn degeri ayný.Aralarýnda ki fark sizinde göreceði gibi ilki 3 farklý dize olarak formüle edilmiþ, ikincisi ise tek dize olarak.Yani excelde ki gibi idealin 3 dizeyi tek dize gibi görmesini saðlamak lazým.Þimdiden teþekkürler.
http://i63.tinypic.com/157ku95.png
Merhaba vVvendetta.
Lib.cs veya User.dll'de kullanabileceðiniz bir metod yazdým.
Hýzlý bir þekilde ve özenmeden yazdým. Kullanmadan önce mutlaka test etmenizi öneriyorum.Kod:public float Median(List<float> data, params List<float>[] others)
{
if (data == null || others.Any(o => o == null)) return 0f;
var allValues = others.SelectMany(o => o).Concat(data).OrderBy(v => v);
var count = allValues.Count();
if (count == 0) return 0f;
if (count == 1) return allValues.First();
var mid = count / 2;
if (count % 2 == 0)
{
var median1 = allValues.ElementAt(mid - 1);
var median2 = allValues.ElementAt(mid);
return (median1 + median2) / 2;
}
return allValues.ElementAt(mid);
}
Sayýn Çaðlar,
Kullanýrken Sistem.Median(H,L,C,periyod) þeklinde sonuç verecek. Doðru mudur ? Yani benim baþýndan beri istediðim 3 farklý dizeyi (H,L,C) istenilen periyodda Median ile kullanmak.Yukarýda ki excel'de benim anlataya çalýþtýðým excelin çalýþma mantýðý idi.Yani 3 farklý dizeyi kullanarak median bulmak ile ayný 3 dizenin arka arkaya sýralanýp medianýn alýnmasý ayný sonuç veriyor.Excelin mantýðý böyle çalýþýyor'u göstermeye çalýþtým yukarýda umarým bir karýþýklýða sebep vermemiþimdir.
Malesef o þekilde kullanamazsýnýz. Nedenleri:
1- Öncelikle bu bir Sistem metodu deðil. iDeal'de olmayan bir metod yazdýk. Ben user.dll kullanýyorum, dolayýsýyla benim için User.Median(H, C, L) þeklinde kullanýmý.
2- Metod için period tanýmlamadým. Listenin bütün elemanlarýný birleþtirip median hesaplar. Belli bir period için hesaplasýn istiyorsanýz verileri bir listeye ekleyip bu metodu çaðýrabilirsiniz.