mirror of
https://github.com/mihakralj/QuanTAlib.git
synced 2026-08-16 09:38:05 +00:00
refactoring
This commit is contained in:
+40
@@ -0,0 +1,40 @@
|
||||
# SMA: Simple Moving Average
|
||||
SMA is one of the most basic trend-following indicators used in Technical Analysis. It is calculated as the *unweighted mean* of the previous $p$ (period) data-points.
|
||||
|
||||
|
||||
## Calculation
|
||||
|
||||
SMA is a rolling calculation looking backwards from the position ${n}$ and is denoted as ${SMA}_{p}{(data)}$ where $p$ represents the period and $data$ represents the list of data points:
|
||||
$$
|
||||
SMA_p{(data)} = \frac{1}{p}\sum_{i=n-p+1}^{n} data_i
|
||||
$$
|
||||
When calculating the value of next $SMA_{p,next}$ while knowing all previous SMA values, SMA calculation can be reduced to:
|
||||
$$
|
||||
SMA_{p,next} = SMA_{p,prev}+\frac{1}{p}\left( data_{n+1}-data_{n+1-p}\right)
|
||||
$$
|
||||
|
||||
## Implementation
|
||||
|
||||
``` csharp
|
||||
SMA_Series mean = new(source: data, period: p, useNaN: false);
|
||||
|
||||
QuanTA fluent = data.SMA(period: p);
|
||||
```
|
||||
|
||||
## Parameters
|
||||
|
||||
- `TSeries source` - List of value tuples (DateTime, double)
|
||||
- `int period` - Integer representing the period of SMA
|
||||
- `bool useNaN` - if true, initial values from 1 to period-1 will be replaced with NaN. If false, the initial calculation will return values for SMA(length) instead of SMA(period)
|
||||
|
||||
## Sample chart
|
||||
|
||||
picture of SMA
|
||||
|
||||
## Comparison & Validation
|
||||
|
||||
Validation tests
|
||||
Performance tests
|
||||
|
||||
## References
|
||||
- https://www.tradingtechnologies.com/help/x-study/technical-indicator-definitions/simple-moving-average-sma/
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
|
Before Width: | Height: | Size: 89 KiB |
+93
-101
@@ -2,7 +2,14 @@
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"metadata": {
|
||||
"dotnet_interactive": {
|
||||
"language": "csharp"
|
||||
},
|
||||
"polyglot_notebook": {
|
||||
"kernelName": "csharp"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"# Quick Start\n",
|
||||
"\n",
|
||||
@@ -17,35 +24,16 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"dotnet_interactive": {
|
||||
"language": "csharp"
|
||||
},
|
||||
"vscode": {
|
||||
"languageId": "dotnet-interactive.csharp"
|
||||
"languageId": "polyglot-notebook"
|
||||
}
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/html": [
|
||||
"<div><div></div><div></div><div></div></div>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"ename": "Error",
|
||||
"evalue": "(3,1): error CS0246: The type or namespace name 'Yahoo_Feed' could not be found (are you missing a using directive or an assembly reference?)\r\n(10,15): error CS0019: Operator '<' cannot be applied to operands of type 'int' and 'method group'",
|
||||
"output_type": "error",
|
||||
"traceback": [
|
||||
"(3,1): error CS0246: The type or namespace name 'Yahoo_Feed' could not be found (are you missing a using directive or an assembly reference?)\r\n",
|
||||
"(10,15): error CS0019: Operator '<' cannot be applied to operands of type 'int' and 'method group'"
|
||||
]
|
||||
}
|
||||
],
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"#r \"nuget:QuanTAlib;\"\n",
|
||||
"using QuanTAlib;\n",
|
||||
@@ -63,7 +51,14 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"metadata": {
|
||||
"dotnet_interactive": {
|
||||
"language": "csharp"
|
||||
},
|
||||
"polyglot_notebook": {
|
||||
"kernelName": "csharp"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"## Understanding QuanTAlib data model\n",
|
||||
"\n",
|
||||
@@ -72,26 +67,16 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 10,
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"dotnet_interactive": {
|
||||
"language": "csharp"
|
||||
},
|
||||
"vscode": {
|
||||
"languageId": "dotnet-interactive.csharp"
|
||||
"languageId": "polyglot-notebook"
|
||||
}
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/html": [
|
||||
"<table><thead><tr><th><i>index</i></th><th>Item1</th><th>Item2</th></tr></thead><tbody><tr><td>0</td><td><span>2022-11-10 00:00:00Z</span></td><td><div class=\"dni-plaintext\">105.3</div></td></tr><tr><td>1</td><td><span>2022-11-10 15:47:46Z</span></td><td><div class=\"dni-plaintext\">293.1</div></td></tr><tr><td>2</td><td><span>2022-11-10 15:47:46Z</span></td><td><div class=\"dni-plaintext\">0</div></td></tr><tr><td>3</td><td><span>2022-11-07 15:47:46Z</span></td><td><div class=\"dni-plaintext\">10</div></td></tr></tbody></table>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"var item1 = (DateTime.Today, 105.3); // (DateTime, Value) tuple\n",
|
||||
"double item2 = 293.1; // a simple double\n",
|
||||
@@ -107,66 +92,60 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"metadata": {
|
||||
"dotnet_interactive": {
|
||||
"language": "csharp"
|
||||
},
|
||||
"polyglot_notebook": {
|
||||
"kernelName": "csharp"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"TSeries list can display only values (without timestamps) or only timestamps (without values) by using `.v` or `.t` properties"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 11,
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"dotnet_interactive": {
|
||||
"language": "csharp"
|
||||
},
|
||||
"vscode": {
|
||||
"languageId": "dotnet-interactive.csharp"
|
||||
"languageId": "polyglot-notebook"
|
||||
}
|
||||
},
|
||||
"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\">105.3</div></td></tr><tr><td>1</td><td><div class=\"dni-plaintext\">293.1</div></td></tr><tr><td>2</td><td><div class=\"dni-plaintext\">0</div></td></tr><tr><td>3</td><td><div class=\"dni-plaintext\">10</div></td></tr></tbody></table>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"data.v"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"metadata": {
|
||||
"dotnet_interactive": {
|
||||
"language": "csharp"
|
||||
},
|
||||
"polyglot_notebook": {
|
||||
"kernelName": "csharp"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"The last element on the list can be accessed by .Last() or by [^1] - and using `.t` (time) and `.v` (value) properties. Also, casting a TSeries into (double) will return the value of the last element"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 12,
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"dotnet_interactive": {
|
||||
"language": "csharp"
|
||||
},
|
||||
"vscode": {
|
||||
"languageId": "dotnet-interactive.csharp"
|
||||
"languageId": "polyglot-notebook"
|
||||
}
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/html": [
|
||||
"<div class=\"dni-plaintext\">10</div>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"bool IsTheSame = data.Last().v == data[^1].v;\n",
|
||||
"double lastvalue = data;\n",
|
||||
@@ -176,33 +155,30 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"metadata": {
|
||||
"dotnet_interactive": {
|
||||
"language": "csharp"
|
||||
},
|
||||
"polyglot_notebook": {
|
||||
"kernelName": "csharp"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"All indicators are just modified TSeries classes; they get all required input during class construction (source of the datafeed, period...) and they automatically subscribe to events of the datafeed. Whenever datafeed gets a new value, indicator will calculate its own value. Indicators are also event publishers, so other indicators can subscribe to their results, chaining indicators together:"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 13,
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"dotnet_interactive": {
|
||||
"language": "csharp"
|
||||
},
|
||||
"vscode": {
|
||||
"languageId": "dotnet-interactive.csharp"
|
||||
"languageId": "polyglot-notebook"
|
||||
}
|
||||
},
|
||||
"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\">Infinity</div></td></tr><tr><td>1</td><td><div class=\"dni-plaintext\">0.6666666666666666</div></td></tr><tr><td>2</td><td><div class=\"dni-plaintext\">0.3333333333333333</div></td></tr><tr><td>3</td><td><div class=\"dni-plaintext\">0.2</div></td></tr><tr><td>4</td><td><div class=\"dni-plaintext\">0.14285714285714285</div></td></tr><tr><td>5</td><td><div class=\"dni-plaintext\">0.1111111111111111</div></td></tr><tr><td>6</td><td><div class=\"dni-plaintext\">0.09090909090909091</div></td></tr><tr><td>7</td><td><div class=\"dni-plaintext\">0.07692307692307693</div></td></tr><tr><td>8</td><td><div class=\"dni-plaintext\">0.06666666666666667</div></td></tr><tr><td>9</td><td><div class=\"dni-plaintext\">0.058823529411764705</div></td></tr><tr><td>10</td><td><div class=\"dni-plaintext\">0.25</div></td></tr></tbody></table>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"TSeries t1 = new() {0,1,2,3,4,5,6,7,8,9}; // t1 is loaded with data and activated as a publisher\n",
|
||||
"EMA_Series t2 = new(t1, 3); // t2 will auto-load all history of t1 and wait for events from t1\n",
|
||||
@@ -218,7 +194,14 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"metadata": {
|
||||
"dotnet_interactive": {
|
||||
"language": "csharp"
|
||||
},
|
||||
"polyglot_notebook": {
|
||||
"kernelName": "csharp"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"# MACD compounded indicator\n",
|
||||
"\n",
|
||||
@@ -227,26 +210,16 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 15,
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"dotnet_interactive": {
|
||||
"language": "csharp"
|
||||
},
|
||||
"vscode": {
|
||||
"languageId": "dotnet-interactive.csharp"
|
||||
"languageId": "polyglot-notebook"
|
||||
}
|
||||
},
|
||||
"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\">0</div></td></tr><tr><td>1</td><td><div class=\"dni-plaintext\">0</div></td></tr><tr><td>2</td><td><div class=\"dni-plaintext\">0</div></td></tr><tr><td>3</td><td><div class=\"dni-plaintext\">0</div></td></tr><tr><td>4</td><td><div class=\"dni-plaintext\">0</div></td></tr><tr><td>5</td><td><div class=\"dni-plaintext\">0</div></td></tr><tr><td>6</td><td><div class=\"dni-plaintext\">0</div></td></tr><tr><td>7</td><td><div class=\"dni-plaintext\">0</div></td></tr><tr><td>8</td><td><div class=\"dni-plaintext\">0</div></td></tr><tr><td>9</td><td><div class=\"dni-plaintext\">0</div></td></tr><tr><td>10</td><td><div class=\"dni-plaintext\">0</div></td></tr><tr><td>11</td><td><div class=\"dni-plaintext\">0</div></td></tr><tr><td>12</td><td><div class=\"dni-plaintext\">0.13543589743590018</div></td></tr><tr><td>13</td><td><div class=\"dni-plaintext\">-0.03897954353340993</div></td></tr><tr><td>14</td><td><div class=\"dni-plaintext\">-0.17731008431411102</div></td></tr><tr><td>15</td><td><div class=\"dni-plaintext\">-0.24030671152304095</div></td></tr><tr><td>16</td><td><div class=\"dni-plaintext\">-0.08247055673614988</div></td></tr><tr><td>17</td><td><div class=\"dni-plaintext\">-0.47898448490240814</div></td></tr><tr><td>18</td><td><div class=\"dni-plaintext\">-0.9020715041856615</div></td></tr><tr><td>19</td><td><div class=\"dni-plaintext\">-1.3489730137363423</div></td></tr><tr><td colspan=\"2\"><i>(51 more)</i></td></tr></tbody></table>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"Yahoo_Feed aapl = new(\"AAPL\", 100);\n",
|
||||
"TSeries close = aapl.Close; // close will get data from history\n",
|
||||
@@ -266,14 +239,33 @@
|
||||
"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
|
||||
"polyglot_notebook": {
|
||||
"kernelInfo": {
|
||||
"defaultKernelName": "csharp",
|
||||
"items": [
|
||||
{
|
||||
"aliases": [
|
||||
"c#",
|
||||
"C#"
|
||||
],
|
||||
"languageName": "C#",
|
||||
"name": "csharp"
|
||||
},
|
||||
{
|
||||
"aliases": [
|
||||
"frontend"
|
||||
],
|
||||
"languageName": null,
|
||||
"name": "vscode"
|
||||
},
|
||||
{
|
||||
"aliases": [],
|
||||
"languageName": "KQL",
|
||||
"name": "kql"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
|
||||
+13
-7
@@ -6,20 +6,26 @@
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
|
||||
<meta name="description" content="Description">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsify-themeable@0/dist/css/theme-simple.css">
|
||||
<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/docsify@4/lib/themes/vue.css">
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
<script>
|
||||
window.$docsify = {
|
||||
name: 'QuanTAlib',
|
||||
repo: 'mihakralj/quantalib'
|
||||
}
|
||||
name: '',
|
||||
repo: '',
|
||||
latex: {
|
||||
inlineMath : [['$', '$'], ['\\(', '\\)']], // default
|
||||
displayMath : [['$$', '$$']], // default
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script src="//cdn.jsdelivr.net/npm/prismjs@1/components/prism-csharp.min.js"></script>
|
||||
<!-- Docsify v4 -->
|
||||
<script src="//cdn.jsdelivr.net/npm/docsify@4"></script>
|
||||
<script src="//cdn.jsdelivr.net/npm/docsify-themeable@0/dist/js/docsify-themeable.min.js"></script>
|
||||
<script src="//unpkg.com/@rakutentech/docsify-code-inline/dist/index.min.js"></script>
|
||||
<!-- LaTeX display engine -->
|
||||
<script src="//cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
||||
<!-- docsify-latex plugin -->
|
||||
<script src="//cdn.jsdelivr.net/npm/docsify-latex@0"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+43
-32
@@ -34,28 +34,31 @@ See [Getting Started](https://github.com/mihakralj/QuanTAlib/blob/main/Docs/gett
|
||||
|
||||
⛔= Not implemented (yet)
|
||||
|
||||
| **BASIC TRANSFORMS** | **QuanTAlib** | **TA-LIB** | **Skender** | **Pandas TA** |
|
||||
|--|:--:|:--:|:--:|:--:|
|
||||
| **BASIC TRANSFORMS** | **QuanTAlib** | **TA-LIB** | **Skender** | **Pandas TA** | **Tulip** |
|
||||
|--|:--:|:--:|:--:|:--:|:--:|
|
||||
| ⭐ OC2 - (Open+Close)/2 |️ `.OC2` || CandlePart.OC2 ||
|
||||
| ⭐ HL2 - Median Price | `.HL2` | MEDPRICE | CandlePart.HL2 | hl2 |
|
||||
| ⭐ HLC3 - Typical Price | `.HLC3` | TYPPRICE | CandlePart.HLC3 | hlc3 |
|
||||
| ⭐ OHL3 - (Open+High+Low)/3 | `.OHL3` || CandlePart.OHL3 ||
|
||||
| ⭐ OHLC4 - Average Price | `.OHLC4` | AVGPRICE |️ CandlePart.OHLC4 | ohlc4 |
|
||||
| ⭐ OHLC4 - Average Price | `.OHLC4` | AVGPRICE |️ CandlePart.OHLC4 | ohlc4 | avgprice |
|
||||
| ⭐ HLCC4 - Weighted Price | `.HLCC4` | WCLPRICE | CandlePart.HLCC4 ||
|
||||
| ⭐ MIDPOINT - Midpoint value | `MIDPOINT_Series` | MIDPOINT || midpoint |
|
||||
| ⭐ MIDPRICE - Midpoint price | `MIDPRICE_Series` | MIDPRICE || midprice |
|
||||
| ⭐ MAX - Max value | `MAX_Series` | MAX |||
|
||||
| ⭐ MIN - Min value | `MIN_Series` | MIN |||
|
||||
| ⭐ SUM - Summation | `SUM_Series` | SUM |||
|
||||
| ⭐ ADD - Addition | `ADD_Series` | ADD |||
|
||||
| ⭐ SUB - Subtraction | `SUB_Series` | SUB |||
|
||||
| ⭐ MUL - Multiplication | `MUL_Series` | MUL |||
|
||||
| ⭐ DIV - Division | `DIV_Series` | DIV |||
|
||||
| ⭐ MAX - Max value | `MAX_Series` | MAX ||| max |
|
||||
| ⭐ MIN - Min value | `MIN_Series` | MIN ||| min |
|
||||
| ⭐ SUM - Summation | `SUM_Series` | SUM ||| sum |
|
||||
| ⭐ ADD - Addition | `ADD_Series` | ADD ||| add |
|
||||
| ⭐ SUB - Subtraction | `SUB_Series` | SUB ||| sub |
|
||||
| ⭐ MUL - Multiplication | `MUL_Series` | MUL ||| mul |
|
||||
| ⭐ DIV - Division | `DIV_Series` | DIV ||| div |
|
||||
|||||
|
||||
| **STATISTICS & NUMERICAL ANALYSIS** | **QuanTAlib** | **TA-LIB** | **Skender** | **Pandas TA** |
|
||||
| **STATISTICS & NUMERICAL ANALYSIS** |
|
||||
||||||
|
||||
| ⭐ BIAS - Bias | `BIAS_Series` ||| bias |
|
||||
| ⭐ CORR - Pearson's Correlation Coefficient | `CORR_Series` | CORREL | GetCorrelation ||
|
||||
| ⭐ COVAR - Covariance | `COVAR_Series` || GetCorrelation ||
|
||||
| ⛔ DECAY - Linear Decay ||||| decay |
|
||||
| ⛔ EDECAY - Exponential Decay ||||| edecay |
|
||||
| ⭐ ENTROPY - Entropy | `ENTROPY_Series` ||| entropy |
|
||||
| ⭐ KURTOSIS - Kurtosis | `KURT_Series` ||| kurtosis |
|
||||
| ⭐ LINREG - Linear Regression | `LINREG_Series` || GetSlope ||
|
||||
@@ -73,22 +76,23 @@ See [Getting Started](https://github.com/mihakralj/QuanTAlib/blob/main/Docs/gett
|
||||
| ✔️ WMAPE - Weighted Mean Absolute Percent Error | `WMAPE_Series` ||||
|
||||
| ⭐ ZSCORE - Number of standard deviations from mean | `ZSCORE_Series` || GetStdDev | zscore |
|
||||
||||||
|
||||
| **TREND INDICATORS & AVERAGES** | **QuanTAlib** | **TA-LIB** | **Skender** | **Pandas TA** |
|
||||
| **TREND INDICATORS & AVERAGES** |
|
||||
||||||
|
||||
| ⛔ AFIRMA - Autoregressive Finite Impulse Response Moving Average |||||
|
||||
| ⭐ ALMA - Arnaud Legoux Moving Average | `ALMA_Series` || GetAlma | alma |
|
||||
| ⛔ ARIMA - Autoregressive Integrated Moving Average |||||
|
||||
| ⭐ DEMA - Double EMA Average | `DEMA_Series` | DEMA | GetDema | dema |
|
||||
| ⭐ EMA - Exponential Moving Average | `EMA_Series` | EMA | GetEma | ema |
|
||||
| ⭐ DEMA - Double EMA Average | `DEMA_Series` | DEMA | GetDema | dema | dema |
|
||||
| ⭐ EMA - Exponential Moving Average | `EMA_Series` | EMA | GetEma | ema | ema |
|
||||
| ⛔ EPMA - Endpoint Moving Average ||| GetEpma ||
|
||||
| ⛔ FRAMA - Fractal Adaptive Moving Average |||||
|
||||
| ⛔ FWMA - Fibonacci's Weighted Moving Average |||| fwma |
|
||||
| ⛔ HILO - Gann High-Low Activator |||| hilo |
|
||||
| ✔️ HEMA - Hull/EMA Average | `HEMA_Series` ||||
|
||||
| ⛔ Hilbert Transform Instantaneous Trendline || HT_TRENDLINE | GetHtTrendline ||
|
||||
| ⭐ HMA - Hull Moving Average | `HMA_Series` || GetHma | hma |
|
||||
| ⭐ HMA - Hull Moving Average | `HMA_Series` || GetHma | hma | hma |
|
||||
| ⛔ HWMA - Holt-Winter Moving Average |||| hwma |
|
||||
| ✔️ JMA - Jurik Moving Average | `JMA_Series` ||| jma |
|
||||
| ⭐ KAMA - Kaufman's Adaptive Moving Average | `KAMA_Series` | KAMA | GetKama | kama |
|
||||
| ⭐ KAMA - Kaufman's Adaptive Moving Average | `KAMA_Series` | KAMA | GetKama | kama | kama |
|
||||
| ⛔ KDJ - KDJ Indicator (trend reversal) |||| kdj |
|
||||
| ⛔ LSMA - Least Squares Moving Average |||||
|
||||
| ⭐ MACD - Moving Average Convergence/Divergence | `MACD_Series` | MACD | GetMacd | macd |
|
||||
@@ -113,17 +117,20 @@ See [Getting Started](https://github.com/mihakralj/QuanTAlib/blob/main/Docs/gett
|
||||
| ⭐ WMA - Weighted Moving Average | `WMA_Series` | WMA | GetWma | wma |
|
||||
| ⭐ ZLEMA - Zero Lag EMA Average | `ZLEMA_Series` ||| zlma |
|
||||
||||||
|
||||
| **VOLATILITY INDICATORS** | **QuanTAlib** | **TA-LIB** | **Skender** | **Pandas TA** |
|
||||
| ⭐ ADL - Chaikin Accumulation Distribution Line | `ADL_Series` | AD | GetAdl | ad |
|
||||
| ⭐ ADOSC - Chaikin Accumulation Distribution Oscillator | `ADOSC_Series` | ADOSC| GetAdl | adosc |
|
||||
| ⭐ ATR - Average True Range | `ATR_Series` | ATR | GetAtr | atr |
|
||||
| **VOLATILITY INDICATORS** |
|
||||
||||||
|
||||
| ⭐ ADL - Chaikin Accumulation Distribution Line | `ADL_Series` | AD | GetAdl | ad | ad |
|
||||
| ⭐ ADOSC - Chaikin Accumulation Distribution Oscillator | `ADOSC_Series` | ADOSC| GetAdl | adosc | adosc |
|
||||
| ⭐ ATR - Average True Range | `ATR_Series` | ATR | GetAtr | atr | atr |
|
||||
| ⭐ ATRP - Average True Range Percent | `ATRP_Series` || GetAtr ||
|
||||
| ⛔ BETA - Beta coefficient || BETA | GetBeta ||
|
||||
| ⭐ BBANDS - Bollinger Bands® | `BBANDS_Series` | BBANDS | GetBollingerBands ||
|
||||
| ⭐ BBANDS - Bollinger Bands® | `BBANDS_Series` | BBANDS | GetBollingerBands || bbands |
|
||||
| ⛔ CHAND - Chandelier Exit ||| GetChandelier ||
|
||||
| ⛔ CRSI - Connor RSI ||| GetConnorsRsi ||
|
||||
| ⛔ CVI - Chaikins Volatility ||||| cvi |
|
||||
| ⛔ DON - Donchian Channels ||| GetDonchian ||
|
||||
| ⛔ FCB - Fractal Chaos Bands ||| GetFcb ||
|
||||
| ⛔ FISHER - Fisher Transform ||| GetFcb || fisher |
|
||||
| ⛔ HV - Historical Volatility |||||
|
||||
| ⛔ ICH - Ichimoku ||| GetIchimoku ||
|
||||
| ⛔ KEL - Keltner Channels ||| GetKeltner ||
|
||||
@@ -137,23 +144,25 @@ See [Getting Started](https://github.com/mihakralj/QuanTAlib/blob/main/Docs/gett
|
||||
| ⛔ UI - Ulcer Index |||||
|
||||
| ⛔ VSTOP - Volatility Stop |||||
|
||||
||||||
|
||||
| **MOMENTUM INDICATORS & OSCILLATORS** | **QuanTAlib** | **TA-LIB** | **Skender** | **Pandas TA** |
|
||||
| **MOMENTUM INDICATORS & OSCILLATORS** |
|
||||
||||||
|
||||
| ⛔ AC - Acceleration Oscillator |||||
|
||||
| ⛔ ADX - Average Directional Movement Index || ADX | GetAdx ||
|
||||
| ⛔ ADXR - Average Directional Movement Index Rating || ADXR | GetAdx ||
|
||||
| ⛔ AO - Awesome Oscillator ||| GetAwesome ||
|
||||
| ⛔ APO - Absolute Price Oscillator || APO |||
|
||||
| ⛔ AROON - Aroon oscillator || AROON | GetAroon ||
|
||||
| ⛔ BOP - Balance of Power || BOP | GetBop ||
|
||||
| ⭐ CCI - Commodity Channel Index | `CCI_Series` | CCI | GetCci ||
|
||||
| ⛔ ADX - Average Directional Movement Index || ADX | GetAdx || adx |
|
||||
| ⛔ ADXR - Average Directional Movement Index Rating || ADXR | GetAdx || adxr |
|
||||
| ⛔ AO - Awesome Oscillator ||| GetAwesome || ao |
|
||||
| ⛔ APO - Absolute Price Oscillator || APO ||| apo |
|
||||
| ⛔ AROON - Aroon oscillator || AROON | GetAroon || aroon |
|
||||
| ⛔ BOP - Balance of Power || BOP | GetBop || bop |
|
||||
| ⭐ CCI - Commodity Channel Index | `CCI_Series` | CCI | GetCci || cci |
|
||||
| ⛔ CFO - Chande Forcast Oscillator |||||
|
||||
| ⛔ CMO - Chande Momentum Oscillator || CMO | GetCmo ||
|
||||
| ⛔ CMO - Chande Momentum Oscillator || CMO | GetCmo || cmo |
|
||||
| ⛔ COG - Center of Gravity |||||
|
||||
| ⛔ COPPOCK - Coppock Curve |||||
|
||||
| ⛔ CTI - Ehler's Correlation Trend Indicator |||||
|
||||
| ⛔ DPO - Detrended Price Oscillator ||| GetDpo ||
|
||||
| ⛔ DMI - Directional Movement Index || DX | GetAdx ||
|
||||
| ⛔ EFI - Elder Ray's Force Index ||| GetElderRay ||
|
||||
| ⛔ FOSC - Forecast oscillator ||||| fosc |
|
||||
| ⛔ GAT - Alligator oscillator ||| GetGator ||
|
||||
| ⛔ HURST - Hurst Exponent ||| GetHurst ||
|
||||
| ⛔ KRI - Kairi Relative Index |||||
|
||||
@@ -176,10 +185,12 @@ See [Getting Started](https://github.com/mihakralj/QuanTAlib/blob/main/Docs/gett
|
||||
| ⛔ WILLR - Larry Williams' %R || WILLR | GetWilliamsR ||
|
||||
| ⛔ WGAT - Williams Alligator |||||
|
||||
||||||
|
||||
| **VOLUME INDICATORS** | **QuanTAlib** | **TA-LIB** | **Skender** | **Pandas TA** |
|
||||
| **VOLUME INDICATORS** |
|
||||
||||||
|
||||
| ⛔ AOBV - Archer On-Balance Volume |||||
|
||||
| ⛔ CMF - Chaikin Money Flow |||||
|
||||
| ⛔ EOM - Ease of Movement |||||
|
||||
| ⛔ EOM - Ease of Movement ||||| emv |
|
||||
| ⛔ KVO - Klinger Volume Oscilaltor ||||| kvo |
|
||||
| ⭐ OBV - On-Balance Volume | `OBV_Series` | OBV | GetObv ||
|
||||
| ⛔ PRS - Price Relative Strength ||||
|
||||
| ⛔ PVOL - Price-Volume |||||
|
||||
|
||||
Reference in New Issue
Block a user