From 54e21e8a7c94b7c9d70aa1c3a068fd4caf992bd7 Mon Sep 17 00:00:00 2001 From: wangfeng Date: Fri, 3 Mar 2023 13:16:42 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dreverse=E5=AF=B9series?= =?UTF-8?q?=E7=9A=84=E5=BD=B1=E5=93=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- formula/wma.go | 3 +++ formula/wma_test.go | 37 +++++++++++++++++++++++++++---------- go.mod | 4 ++-- go.sum | 8 ++++---- stat/reverse.go | 9 ++++++--- 5 files changed, 42 insertions(+), 19 deletions(-) diff --git a/formula/wma.go b/formula/wma.go index 5997441..cf87bb1 100644 --- a/formula/wma.go +++ b/formula/wma.go @@ -26,6 +26,9 @@ func WMA(S stat.Series, N any) stat.Series { v := stat.CumSum(x) v1 := stat.Sum(v) v2 := v1 * 2 / N / (N + 1) + if stat.DTypeIsNaN(v2) { + v2 = stat.DTypeNaN + } return v2 }) return d diff --git a/formula/wma_test.go b/formula/wma_test.go index 5b8e36d..dc8bd33 100644 --- a/formula/wma_test.go +++ b/formula/wma_test.go @@ -2,19 +2,36 @@ package formula import ( "fmt" - "gitee.com/quant1x/pandas" + "gitee.com/quant1x/data/stock" "testing" ) func TestWMA(t *testing.T) { - f0 := []float64{1, 2, 3, 4} - //f1 := []float64{70, 80, 75, 83, 86} - //f2 := []float64{90, 69, 60, 88, 87} + df := stock.KLine("000736.sz") + fmt.Println(df) + var ( + CLOSE = df.ColAsNDArray("close") + HIGH = df.ColAsNDArray("high") + LOW = df.ColAsNDArray("low") + //VOL = df.ColAsNDArray("volume") + //DATE = df.ColAsNDArray("date") + ) + //length := CLOSE.Len() + //N1 := N + N2 := 5 + N3 := 2 + //N1:=6; + //重心:(2*C+H+L)/4,COLOR00FFFF,LINETHICK0; + ZX := CLOSE.Mul(2).Add(HIGH).Add(LOW).Div(4) + //SJ:=WMA((重心-LLV(L,5))/(HHV(H,5)-LLV(L,5))*100,2); + LLV5 := LLV(LOW, N2) + HHV5 := HHV(HIGH, N2) + + sj1 := ZX.Sub(LLV5) + sj2 := HHV5.Sub(LLV5) + sj3 := sj1.Div(sj2).Mul(100) + SJ := WMA(sj3, N3) + //CLOSE := df.Col("close") + fmt.Println(SJ) - s0 := pandas.NewSeriesWithoutType("f0", f0) - //s1 := pandas.NewSeriesWithoutType("f1", f1) - //s2 := pandas.NewSeriesWithoutType("f2", f2) - fmt.Println(WMA(s0, 4)) - //fmt.Println(WMA(s1, 5)) - //fmt.Println(WMA(s2, 5)) } diff --git a/go.mod b/go.mod index 6bcba2a..6e7ffa2 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module gitee.com/quant1x/pandas go 1.20 require ( - gitee.com/quant1x/data v0.8.0 + gitee.com/quant1x/data v0.8.1 github.com/chewxy/math32 v1.10.1 github.com/mymmsc/gox v1.3.9 github.com/olekukonko/tablewriter v0.0.5 @@ -17,7 +17,7 @@ require ( ) require ( - gitee.com/quant1x/gotdx v1.2.5 // indirect + gitee.com/quant1x/gotdx v1.2.6 // indirect github.com/dlclark/regexp2 v1.7.0 // indirect github.com/dop251/goja v0.0.0-20230216180835-5937a312edda // indirect github.com/frankban/quicktest v1.11.2 // indirect diff --git a/go.sum b/go.sum index f7aa9c6..8166afc 100644 --- a/go.sum +++ b/go.sum @@ -1,7 +1,7 @@ -gitee.com/quant1x/data v0.8.0 h1:SMximr5cVA69YgwPBoSWg7K3iY6X+4MYXKQXPeXRwgw= -gitee.com/quant1x/data v0.8.0/go.mod h1:GOz4G71ZH6VJL0n5Wxvc+i0TXVPz04CnEd53OPTRJZU= -gitee.com/quant1x/gotdx v1.2.5 h1:zPbAPyLRg0uRv9bLziEV5EPoO5PBwffbkKQzI1yuDgA= -gitee.com/quant1x/gotdx v1.2.5/go.mod h1:lOJYzC4mcKmeHpm1L5jl94S0pPifue1sf9JMTP2kmho= +gitee.com/quant1x/data v0.8.1 h1:dqJImtVgUyKW1rmkIUdMrY4rIbVmMO4+rsBaqgnz0R0= +gitee.com/quant1x/data v0.8.1/go.mod h1:S5tLicyK3DdPMAsBmF0fNQlPvVKk+xbpstolA/r9D8M= +gitee.com/quant1x/gotdx v1.2.6 h1:iOVyDQcK5c4z5D6wfPKVIfdDZzjEUQv0xrRgBuvN2Xc= +gitee.com/quant1x/gotdx v1.2.6/go.mod h1:lOJYzC4mcKmeHpm1L5jl94S0pPifue1sf9JMTP2kmho= github.com/chewxy/math32 v1.10.1 h1:LFpeY0SLJXeaiej/eIp2L40VYfscTvKh/FSEZ68uMkU= github.com/chewxy/math32 v1.10.1/go.mod h1:dOB2rcuFrCn6UHrze36WSLVPKtzPMRAQvBvUwkSsLqs= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= diff --git a/stat/reverse.go b/stat/reverse.go index d73d39a..5de1ff1 100644 --- a/stat/reverse.go +++ b/stat/reverse.go @@ -1,9 +1,12 @@ package stat +import "golang.org/x/exp/slices" + // Reverse 反转切片 func Reverse[S ~[]E, E any](s S) S { - for i, j := 0, len(s)-1; i < j; i, j = i+1, j-1 { - s[i], s[j] = s[j], s[i] + d := slices.Clone(s) + for i, j := 0, len(d)-1; i < j; i, j = i+1, j-1 { + d[i], d[j] = d[j], d[i] } - return s + return d } -- Gitee