Files
gocryptotrader/gctscript/modules/ta/indicators/indicators.go
Adrian Gallagher 4651af5767 modernise: Run new gopls modernise tool against the codebase and fix minor issues (#1826)
* modernise: Run new gopls modernise tool against codebase

* Address shazbert's nits

* apichecker, gctcli: Simplify HTML scraping functions and improve depth limit handling

* refactor: Create minSyncInterval const and update order book limit handling for binance and binanceUS

* refactor: Various slice usage improvements and rename TODO

* tranches: Revert deleteByID changes due to performance decrease

Shazbert was a F1 driver in a past lifetime 🏎️

* tranches: Simply retrieve copy

Thanks to shazbert

* documentation: Sort contributors list by contributions

* tranches: Remove deadcode in deleteByID
2025-03-21 09:17:10 +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 any) (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
}
}