{"id":13449696,"url":"https://github.com/greyblake/ta-rs","last_synced_at":"2025-05-15T02:03:19.804Z","repository":{"id":25688257,"uuid":"105320282","full_name":"greyblake/ta-rs","owner":"greyblake","description":"Technical analysis library for Rust language","archived":false,"fork":false,"pushed_at":"2024-07-12T15:51:05.000Z","size":210,"stargazers_count":764,"open_issues_count":15,"forks_count":150,"subscribers_count":23,"default_branch":"master","last_synced_at":"2025-05-13T21:01:49.556Z","etag":null,"topics":["finance","finances","financial","financial-analysis","indicator","indicators","library","market-data","math","moving-average","rust","rust-lang","rust-library","stock-market","stocks","technical-analysis","trading","trading-algorithms","trading-strategies","trading-systems"],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/greyblake.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-09-29T21:53:18.000Z","updated_at":"2025-05-11T18:36:30.000Z","dependencies_parsed_at":"2024-09-28T20:41:09.007Z","dependency_job_id":null,"html_url":"https://github.com/greyblake/ta-rs","commit_stats":{"total_commits":166,"total_committers":13,"mean_commits":12.76923076923077,"dds":0.5120481927710843,"last_synced_commit":"ecd65d85def675e578ddd3c7187fff2b6fad28fc"},"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/greyblake%2Fta-rs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/greyblake%2Fta-rs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/greyblake%2Fta-rs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/greyblake%2Fta-rs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/greyblake","download_url":"https://codeload.github.com/greyblake/ta-rs/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254259369,"owners_count":22040819,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["finance","finances","financial","financial-analysis","indicator","indicators","library","market-data","math","moving-average","rust","rust-lang","rust-library","stock-market","stocks","technical-analysis","trading","trading-algorithms","trading-strategies","trading-systems"],"created_at":"2024-07-31T06:00:51.632Z","updated_at":"2025-05-15T02:03:19.777Z","avatar_url":"https://github.com/greyblake.png","language":"Rust","funding_links":[],"categories":["Analytics","Analytic tools","Rust","trading-strategies","Technical analysis libraries"],"sub_categories":["Indicators"],"readme":"# Technical Analysis for Rust (ta)\n\n[![Build Status](https://img.shields.io/travis/greyblake/ta-rs)](https://travis-ci.org/greyblake/ta-rs)\n[![Crates.io](https://img.shields.io/crates/v/ta)](https://crates.io/crates/ta)\n[![Docs.rs](https://docs.rs/ta/badge.svg)](https://docs.rs/ta)\n[![License](https://img.shields.io/crates/l/ta)](https://raw.githubusercontent.com/greyblake/ta-rs/master/LICENSE)\n\n[![Stand With Ukraine](https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/banner2-direct.svg)](https://stand-with-ukraine.pp.ua/)\n\nTechnical analysis library for Rust.\n\n* [Getting started](#getting-started)\n* [Basic ideas](#basic-ideas)\n* [List of indicators](#list-of-indicators)\n* [Running benchmarks](#running-benchmarks)\n* [Donations](#donations)\n* [License](#license)\n* [Contributors](#contributors)\n\n## Getting started\n\nAdd to you `Cargo.toml`:\n```\n[dependencies]\nta = \"0.4.0\"\n```\n\nExample:\n\n```rust\nuse ta::indicators::ExponentialMovingAverage;\nuse ta::Next;\n\n// it can return an error, when an invalid length is passed (e.g. 0)\nlet mut ema = ExponentialMovingAverage::new(3).unwrap();\n\nassert_eq!(ema.next(2.0), 2.0);\nassert_eq!(ema.next(5.0), 3.5);\nassert_eq!(ema.next(1.0), 2.25);\nassert_eq!(ema.next(6.25), 4.25);\n```\n\nSee more in the examples [here](https://github.com/greyblake/ta-rs/tree/master/examples).\nCheck also the [documentation](https://docs.rs/ta).\n\n## Basic ideas\n\nA data item which represent a stock quote may implement the following traits:\n\n* `Open`\n* `High`\n* `Low`\n* `Close`\n* `Volume`\n\nIt's not necessary to implement all of them, but it must be enough to fulfill requirements for a particular indicator.\nYou probably should prefer using `DataItem` unless you have reasons to implement your own structure.\n\nIndicators typically implement the following traits:\n\n* `Next\u003cT\u003e` (often `Next\u003cf64\u003e` and `Next\u003c\u0026DataItem\u003e`) - to feed and get the next value\n* `Reset` - to reset an indicator\n* `Debug`\n* `Display`\n* `Default`\n* `Clone`\n\n## List of indicators\n\nSo far there are the following indicators available.\n\n* Trend\n  * Exponential Moving Average (EMA)\n  * Simple Moving Average (SMA)\n* Oscillators\n  * Relative Strength Index (RSI)\n  * Fast Stochastic\n  * Slow Stochastic\n  * Moving Average Convergence Divergence (MACD)\n  * Percentage Price Oscillator (PPO)\n  * Commodity Channel Index (CCI)\n  * Money Flow Index (MFI)\n* Other\n  * Minimum\n  * Maximum\n  * True Range\n  * Standard Deviation (SD)\n  * Mean Absolute Deviation (MAD)\n  * Average True Range (AR)\n  * Efficiency Ratio (ER)\n  * Bollinger Bands (BB)\n  * Chandelier Exit (CE)\n  * Keltner Channel (KC)\n  * Rate of Change (ROC)\n  * On Balance Volume (OBV)\n\n\n## Features\n\n* `serde` - allows to serialize and deserialize indicators. NOTE: the backward compatibility of serialized\ndata with the future versions of ta is not guaranteed because internal implementation of the indicators is a subject to change.\n\n## Running benchmarks\n\n```\ncargo bench\n```\n\n## Donations\n\nYou can support the project by donating [NEAR tokens](https://near.org).\n\nOur NEAR wallet address is `ta-rs.near`\n\n\n## License\n\n[MIT](https://github.com/greyblake/ta-rs/blob/master/LICENSE) © [Sergey Potapov](http://greyblake.com/)\n\n\n## Contributors\n\n- [greyblake](https://github.com/greyblake) Potapov Sergey - creator, maintainer.\n- [Bartoshko](https://github.com/Bartoshko) - BollingerBands\n- [shreyasdeotare](https://github.com/shreyasdeotare) Shreyas Deotare - MoneyFlowIndex, OnBalanceVolume\n- [edwardycl](https://github.com/edwardycl) - StandardDeviation Implementation \u0026 More Efficient BollingerBands\n- [rideron89](https://github.com/rideron89) Ron Rider - Keltner Channel\n- [tirz](https://github.com/tirz) - CCI, CE, MAD, PPO, refactorings\n- [Devin Gunay](https://github.com/dgunay) - serde support\n- [Youngchan Lee](https://github.com/edwardycl) - bugfix\n- [tommady](https://github.com/tommady) - get rid of error-chain dependency\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgreyblake%2Fta-rs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgreyblake%2Fta-rs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgreyblake%2Fta-rs/lists"}