Home

Awesome

Indicado ๐Ÿš€๐ŸŒ•

<p> <a href="https://hex.pm/packages/indicado"> <img alt="Hex Version" src="https://img.shields.io/hexpm/v/indicado.svg"> </a> <a href="https://hexdocs.pm/indicado"> <img alt="Hex Docs" src="http://img.shields.io/badge/hex.pm-docs-green.svg?style=flat"> </a> <a href="https://github.com/thisiscetin/indicado/actions"> <img alt="CI Status" src="https://github.com/thisiscetin/indicado/workflows/ci/badge.svg"> </a> <a href="https://opensource.org/licenses/Apache-2.0"> <img alt="Apache 2 License" src="https://img.shields.io/hexpm/l/oban"> </a> </p>

Technical indicator library for Elixir with no dependencies. Indicado helps you analyze historical data to generate future price movement predictions on numerical datasets. Many traders and automated trading platforms use technical analysis because past actions may indicate future prices. Indicado might also be used outside financial markets if data hold patterns and not random.

What can you do with this library โ”

This library can be used as an add-on to Kamil Skorwon's great project Hands-on Elixir & OTP: Cryptocurrency trading bot, at some point. So, you can create sophisticated trading strategies that may better fit your risk appetite. You can also use this library for your custom solutions around automated trading/testing/strategy building.

In the future, in addition to supporting the community, I plan to release more open source tools around strategy building, backtesting, and numerical analysis.

Table of Contents ๐Ÿ“‹

Supported Indicators ๐Ÿ“ˆ

Indicators below are supported. New indicators being added regularly.

Helper math functions such as mean, stddev, variance is accessible through Indicado.Math module.

Installation ๐Ÿ’ป

Indicado published to Hex. Just add it to your dependencies in mix.exs.

def deps do
  [
    {:indicado, "~> 0.0.4"}
  ]
end

Then run mix deps.get to install indicado.

Usage ๐Ÿ› ๏ธ

Indicado provides two functions on the public API of indicators. Namely eval and eval! function.

Because every other indicator may expect different arguments, I recommend you check online documentation on hexdocs before using the indicado. For demonstration purposes how you can calculate a two day Simple Moving Average is shown below.

  iex(2)> Indicado.SMA.eval([1, 3, 5, 7], 2)
  {:ok, [2.0, 4.0, 6.0]}

Contributing ๐Ÿงต

Please follow standard convention such as eval and eval! functions defined for all indicators inside lib folder. Rest is easy;

To ensure a commit passes CI run mix test.ci before opening a pull request to execute commands below.