Files
QuanTAlib/docs/macd_example.ipynb
T

191 lines
73 KiB
Plaintext
Raw Normal View History

2022-09-03 12:31:06 -07:00
{
"cells": [
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"dotnet_interactive": {
"language": "csharp"
},
"vscode": {
"languageId": "dotnet-interactive.csharp"
}
},
"outputs": [
{
"data": {
"text/html": [
"<div><div></div><div></div><div><strong>Installed Packages</strong><ul><li><span>Plotly.NET, 2.0.0</span></li><li><span>Plotly.NET.Interactive, 2.0.0</span></li><li><span>QuanTAlib, 0.1.13</span></li></ul></div></div>"
]
},
"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": [
"<div class=\"dni-plaintext\">380</div>"
]
},
"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": [
"<table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><div class=\"dni-plaintext\">99.6</div></td></tr><tr><td>1</td><td><div class=\"dni-plaintext\">100.93</div></td></tr><tr><td>2</td><td><div class=\"dni-plaintext\">100.36</div></td></tr><tr><td>3</td><td><div class=\"dni-plaintext\">96.83</div></td></tr><tr><td>4</td><td><div class=\"dni-plaintext\">95.39</div></td></tr><tr><td>5</td><td><div class=\"dni-plaintext\">96.34</div></td></tr><tr><td>6</td><td><div class=\"dni-plaintext\">97.6</div></td></tr><tr><td>7</td><td><div class=\"dni-plaintext\">98.7</div></td></tr><tr><td>8</td><td><div class=\"dni-plaintext\">100.11</div></td></tr><tr><td>9</td><td><div class=\"dni-plaintext\">101.38</div></td></tr><tr><td>10</td><td><div class=\"dni-plaintext\">101.09</div></td></tr><tr><td>11</td><td><div class=\"dni-plaintext\">100.31</div></td></tr><tr><td>12</td><td><div class=\"dni-plaintext\">97.19</div></td></tr><tr><td>13</td><td><div class=\"dni-plaintext\">96.13</div></td></tr><tr><td>14</td><td><div class=\"dni-plaintext\">93.34</div></td></tr><tr><td>15</td><td><div class=\"dni-plaintext\">91.46</div></td></tr><tr><td>16</td><td><div class=\"dni-plaintext\">91.65</div></td></tr><tr><td>17</td><td><div class=\"dni-plaintext\">91.63</div></td></tr><tr><td>18</td><td><div class=\"dni-plaintext\">90.39</div></td></tr><tr><td>19</td><td><div class=\"dni-plaintext\">91.69</div></td></tr><tr><td colspan=\"2\"><i>(360 more)</i></td></tr></tbody></table>"
]
},
"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",
"<div>\r\n",
" <div id=\"6cd8b175-3a7c-4c71-9b8d-7aa4e0a44b7a\"><!-- Plotly chart will be drawn inside this DIV --></div>\r\n",
"<script type=\"text/javascript\">\r\n",
"\r\n",
" var renderPlotly_6cd8b1753a7c4c719b8d7aa4e0a44b7a = function() {\r\n",
" var fsharpPlotlyRequire = requirejs.config({context:'fsharp-plotly',paths:{plotly:'https://cdn.plot.ly/plotly-2.6.3.min'}}) || require;\r\n",
" fsharpPlotlyRequire(['plotly'], function(Plotly) {\r\n",
"\r\n",
" var data = [{\"type\":\"candlestick\",\"name\":\"candles\",\"x\":[\"2021-04-23T00:00:00-07:00\",\"2021-04-24T00:00:00-07:00\",\"2021-04-25T00:00:00-07:00\",\"2021-04-26T00:00:00-07:00\",\"2021-04-27T00:00:00-07:00\",\"2021-04-28T00:00:00-07:00\",\"2021-04-29T00:00:00-07:00\",\"2021-04-30T00:00:00-07:00\",\"2021-05-01T00:00:00-07:00\",\"2021-05-02T00:00:00-07:00\",\"2021-05-03T00:00:00-07:00\",\"2021-05-04T00:00:00-07:00\",\"2021-05-05T00:00:00-07:00\",\"2021-05-06T00:00:00-07:00\",\"2021-05-07T00:00:00-07:00\",\"2021-05-08T00:00:00-07:00\",\"2021-05-09T00:00:00-07:00\",\"2021-05-10T00:00:00-07:00\",\"2021-05-11T00:00:00-07:00\",\"2021-05-12T00:00:00-07:00\",\"2021-05-13T00:00:00-07:00\",\"2021-05-14T00:00:00-07:00\",\"2021-05-15T00:00:00-07:00\",\"2021-05-16T00:00:00-07:00\",\"2021-05-17T00:00:00-07:00\",\"2021-05-18T00:00:00-07:00\",\"2021-05-19T00:00:00-07:00\",\"2021-05-20T00:00:00-07:00\",\"2021-05-21T00:00:00-07:00\",\"2021-05-22T00:00:00-07:00\",\"2021-05-23T00:00:00-07:00\",\"2021-05-24T00:00:00-07:00\",\"2021-05-25T00:00:00-07:00\",\"2021-05-26T00:00:00-07:00\",\"2021-05-27T00:00:00-07:00\",\"2021-05-28T00:00:00-07:00\",\"2021-05-29T00:00:00-07:00\",\"2021-05-30T00:00:00-07:00\",\"2021-05-31T00:00:00-07:00\",\"2021-06-01T00:00:00-07:00\",\"2021-06-02T00:00:00-07:00\",\"2021-06-03T00:00:00-07:00\",\"2021-06-04T00:00:00-07:00\",\"2021-06-05T00:00:00-07:00\",\"2021-06-06T00:00:00-07:00\",\"2021-06-07T00:00:00-07:00\",\"2021-06-08T00:00:00-07:00\",\"2021-06-09T00:00:00-07:00\",\"2021-06-10T00:00:00-07:00\",\"2021-06-11T00:00:00-07:00\",\"2021-06-12T00:00:00-07:00\",\"2021-06-13T00:00:00-07:00\",\"2021-06-14T00:00:00-07:00\",\"2021-06-15T00:00:00-07:00\",\"2021-06-16T00:00:00-07:00\",\"2021-06-17T00:00:00-07:00\",\"2021-06-18T00:00:00-07:00\",\"2021-06-19T00:00:00-07:00\",\"2021-06-20T00:00:00-07:00\",\"2021-06-21T00:00:00-07:00\",\"2021-06-22T00:00:00-07:00\",\"2021-06-23T00:00:00-07:00\",\"2021-06-24T00:00:00-07:00\",\"2021-06-25T00:00:00-07:00\",\"2021-06-26T00:00:00-07:00\",\"2021-06-27T00:00:00-07:00\",\"2021-06-28T00:00:00-07:00\",\"2021-06-29T00:00:00-07:00\",\"2021-06-30T00:00:00-07:00\",\"2021-07-01T00:00:00-07:00\",\"2021-07-02T00:00:00-07:00\",\"2021-07-03T00:00:00-07:00\",\"2021-07-04T00:00:00-07:00\",\"2021-07-05T00:00:00-07:00\",\"2021-07-06T00:00:00-07:00\",\"2021-07-07T00:00:00-07:00\",\"2021-07-08T00:00:00-07:00\",\"2021-07-09T00:00:00-07:00\",\"2021-07-10T00:00:00-07:00\",\"2021-07-11T00:00:00-07:00\",\"2021-07-12T00:00:00-07:00\",\"2021-07-13T00:00:00-07:00\",\"2021-07-14T00:00:00-07:00\",\"2021-07-15T00:00:00-07:00\",\"2021-07-16T00:00:00-07:00\",\"2021-07-17T00:00:00-07:00\",\"2021-07-18T00:00:00-07:00\",\"2021-07-19T00:00:00-07:00\",\"2021-07-20T00:00:00-07:00\",\"2021-07-21T00:00:00-07:00\",\"2021-07-22T00:00:00-07:00\",\"2021-07-23T00:00:00-07:00\",\"2021-07-24T00:00:00-07:00\",\"2021-07-25T00:00:00-07:00\",\"2021-07-26T00:00:00-07:00\",\"2021-07-27T00:00:00-07:00\",\"2021-07-28T00:00:00-07:00\",\"2021-07-29T00:00:00-07:00\",\"2021-07-30T00:00:00-07:00\",\"2021-07-31T00:00:00-07:00\",\"2021-08-01T00:00:00-07:00\",\"2021-08-02T00:00:00-07:00\",\"2021-08-03T00:00:00-07:00\",\"2021-08-04T00:00:00-07:00\",\"2021-08-05T00:00:00-07:00\",\"2021-08-06T00:00:00-07:00\",\"2021-08-07T00:00:00-07:00\",\"2021-08-08T00:00:00-07:00\",\"2021-08-09T00:00:00-07:00\",\"2021-08-10T00:00:00-07:00\",\"2021-08-11T00:00:00-07:00\",\"2021-08-12T00:00:00-07:00\",\"2021-08-13T00:00:00-07:00\",\"2021-08-14T00:00:00-07:00\",\"2021-08-15T00:00:00-07:00\",\"2021-08-16T00:00:00-07:00\",\"2021-08-17T00:00:00-07:00\",\"2021-08-18T00:00:00-07:00\",\"2021-08-19T00:00:00-07:00\",\"2021-08-20T00:00:00-07:00\",\"2021-08-21T00:00:00-07:00\",\"2021-08-22T00:00:00-07:00\",\"2021-08-23T00:00:00-07:00\",\"2021-08-24T00:00:00-07:00\",\"2021-08-25T00:00:00-07:00\",\"2021-08-26T00:00:00-07:00\",\"2021-08-27T00:00:00-07:00\",\"2021-08-28T00:00:00-07:00\",\"2021-08-29T00:00:00-07:00\",\"2021-08-30T00:00:00-07:00\",\"2021-08-31T00:00:00-07:00\",\"2021-09-01T00:00:00-07:00\",\"2021-09-02T00:00:00-07:00\",\"2021-09-03T00:00:
" var layout = {\"width\":1200,\"height\":400,\"template\":{\"layout\":{\"title\":{\"x\":0.05},\"font\":{\"color\":\"rgba(42, 63, 95, 1.0)\"},\"paper_bgcolor\":\"rgba(255, 255, 255, 1.0)\",\"plot_bgcolor\":\"rgba(229, 236, 246, 1.0)\",\"autotypenumbers\":\"strict\",\"colorscale\":{\"diverging\":[[0.0,\"#8e0152\"],[0.1,\"#c51b7d\"],[0.2,\"#de77ae\"],[0.3,\"#f1b6da\"],[0.4,\"#fde0ef\"],[0.5,\"#f7f7f7\"],[0.6,\"#e6f5d0\"],[0.7,\"#b8e186\"],[0.8,\"#7fbc41\"],[0.9,\"#4d9221\"],[1.0,\"#276419\"]],\"sequential\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"sequentialminus\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]},\"hovermode\":\"closest\",\"hoverlabel\":{\"align\":\"left\"},\"coloraxis\":{\"colorbar\":{\"outlinewidth\":0.0,\"ticks\":\"\"}},\"geo\":{\"showland\":true,\"landcolor\":\"rgba(229, 236, 246, 1.0)\",\"showlakes\":true,\"lakecolor\":\"rgba(255, 255, 255, 1.0)\",\"subunitcolor\":\"rgba(255, 255, 255, 1.0)\",\"bgcolor\":\"rgba(255, 255, 255, 1.0)\"},\"mapbox\":{\"style\":\"light\"},\"polar\":{\"bgcolor\":\"rgba(229, 236, 246, 1.0)\",\"radialaxis\":{\"linecolor\":\"rgba(255, 255, 255, 1.0)\",\"gridcolor\":\"rgba(255, 255, 255, 1.0)\",\"ticks\":\"\"},\"angularaxis\":{\"linecolor\":\"rgba(255, 255, 255, 1.0)\",\"gridcolor\":\"rgba(255, 255, 255, 1.0)\",\"ticks\":\"\"}},\"scene\":{\"xaxis\":{\"ticks\":\"\",\"linecolor\":\"rgba(255, 255, 255, 1.0)\",\"gridcolor\":\"rgba(255, 255, 255, 1.0)\",\"gridwidth\":2.0,\"zerolinecolor\":\"rgba(255, 255, 255, 1.0)\",\"backgroundcolor\":\"rgba(229, 236, 246, 1.0)\",\"showbackground\":true},\"yaxis\":{\"ticks\":\"\",\"linecolor\":\"rgba(255, 255, 255, 1.0)\",\"gridcolor\":\"rgba(255, 255, 255, 1.0)\",\"gridwidth\":2.0,\"zerolinecolor\":\"rgba(255, 255, 255, 1.0)\",\"backgroundcolor\":\"rgba(229, 236, 246, 1.0)\",\"showbackground\":true},\"zaxis\":{\"ticks\":\"\",\"linecolor\":\"rgba(255, 255, 255, 1.0)\",\"gridcolor\":\"rgba(255, 255, 255, 1.0)\",\"gridwidth\":2.0,\"zerolinecolor\":\"rgba(255, 255, 255, 1.0)\",\"backgroundcolor\":\"rgba(229, 236, 246, 1.0)\",\"showbackground\":true}},\"ternary\":{\"aaxis\":{\"ticks\":\"\",\"linecolor\":\"rgba(255, 255, 255, 1.0)\",\"gridcolor\":\"rgba(255, 255, 255, 1.0)\"},\"baxis\":{\"ticks\":\"\",\"linecolor\":\"rgba(255, 255, 255, 1.0)\",\"gridcolor\":\"rgba(255, 255, 255, 1.0)\"},\"caxis\":{\"ticks\":\"\",\"linecolor\":\"rgba(255, 255, 255, 1.0)\",\"gridcolor\":\"rgba(255, 255, 255, 1.0)\"},\"bgcolor\":\"rgba(229, 236, 246, 1.0)\"},\"xaxis\":{\"title\":{\"standoff\":15},\"ticks\":\"\",\"automargin\":true,\"linecolor\":\"rgba(255, 255, 255, 1.0)\",\"gridcolor\":\"rgba(255, 255, 255, 1.0)\",\"zerolinecolor\":\"rgba(255, 255, 255, 1.0)\",\"zerolinewidth\":2.0},\"yaxis\":{\"title\":{\"standoff\":15},\"ticks\":\"\",\"automargin\":true,\"linecolor\":\"rgba(255, 255, 255, 1.0)\",\"gridcolor\":\"rgba(255, 255, 255, 1.0)\",\"zerolinecolor\":\"rgba(255, 255, 255, 1.0)\",\"zerolinewidth\":2.0},\"annotationdefaults\":{\"arrowcolor\":\"#2a3f5f\",\"arrowhead\":0,\"arrowwidth\":1},\"shapedefaults\":{\"line\":{\"color\":\"rgba(42, 63, 95, 1.0)\"}},\"colorway\":[\"rgba(99, 110, 250, 1.0)\",\"rgba(239, 85, 59, 1.0)\",\"rgba(0, 204, 150, 1.0)\",\"rgba(171, 99, 250, 1.0)\",\"rgba(255, 161, 90, 1.0)\",\"rgba(25, 211, 243, 1.0)\",\"rgba(255, 102, 146, 1.0)\",\"rgba(182, 232, 128, 1.0)\",\"rgba(255, 151, 255, 1.0)\",\"rgba(254, 203, 82, 1.0)\"]},\"data\":{\"bar\":[{\"marker\":{\"line\":{\"color\":\"rgba(229, 236, 246, 1.0)\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"error_x\":{\"color\":\"rgba(42, 63
" var config = {\"responsive\":true};\r\n",
" Plotly.newPlot('6cd8b175-3a7c-4c71-9b8d-7aa4e0a44b7a', data, layout, config);\r\n",
"});\r\n",
" };\r\n",
" if ((typeof(requirejs) !== typeof(Function)) || (typeof(requirejs.config) !== typeof(Function))) {\r\n",
" var script = document.createElement(\"script\");\r\n",
" script.setAttribute(\"src\", \"https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js\");\r\n",
" script.onload = function(){\r\n",
" renderPlotly_6cd8b1753a7c4c719b8d7aa4e0a44b7a();\r\n",
" };\r\n",
" document.getElementsByTagName(\"head\")[0].appendChild(script);\r\n",
" }\r\n",
" else {\r\n",
" renderPlotly_6cd8b1753a7c4c719b8d7aa4e0a44b7a();\r\n",
" }\r\n",
"</script>\r\n",
"\r\n",
" \r\n",
"</div \r\n"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"//this is just a visualization of MACD using the (preview of) Plotly.NET\n",
"\n",
"var candles = Chart2D.Chart.Candlestick<double, double, double, double, DateTime, string>(tsla.Open.v, tsla.High.v, tsla.Low.v, tsla.Close.v, tsla.Open.t, \"candles\");\n",
"var ch1 = Chart2D.Chart.Line<DateTime,double,bool>(macd.t,macd.v,false,\"macd\").WithLineStyle(Width: 2, Color: Color.fromString(\"red\"));\n",
"var ch2 = Chart2D.Chart.Line<DateTime,double,bool>(signal.t,signal.v,false,\"signal\").WithLineStyle(Width: 1.5, Color: Color.fromString(\"green\"));\n",
"//GenericChart.GenericChart hist = Chart2D.Chart.Column<DateTime,double,string,bool,bool>(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<int, int, int, int, int, bool>(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
}