Popularity
6.1
Growing
Activity
5.9
Declining
243
29
36

Programming language: Go
Tags: Financial    
Latest version: v0.10.0

techan alternatives and similar packages

Based on the "Financial" category

Do you think we are missing an alternative of techan or a related project?

Add another 'Financial' Package

README

Techan

codecov

TechAn is a technical analysis library for Go! It provides a suite of tools and frameworks to analyze financial data and make trading decisions.

Features

  • Basic and advanced technical analysis indicators
  • Profit and trade analysis
  • Strategy building

Installation

$ go get github.com/sdcoffey/techan

Quickstart

series := techan.NewTimeSeries()

// fetch this from your preferred exchange
dataset := [][]string{
    // Timestamp, Open, Close, High, Low, volume
    {"1234567", "1", "2", "3", "5", "6"},
}

for _, datum := range dataset {
    start, _ := strconv.ParseInt(datum[0], 10, 64)
    period := techan.NewTimePeriod(time.Unix(start, 0), time.Hour*24)

    candle := techan.NewCandle(period)
    candle.OpenPrice = big.NewFromString(datum[1])
    candle.ClosePrice = big.NewFromString(datum[2])
    candle.MaxPrice = big.NewFromString(datum[3])
    candle.MinPrice = big.NewFromString(datum[4])

    series.AddCandle(candle)
}

closePrices := techan.NewClosePriceIndicator(series)
movingAverage := techan.NewEMAIndicator(closePrices, 10) // Create an exponential moving average with a window of 10

fmt.Println(movingAverage.Calculate(0).FormattedString(2))

Creating trading strategies

indicator := techan.NewClosePriceIndicator(series)

// record trades on this object
record := techan.NewTradingRecord()

entryConstant := techan.NewConstantIndicator(30)
exitConstant := techan.NewConstantIndicator(10)

// Is satisfied when the price ema moves above 30 and the current position is new
entryRule := techan.And(
    techan.NewCrossUpIndicatorRule(entryConstant, indicator),
    techan.PositionNewRule{})

// Is satisfied when the price ema moves below 10 and the current position is open
exitRule := techan.And(
    techan.NewCrossDownIndicatorRule(indicator, exitConstant),
    techan.PositionOpenRule{})

strategy := techan.RuleStrategy{
    UnstablePeriod: 10, // Period before which ShouldEnter and ShouldExit will always return false
    EntryRule:      entryRule,
    ExitRule:       exitRule,
}

strategy.ShouldEnter(0, record) // returns false

Credits

Techan is heavily influenced by the great ta4j. Many of the ideas and frameworks in this library owe their genesis to the great work done over there.

License

Techan is released under the MIT license. See [LICENSE](./LICENSE) for details.


*Note that all licence references and agreements mentioned in the techan README section above are relevant to that project's source code only.