mirror of
https://github.com/mihakralj/QuanTAlib.git
synced 2026-07-30 10:37:44 +00:00
69 lines
2.7 KiB
Plaintext
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}");
|
|
}
|