diff --git a/docs/QuanTAlib_Indicators.dib b/docs/QuanTAlib_Indicators.dib index 832ee979..5a20ba82 100644 --- a/docs/QuanTAlib_Indicators.dib +++ b/docs/QuanTAlib_Indicators.dib @@ -3,7 +3,52 @@ #r "nuget:QuanTAlib;" using QuanTAlib; -YAHOO_Feed tqqq = new(30,"TQQQ"); +#!csharp + +public class GBM1_Feed : TBars +{ + static double seed; + readonly double drift, volatility; + public GBM1_Feed(int Bars = 252, double Volatility = 1.0, double Drift = 0.05, double Seed = 100.0) { + seed = Seed; + volatility = Volatility*0.01; + drift = Drift*0.01; + for (int i = 0; i OCMin)? 2*OCMin-Low : Low; + + double Volume = GBM_value(seed*10, volatility*2, Drift:0); + + base.Add((timestamp, Open, High, Low, Close, Volume), update); + seed = Close; + } + + private static double GBM_value (double Seed, double Volatility, double Drift) { + Random rnd = new((int)(DateTime.UtcNow.Ticks)); + double U1 = 1.0-rnd.NextDouble(); + double U2 = 1.0-rnd.NextDouble(); + double Z = Math.Sqrt(-2.0 * Math.Log(U1)) * Math.Sin(2.0 * Math.PI * U2); + return Seed * Math.Exp( Drift - (Volatility*Volatility*0.5) + Volatility * Z); + } +} + +#!csharp + +GBM1_Feed tqqq = new(30); TSeries data = tqqq.Close; SMA_Series sma = new(data, 5, false); MED_Series med = new(data, 5); diff --git a/docs/macd_example.ipynb b/docs/macd_example.ipynb index 85891ea2..04a4d6ff 100644 --- a/docs/macd_example.ipynb +++ b/docs/macd_example.ipynb @@ -1,190 +1,190 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "dotnet_interactive": { - "language": "csharp" - }, - "vscode": { - "languageId": "dotnet-interactive.csharp" - } - }, - "outputs": [ - { - "data": { - "text/html": [ - "
Installed Packages
  • Plotly.NET, 2.0.0
  • Plotly.NET.Interactive, 2.0.0
  • QuanTAlib, 0.1.13
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/markdown": [ - "Loading extensions from `Plotly.NET.Interactive.dll`" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "// This is .NET Interactive Notebook. It can run in VS.Code with .NET interactive extension installed\n", - "\n", - "#r \"nuget: Plotly.NET, 2.0.0\"\n", - "#r \"nuget: Plotly.NET.Interactive, 2.0.0\"\n", - "#r \"nuget: QuanTAlib\"\n", - "\n", - "using Plotly.NET;\n", - "using Plotly.NET.LayoutObjects;\n", - "using QuanTAlib;" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "dotnet_interactive": { - "language": "csharp" - }, - "vscode": { - "languageId": "dotnet-interactive.csharp" - } - }, - "outputs": [ - { - "data": { - "text/html": [ - "
380
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "// defining the MACD model through clasess that connect to each other with Events\n", - "\n", - "RND_Feed tsla = new(380);\n", - "TSeries close = tsla.Close; // close will get data from YAHOO tsla feed\n", - "EMA_Series slow = new(close,26); // slow gets data from slow through pub-sub eventing\n", - "EMA_Series fast = new(close,12); // fast gets data from slow (via eventing)\n", - "SUB_Series macd = new(fast,slow); // macd is a SUBtraction of fast-slow\n", - "EMA_Series signal = new(macd,9); // signal is EMA of macd\n", - "SUB_Series histogram = new(macd, signal); // histogran is SUBtraction macd-signal\n", - "\n", - "slow.Count" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "dotnet_interactive": { - "language": "csharp" - }, - "vscode": { - "languageId": "dotnet-interactive.csharp" - } - }, - "outputs": [ - { - "data": { - "text/html": [ - "
indexvalue
0
99.6
1
100.93
2
100.36
3
96.83
4
95.39
5
96.34
6
97.6
7
98.7
8
100.11
9
101.38
10
101.09
11
100.31
12
97.19
13
96.13
14
93.34
15
91.46
16
91.65
17
91.63
18
90.39
19
91.69
(360 more)
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "tsla.Open.v" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "dotnet_interactive": { - "language": "csharp" - }, - "vscode": { - "languageId": "dotnet-interactive.csharp" - } - }, - "outputs": [ - { - "data": { - "text/html": [ - "\r\n", - "
\r\n", - "
\r\n", - "\r\n", - "\r\n", - " \r\n", - "
(tsla.Open.v, tsla.High.v, tsla.Low.v, tsla.Close.v, tsla.Open.t, \"candles\");\n", - "var ch1 = Chart2D.Chart.Line(macd.t,macd.v,false,\"macd\").WithLineStyle(Width: 2, Color: Color.fromString(\"red\"));\n", - "var ch2 = Chart2D.Chart.Line(signal.t,signal.v,false,\"signal\").WithLineStyle(Width: 1.5, Color: Color.fromString(\"green\"));\n", - "//GenericChart.GenericChart hist = Chart2D.Chart.Column(histogram.t,histogram.v).WithLineStyle(Width: 1.5, Color: Color.fromString(\"green\"));\n", - "\n", - "var chart = Chart.Combine(new []{candles,ch1,ch2}).WithSize(1200,400).WithMargin(Margin.init(1,1,60,1,1,false)).WithTitle(\"MACD using EMA\");\n", - "\n", - "chart" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": ".NET (C#)", - "language": "C#", - "name": ".net-csharp" - }, - "language_info": { - "file_extension": ".cs", - "mimetype": "text/x-csharp", - "name": "C#", - "pygments_lexer": "csharp", - "version": "9.0" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + }, + "vscode": { + "languageId": "dotnet-interactive.csharp" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "
Installed Packages
  • Plotly.NET, 2.0.0
  • Plotly.NET.Interactive, 2.0.0
  • QuanTAlib, 0.1.13
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/markdown": [ + "Loading extensions from `Plotly.NET.Interactive.dll`" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "// This is .NET Interactive Notebook. It can run in VS.Code with .NET interactive extension installed\n", + "\n", + "#r \"nuget: Plotly.NET, 2.0.0\"\n", + "#r \"nuget: Plotly.NET.Interactive, 2.0.0\"\n", + "#r \"nuget: QuanTAlib\"\n", + "\n", + "using Plotly.NET;\n", + "using Plotly.NET.LayoutObjects;\n", + "using QuanTAlib;" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + }, + "vscode": { + "languageId": "dotnet-interactive.csharp" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "
380
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "// defining the MACD model through clasess that connect to each other with Events\n", + "\n", + "RND_Feed tsla = new(380);\n", + "TSeries close = tsla.Close; // close will get data from YAHOO tsla feed\n", + "EMA_Series slow = new(close,26); // slow gets data from slow through pub-sub eventing\n", + "EMA_Series fast = new(close,12); // fast gets data from slow (via eventing)\n", + "SUB_Series macd = new(fast,slow); // macd is a SUBtraction of fast-slow\n", + "EMA_Series signal = new(macd,9); // signal is EMA of macd\n", + "SUB_Series histogram = new(macd, signal); // histogran is SUBtraction macd-signal\n", + "\n", + "slow.Count" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + }, + "vscode": { + "languageId": "dotnet-interactive.csharp" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "
indexvalue
0
99.6
1
100.93
2
100.36
3
96.83
4
95.39
5
96.34
6
97.6
7
98.7
8
100.11
9
101.38
10
101.09
11
100.31
12
97.19
13
96.13
14
93.34
15
91.46
16
91.65
17
91.63
18
90.39
19
91.69
(360 more)
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "tsla.Open.v" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + }, + "vscode": { + "languageId": "dotnet-interactive.csharp" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "\r\n", + "
\r\n", + "
\r\n", + "\r\n", + "\r\n", + " \r\n", + "
(tsla.Open.v, tsla.High.v, tsla.Low.v, tsla.Close.v, tsla.Open.t, \"candles\");\n", + "var ch1 = Chart2D.Chart.Line(macd.t,macd.v,false,\"macd\").WithLineStyle(Width: 2, Color: Color.fromString(\"red\"));\n", + "var ch2 = Chart2D.Chart.Line(signal.t,signal.v,false,\"signal\").WithLineStyle(Width: 1.5, Color: Color.fromString(\"green\"));\n", + "//GenericChart.GenericChart hist = Chart2D.Chart.Column(histogram.t,histogram.v).WithLineStyle(Width: 1.5, Color: Color.fromString(\"green\"));\n", + "\n", + "var chart = Chart.Combine(new []{candles,ch1,ch2}).WithSize(1200,400).WithMargin(Margin.init(1,1,60,1,1,false)).WithTitle(\"MACD using EMA\");\n", + "\n", + "chart" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".NET (C#)", + "language": "C#", + "name": ".net-csharp" + }, + "language_info": { + "file_extension": ".cs", + "mimetype": "text/x-csharp", + "name": "C#", + "pygments_lexer": "csharp", + "version": "9.0" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +}