mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-06-07 23:16:53 +00:00
Indicators: Add support for correlation coefficient (#519)
* Add support for correlation coefficient code * Bump ta depends * Bump gct-ta depends version
This commit is contained in:
@@ -53,6 +53,8 @@ func WriteAsCSV(args ...objects.Object) (objects.Object, error) {
|
||||
temp, err = convertRSI(args[i])
|
||||
case indicators.SimpleMovingAverage:
|
||||
temp, err = convertSMA(args[i])
|
||||
case indicators.CorrelationCoefficient:
|
||||
temp, err = convertCorrelationCoefficient(args[i])
|
||||
case indicators.OHLCV:
|
||||
temp, err = convertOHLCV(args[i])
|
||||
front = true
|
||||
@@ -387,6 +389,32 @@ func convertSMA(a objects.Object) ([][]string, error) {
|
||||
return bucket, nil
|
||||
}
|
||||
|
||||
func convertCorrelationCoefficient(a objects.Object) ([][]string, error) {
|
||||
obj, ok := objects.ToInterface(a).(*indicators.Correlation)
|
||||
if !ok {
|
||||
return nil, errors.New("casting failure")
|
||||
}
|
||||
|
||||
var bucket = [][]string{
|
||||
{
|
||||
indicators.CorrelationCoefficient,
|
||||
},
|
||||
{
|
||||
fmt.Sprintf("Period:%d", obj.Period),
|
||||
},
|
||||
}
|
||||
|
||||
var val string
|
||||
for i := range obj.Value {
|
||||
val, ok = objects.ToString(obj.Value[i])
|
||||
if !ok {
|
||||
return nil, errors.New("cannot convert object to string")
|
||||
}
|
||||
bucket = append(bucket, []string{val})
|
||||
}
|
||||
return bucket, nil
|
||||
}
|
||||
|
||||
func convertOHLCV(a objects.Object) ([][]string, error) {
|
||||
obj, ok := objects.ToInterface(a).(*OHLCV)
|
||||
if !ok {
|
||||
|
||||
@@ -12,16 +12,17 @@ import (
|
||||
)
|
||||
|
||||
var (
|
||||
atrPayload = &indicators.ATR{Array: oneElement}
|
||||
bbandsPayload = &indicators.BBands{Array: threeElement}
|
||||
emaPayload = &indicators.EMA{Array: oneElement}
|
||||
macdPayload = &indicators.MACD{Array: threeElement}
|
||||
mfiPayload = &indicators.MFI{Array: oneElement}
|
||||
obvPayload = &indicators.OBV{Array: oneElement}
|
||||
rsiPayload = &indicators.RSI{Array: oneElement}
|
||||
smaPayload = &indicators.SMA{Array: oneElement}
|
||||
ohlcPayload = &OHLCV{Map: ohlcdata}
|
||||
unhandled = &objects.Array{}
|
||||
atrPayload = &indicators.ATR{Array: oneElement}
|
||||
bbandsPayload = &indicators.BBands{Array: threeElement}
|
||||
emaPayload = &indicators.EMA{Array: oneElement}
|
||||
macdPayload = &indicators.MACD{Array: threeElement}
|
||||
mfiPayload = &indicators.MFI{Array: oneElement}
|
||||
obvPayload = &indicators.OBV{Array: oneElement}
|
||||
rsiPayload = &indicators.RSI{Array: oneElement}
|
||||
smaPayload = &indicators.SMA{Array: oneElement}
|
||||
correlationPayload = &indicators.Correlation{Array: oneElement}
|
||||
ohlcPayload = &OHLCV{Map: ohlcdata}
|
||||
unhandled = &objects.Array{}
|
||||
|
||||
oneElement = objects.Array{
|
||||
Value: []objects.Object{
|
||||
@@ -157,6 +158,7 @@ func TestCommonWriteToCSV(t *testing.T) {
|
||||
obvPayload,
|
||||
rsiPayload,
|
||||
smaPayload,
|
||||
correlationPayload,
|
||||
ohlcPayload)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
|
||||
Reference in New Issue
Block a user