Giter Site home page Giter Site logo

talibstandard's Introduction

TaLibStandard

Sparkline

A modern and robust C# Technical Analysis library based on the original open-source TA-Lib by Mario Fortier, using Generic Math and supporting Double, Float, and Decimal data types.


phmatray - TaLibStandard License: GPL-3.0-or-later stars - TaLibStandard forks - TaLibStandard

GitHub tag issues - TaLibStandard GitHub pull requests GitHub contributors GitHub last commit codecov Codacy Badge


πŸ“ Table of Contents

πŸ“š Introduction

TaLibStandard is a modern interpretation of the widely used TA-Lib, reimagined in C# 12. It is designed to be reliable, efficient, and user-friendly for developers performing financial market analysis. The addition of .NET's Generic Math feature allows for a richer, more flexible library that can handle a variety of number types.

🎯 Goal

The primary objective of TaLibStandard is to provide a comprehensive, feature-rich and accessible library for conducting technical analysis on financial market data.

🏁 Getting started

To get started with TaLibStandard, you can clone the repository and explore the examples provided in the examples directory. You can also refer to the list of available functions in the documentation for a comprehensive overview of the library's capabilities.

πŸ“Œ Features

  • Support for Double, Float, and Decimal data types, with the help of .NET's Generic Math
  • With some basic tests (coverage: >= 80%)
  • .NET Exception handling (BREAKING CHANGE)

Roadmap (next features)

  • Comprehensive API documentation that is easy to understand
  • High-Level API for common use cases
  • Support for more data types
  • Support for more functions
  • More tests
  • More examples
  • Add a Benchmark project
  • Create a gRPC server to expose the library as a service

πŸ“„ Documentation

TaLibStandard provides a COMPLETE DOCUMENTATION of the library.

All summaries are written in English. If you want to help us translate the documentation, please open an issue to discuss it.

Note: The documentation is generated using Doraku/DefaultDocumentation tool. It is generated automatically when the project is built.

πŸ“₯ Installation

πŸ“‹ Prerequisites

  • .NET 8.0 (supported versions: 8.x)
  • A C# IDE (Visual Studio, JetBrains Rider, etc.)
  • A C# compiler (dotnet CLI, etc.)

πŸš€ We use the latest C# features

This library targets .NET 8.0 and uses the latest C# features. It is written in C# 12.0 and uses the new init properties, record types, switch expressions, using declarations and more.

I invite you to read the C# 12.0 documentation to learn more about these features.

πŸ“¦ NuGet Packages

Package Name NuGet Version Badge NuGet Downloads Badge Package Explorer
Atypical.TechnicalAnalysis.Candles NuGet NuGet Explore
Atypical.TechnicalAnalysis.Functions NuGet NuGet Explore
Atypical.TechnicalAnalysis.Core NuGet NuGet Explore

This table is automatically updated regularly the latest developments and releases in the Atypical Technical Analysis suite.

πŸ§ͺ Tests Specifications

  • Target framework : .NET 8
  • Language version : C# 12
  • xUnit and FluentAssertions

πŸ’Ύ Installation

To install TaLibStandard, you can use the NuGet package manager. Run the following command in your terminal:

dotnet add package Atypical.TechnicalAnalysis.Candles
dotnet add package Atypical.TechnicalAnalysis.Functions

πŸ“Š Code Quality

We strive for the highest code quality in TaLibStandard, leveraging Codacyβ€”an automated code analysis/quality tool. Codacy provides static analysis, cyclomatic complexity measures, duplication identification, and code unit test coverage changes for every commit and pull request.

View our Codacy metrics here.

❓ Issues and Feature Requests

For reporting bugs or suggesting new features, kindly submit these as an issue to the TaLibStandard Repository. We value your contributions, but before submitting an issue, please ensure it is not a duplicate of an existing one.

🀝 Contributing

We welcome contributions from the community! If you'd like to contribute to TaLibStandard, please fork the repository and submit a pull request. For major changes, please open an issue first to discuss what you would like to change.

🌟 Contributors

Contributors

βœ‰οΈ Contact

You can contact us by opening an issue on this repository.

πŸ“ Release notes

Here is a list of recent notable changes to TaLibStandard.

  • dotnet 8.0 support
  • Generic Math support
  • .NET Exception handling
  • NuGet packages

πŸ“œ License

GNU General Public License v3.0 or later.

talibstandard's People

Contributors

dependabot[bot] avatar matasx avatar phmatray avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

talibstandard's Issues

Not sure, but seems a bug to me

return new CandleIndicatorResult(Success, outBegIdx, outNBElement, outInteger);

I'm trying identify patterns right after market opens, in 5 minutes candles. For instance, when I run GetLookback() for Candle3WhiteSoldiers, I got 12, so What I understand is that I have to have 12 5 minute candles to be able to identify this pattern. In other words, I can only identify it after 60 minutes, and I wanted to identify it in the first 20 to 30 minutes. Is it possible to change it to a shorter interval?

The bug I think exists is:

If we don't have enough candles to identify the pattern, it shouldn't return a success message here, but an error message, am I right?

    // Identify the minimum number of price bar needed to calculate at least one output.
    int lookbackTotal = GetLookback();

    // Move up the start index if there is not enough initial data.
    if (startIdx < lookbackTotal)
    {
        startIdx = lookbackTotal;
    }

    // Make sure there is still something to evaluate.
    if (startIdx > endIdx)
    {
        return new CandleIndicatorResult(**Success**, outBegIdx, outNBElement, outInteger);
    }

If I'm wrong, I apologize, I'm a little rusty with programming.
Thanks, and nice job

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.