Files
gocryptotrader/gctscript/modules/ta/indicators/indicators.go
Adrian Gallagher a79e0d2b3e qa/spelling: Add Codespell support (#1121)
* Add codespell support

* Fix paths

* Add HTML files to exclusion list
2023-01-30 12:36:56 +11:00

62 lines
1.2 KiB
Go

package indicators
import (
"errors"
"fmt"
"strings"
"github.com/thrasher-corp/gct-ta/indicators"
"github.com/thrasher-corp/gocryptotrader/gctscript/modules"
)
// OHLCV locale string for OHLCV data conversion failure
const OHLCV = "OHLCV data"
var errInvalidSelector = errors.New("invalid selector")
func toFloat64(data interface{}) (float64, error) {
switch d := data.(type) {
case float64:
return d, nil
case int:
return float64(d), nil
case int32:
return float64(d), nil
case int64:
return float64(d), nil
default:
return 0, fmt.Errorf(modules.ErrParameterConvertFailed, d)
}
}
// ParseIndicatorSelector returns indicator number from string for slice selection
func ParseIndicatorSelector(in string) (int, error) {
switch in {
case "open":
return 1, nil
case "high":
return 2, nil
case "low":
return 3, nil
case "close":
return 4, nil
case "vol":
return 5, nil
default:
return 0, errInvalidSelector
}
}
// ParseMAType returns moving average from string
func ParseMAType(in string) (indicators.MaType, error) {
in = strings.ToLower(in)
switch in {
case "sma":
return indicators.Sma, nil
case "ema":
return indicators.Ema, nil
default:
return 0, errInvalidSelector
}
}