Skip to content

MicahParks/go-rsi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Go Reference Go Report Card

go-rsi

The Relative Strength Index (RSI) technical analysis algorithm implemented in Golang.

import "github.com/MicahParks/go-rsi/v2"

Usage

For full examples, please see the examples directory.

Preconditions

  1. Gather test data.
  2. Decide on the number of periods, p, for the RSI algorithm. Populate a slice of prices whose length is p + 1.
// Determine the number of periods for the initial inputs. Defaults to 14.
const initialLength = rsi.DefaultPeriods + 1
initial := prices[:initialLength]

Step 1

Create the RSI data structure and get the first result.

r, result := rsi.New(initial)

Step 2

Use the remaining data to calculate the RSI value for that period.

remaining := prices[initialLength:]
for i, next := range remaining {
	result = r.Calculate(next)
}

Testing

There is 100% test coverage and benchmarks for this project. Here is an example benchmark result:

$ go test -bench .
goos: linux
goarch: amd64
pkg: github.com/MicahParks/go-rsi/v2
cpu: Intel(R) Core(TM) i5-9600K CPU @ 3.70GHz
BenchmarkBigRSI_Calculate-6     1000000000               0.0001744 ns/op
BenchmarkRSI_Calculate-6        1000000000               0.0000017 ns/op
PASS
ok      github.com/MicahParks/go-rsi/v2    0.005s

Other Technical Algorithms

Looking for some other technical analysis algorithms? Here are some other ones I've implemented:

  • Accumulation/Distribution (A/D): go-ad
  • Chaikin: go-chaikin
  • Moving Average Convergence Divergence (MACD), Exponential Moving Average (EMA), Simple Moving Average (SMA): go-ma
  • Relative Strength Index (RSI): go-rsi

Resources

I built and tested this package using these resources:

About

The Relative Strength Index (RSI) technical analysis algorithm implemented in Golang.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages