#!meta {"kernelInfo":{"defaultKernelName":"csharp","items":[{"aliases":[],"name":"csharp"}]}} #!csharp #r "..\src\obj\Debug\QuanTAlib.dll" #r "nuget:Skender.Stock.Indicators" using Skender.Stock.Indicators; using QuanTAlib; QuanTAlib.Formatters.Initialize(); #!csharp GbmFeed gbm = new(); EmaCalc ema1 = new(gbm.Close, 10, useSma: false); EmaCalc ema2 = new(gbm.Close, 10, useSma: true); TValSeries res1 = new(ema1); TValSeries res2 = new(ema2); gbm.Add(50); List mse1 = new(); List mse2 = new(); for (int i=0; i< gbm.Length; i++) { double v= gbm.Close[i].Value; double e1 = res1[i].Value; mse1.Add((e1-v)*(e1-v)); double e2 = res2[i].Value; mse2.Add((e2-v)*(e2-v)); //Console.WriteLine($"{i,3} {mse1.Average(),10:F4} {mse2.Average(),10:F4}"); } Console.WriteLine($"{mse2.Average()-mse1.Average(),10:F8}"); #!csharp display(res1); #!csharp GbmFeed gbm = new(); EmaCalc ema1 = new(gbm.Close, 10, useSma: false); EmaCalc ema2 = new(gbm.Close, 10, useSma: true); TValSeries res1 = new(ema1); TValSeries res2 = new(ema2); gbm.Add(30); IEnumerable quotes = gbm.Close.Select(item => new Quote { Date = item.Time, Close = (decimal)item.Value }); var SkResults = quotes.GetEma(10).Select(i => i.Ema.Null2NaN()!); for (int i=0; i< gbm.Length; i++) { Console.WriteLine($"{i,3} {gbm.Close[i].Value,6:F2} {res1[i].Value,10:F4} {res2[i].Value,10:F4} {SkResults.ElementAt(i),10:F4}"); } #!csharp TValSeries test = new(); EmaCalc ma1 = new(test, 7, true); TValSeries res1 = new(ma1); EmaCalc ma2 = new(test, 7, false); TValSeries res2 = new(ma2); test.Add(new[]{1.0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0}); for (int i=0; i