You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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 exchangedataset:= [][]string{
// Timestamp, Open, Close, High, Low, volume
{"1234567", "1", "2", "3", "5", "6"},
}
for_, datum:=rangedataset {
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 10fmt.Println(movingAverage.Calculate(0).FormattedString(2))
Creating trading strategies
indicator:=techan.NewClosePriceIndicator(series)
// record trades on this objectrecord:=techan.NewTradingRecord()
entryConstant:=techan.NewConstantIndicator(30)
exitConstant:=techan.NewConstantIndicator(10)
// Is satisfied when the price ema moves above 30 and the current position is newentryRule:=techan.And(
techan.NewCrossUpIndicatorRule(entryConstant, indicator),
techan.PositionNewRule{})
// Is satisfied when the price ema moves below 10 and the current position is openexitRule:=techan.And(
techan.NewCrossDownIndicatorRule(indicator, exitConstant),
techan.PositionOpenRule{})
strategy:= techan.RuleStrategy{
UnstablePeriod: 10, // Period before which ShouldEnter and ShouldExit will always return falseEntryRule: entryRule,
ExitRule: exitRule,
}
strategy.ShouldEnter(0, record) // returns false
Enjoying this project?
Are you using techan in production? You can sponsor its development by buying me a coffee! ☕
ETH:0x2D9d3A1c16F118A3a59d0e446d574e1F01F62949
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 for details.