mirror of
https://github.com/mihakralj/QuanTAlib.git
synced 2026-08-18 10:38:05 +00:00
readme
This commit is contained in:
+37
-37
@@ -1,37 +1,37 @@
|
|||||||
# QuanTAlib - quantitative technical indicators for Quantower and other C#-based trading platorms
|
# QuanTAlib - quantitative technical indicators for Quantower and other C#-based trading platorms
|
||||||
|
|
||||||

|
|
||||||
[](https://sonarcloud.io/summary/overall?id=mihakralj_QuanTAlib)
|
[](https://sonarcloud.io/summary/overall?id=mihakralj_QuanTAlib)
|
||||||
[](https://app.codacy.com/gh/mihakralj/QuanTAlib/dashboard)
|
[](https://app.codacy.com/gh/mihakralj/QuanTAlib/dashboard)
|
||||||
[](https://codecov.io/gh/mihakralj/QuanTAlib)
|
[](https://codecov.io/gh/mihakralj/QuanTAlib)
|
||||||
[](https://sonarcloud.io/summary/new_code?id=mihakralj_QuanTAlib)
|
[](https://sonarcloud.io/summary/new_code?id=mihakralj_QuanTAlib)
|
||||||
|
[](https://www.codefactor.io/repository/github/mihakralj/quantalib/overview/main)
|
||||||
[](https://www.nuget.org/packages/QuanTAlib/)
|
|
||||||
[](https://www.nuget.org/packages/QuanTAlib/)
|
[](https://www.nuget.org/packages/QuanTAlib/)
|
||||||
[](https://github.com/mihakralj/QuanTAlib/watchers)
|

|
||||||
|
[](https://www.nuget.org/packages/QuanTAlib/)
|
||||||
[](https://dotnet.microsoft.com/en-us/download/dotnet/7.0)
|
[](https://github.com/mihakralj/QuanTAlib/watchers)
|
||||||
[](https://dotnet.microsoft.com/en-us/download/dotnet/6.0)
|
|
||||||
[](https://dotnet.microsoft.com/en-us/download/dotnet-framework/net48)
|
[
|
||||||
[](Docs/LICENSE)
|
[](Docs/LICENSE)
|
||||||
|
|
||||||
|
|
||||||
Quantitative TA Library (**QuanTAlib**) is an easy-to-use C# library for quantitative technical analysis with base algorithms, charts, signals and strategies useful for trading securities with [Quantower](https://www.quantower.com/) and other C#-based trading platforms.
|
Quantitative TA Library (**QuanTAlib**) is an easy-to-use C# library for quantitative technical analysis with base algorithms, charts, signals and strategies useful for trading securities with [Quantower](https://www.quantower.com/) and other C#-based trading platforms.
|
||||||
|
|
||||||
**QuanTAlib** is written with some specific design criteria in mind - this is a list of reasons why there is '_yet another C# TA library_':
|
**QuanTAlib** is written with some specific design criteria in mind - this is a list of reasons why there is '_yet another C# TA library_':
|
||||||
|
|
||||||
- Written in native C# - no code conversion from TA-LIB or other imported/converted TA libraries
|
- Written in native C# - no code conversion from TA-LIB or other imported/converted TA libraries
|
||||||
- No usage of Decimal datatypes, LINQ, interface abstractions, or static classes (all for performance reasons)
|
- No usage of Decimal datatypes, LINQ, interface abstractions, or static classes (all for performance reasons)
|
||||||
- Supports both **historical data analysis** (working on bulk of historical arrays) and **real-time analysis** (adding one data item at the time without the need to re-calculate the whole history)
|
- Supports both **historical data analysis** (working on bulk of historical arrays) and **real-time analysis** (adding one data item at the time without the need to re-calculate the whole history)
|
||||||
- Separation of calculations (**algos**) and visualizations (**charts**)
|
- Separation of calculations (**algos**) and visualizations (**charts**)
|
||||||
- Handle early data right - no hiding of poor calculations with NaN values (unless explicitly requested), data is as valid as mathematically possible from the first value
|
- Handle early data right - no hiding of poor calculations with NaN values (unless explicitly requested), data is as valid as mathematically possible from the first value
|
||||||
- Preservation of time-value integrity of each data throughout the calculation chain (each data point has a timestamp)
|
- Preservation of time-value integrity of each data throughout the calculation chain (each data point has a timestamp)
|
||||||
- Usage of events - each data series is an event publisher, each indicator is a subscriber - this allows seamless data flow between indicators without the need of plumbing (see [MACD example](https://github.com/mihakralj/QuanTAlib/blob/main/Docs/macd_example.ipynb) to understand how events allow chaining of indicators)
|
- Usage of events - each data series is an event publisher, each indicator is a subscriber - this allows seamless data flow between indicators without the need of plumbing (see [MACD example](https://github.com/mihakralj/QuanTAlib/blob/main/Docs/macd_example.ipynb) to understand how events allow chaining of indicators)
|
||||||
|
|
||||||
QuanTAlib does not provide OHLCV quotes - but it can easily connect to any data feeds. There are some data feed classess
|
QuanTAlib does not provide OHLCV quotes - but it can easily connect to any data feeds. There are some data feed classess
|
||||||
available (**RND_Feed** for random OHLCV, **YAHOO_Feed** for Yahoo Finance daily stock data)
|
available (**RND_Feed** for random OHLCV, **YAHOO_Feed** for Yahoo Finance daily stock data)
|
||||||
|
|
||||||
See [Getting Started](https://github.com/mihakralj/QuanTAlib/blob/main/Docs/getting_started.ipynb) .NET interactive notebook to get a feel how library works. Developers can use QuanTAlib in .NET interactive or in console apps, but the best
|
See [Getting Started](https://github.com/mihakralj/QuanTAlib/blob/main/Docs/getting_started.ipynb) .NET interactive notebook to get a feel how library works. Developers can use QuanTAlib in .NET interactive or in console apps, but the best
|
||||||
usage of the library is withing C#-enabled trading platforms - see **QuanTower_Charts** folder for Quantower examples.
|
usage of the library is withing C#-enabled trading platforms - see **QuanTower_Charts** folder for Quantower examples.
|
||||||
|
|
||||||
[**List of available and planned indicators**](https://github.com/mihakralj/QuanTAlib/blob/main/Docs/coverage.md). **So. Much. To. Do...**
|
[**List of available and planned indicators**](https://github.com/mihakralj/QuanTAlib/blob/main/Docs/coverage.md). **So. Much. To. Do...**
|
||||||
|
|||||||
@@ -0,0 +1,35 @@
|
|||||||
|
namespace QuanTAlib;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
/* <summary>
|
||||||
|
ZL: Zero Lag
|
||||||
|
Data is de-lagged by removing the data from “lag” days ago, thus removing
|
||||||
|
(or attempting to) the cumulative effect of the moving average.
|
||||||
|
|
||||||
|
Calculation:
|
||||||
|
Lag = (Period-1)/2
|
||||||
|
ZL = Data + (Data - Data(Lag days ago) )
|
||||||
|
|
||||||
|
Sources:
|
||||||
|
https://mudrex.com/blog/zero-lag-ema-trading-strategy/
|
||||||
|
|
||||||
|
</summary> */
|
||||||
|
|
||||||
|
public class ZL_Series : Single_TSeries_Indicator
|
||||||
|
{
|
||||||
|
public ZL_Series(TSeries source, int period, bool useNaN = false) : base(source, period:period, useNaN:useNaN) {
|
||||||
|
if (this._data.Count > 0) { base.Add(this._data); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Add((DateTime t, double v) TValue, bool update)
|
||||||
|
{
|
||||||
|
int _lag = (int)((_p-1) * 0.5);
|
||||||
|
_lag = (_data.Count-_lag < 0) ? 0 : _data.Count-_lag;
|
||||||
|
|
||||||
|
double _zl = TValue.v + (TValue.v - _data[_lag].v);
|
||||||
|
|
||||||
|
var ret = (TValue.t, (base.Count==0 && base._NaN) ? double.NaN : _zl );
|
||||||
|
base.Add(ret, update);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -51,11 +51,14 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<PackageIcon>images\icon.png</PackageIcon>
|
<PackageIcon>QuanTAlib2.png</PackageIcon>
|
||||||
<PackageIconUrl>https://raw.githubusercontent.com/mihakralj/QuanTAlib/main/.github/QuanTAlib2.png</PackageIconUrl>
|
<PackageIconUrl>https://raw.githubusercontent.com/mihakralj/QuanTAlib/main/.github/QuanTAlib2.png</PackageIconUrl>
|
||||||
|
<SignAssembly>False</SignAssembly>
|
||||||
|
<AssemblyOriginatorKeyFile>C:\Dropbox\SSH keys\Certum\MihaKralj_OpenSource.pem</AssemblyOriginatorKeyFile>
|
||||||
|
<DelaySign>True</DelaySign>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="..\.github\QuanTAlib2.png" Pack="true" Visible="false" PackagePath="images\icon.png" />
|
<None Include="..\.github\QuanTAlib2.png" Pack="true" Visible="false" PackagePath="\" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
Reference in New Issue
Block a user