Files
2024-10-21 16:06:47 -07:00

69 lines
2.7 KiB
Plaintext

#!meta
{"kernelInfo":{"defaultKernelName":"csharp","items":[{"aliases":[],"name":"csharp"}]}}
#!csharp
#r "..\lib\obj\Debug\QuanTAlib.dll"
#r "nuget:Skender.Stock.Indicators"
using Skender.Stock.Indicators;
using QuanTAlib;
QuanTAlib.Formatters.Initialize();
#!csharp
Atr ma = new(10);
GbmFeed gbm = new();
gbm.Add(30);
IEnumerable<Quote> quotes = gbm.Select(item => new Quote { Date = item.Time, Open = (decimal)item.Open, High = (decimal)item.High, Low = (decimal)item.Low, Close = (decimal)item.Close, Volume = (decimal)item.Volume });
var SkResults = quotes.GetAtr(10).Select(i => i.Atr.Null2NaN()!);
for (int i=0; i< gbm.Length; i++) {
ma.Calc(gbm[i]);
Console.WriteLine($"{i,3} {ma.Value,10:F3} \t {SkResults.ElementAt(i):F3}");
}
#!csharp
Atr ma = new(10);
GbmFeed gbm = new();
gbm.Add(30);
IEnumerable<Quote> quotes = gbm.Select(item => new Quote { Date = item.Time, Open = (decimal)item.Open, High = (decimal)item.High, Low = (decimal)item.Low, Close = (decimal)item.Close, Volume = (decimal)item.Volume });
var SkResults = quotes.GetTr().Select(i => i.Tr.Null2NaN()!);
for (int i=0; i< gbm.Length; i++) {
ma.Calc(new TBar(gbm[i]));
Console.WriteLine($"{gbm.High[i].Value,6:F4} \t{gbm.Low[i].Value,6:F4} \t{gbm.Close[i].Value,6:F4} \t{ma.Tr,10:F4} \t{SkResults.ElementAt(i),10:F4}");
}
#!csharp
//ATR test
GbmFeed gbm = new();
TBarSeries feed = new(gbm);
Atr ma1 = new(gbm, 10);
TSeries res1 = new(ma1);
gbm.Add(30);
IEnumerable<Quote> quotes = gbm.Select(item => new Quote { Date = item.Time, Open = (decimal)item.Open, High = (decimal)item.High, Low = (decimal)item.Low, Close = (decimal)item.Close, Volume = (decimal)item.Volume });
var SkResults = quotes.GetAtr(10).Select(i => i.Atr.Null2NaN()!);
for (int i=0; i< gbm.Length; i++) {
double delta = Math.Round(res1[i].Value, 10) - Math.Round(SkResults.ElementAt(i), 10);
//Console.WriteLine($"{i,3} {gbm.High[i].Value,6:F2} {gbm.Low[i].Value,6:F2} {gbm.Close[i].Value,6:F2} {res1[i].Value,10:F4} {SkResults.ElementAt(i),10:F4}\t{delta}");
Console.WriteLine($"{i,3} h:{gbm.High[i].Value,6:F2} l:{gbm.Low[i].Value,6:F2} c:{gbm.Close[i].Value,6:F2} {res1[i].Atr,10:F4} {SkResults.ElementAt(i),10:F4}\t{delta}");
}
#!csharp
//EMA test
GbmFeed gbm = new();
Ema ema1 = new(gbm.Close, 10, useSma: true);
TSeries res1 = new(ema1);
gbm.Add(30);
IEnumerable<Quote> 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++) {
double delta = Math.Round(res1[i].Value, 10) - Math.Round(SkResults.ElementAt(i), 10);
Console.WriteLine($"{i,3} {gbm.Close[i].Value,6:F2} {res1[i].Value,10:F4} {SkResults.ElementAt(i),10:F4}\t{delta}");
}