mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-05-14 15:09:51 +00:00
62 lines
1.2 KiB
Go
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
|
|
}
|
|
}
|