Originally Posted by
EMLAK
benbunu nasıl kullanabilirim.
yeni versiyonu indirdim ancak zlag yok malesef.
Lib.cs veya user.dll ile yapabilirsiniz. Ben user.dll kullanıyorum.
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();
}
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.
Yer İmleri