Browse Source

vrvp stream

main
strange 6 months ago
parent
commit
31555633ca
  1. 35
      internal/trading/sig/indicator_summary.go
  2. 3
      internal/trading/trading_service.go
  3. 5
      pkg/indicator/vrvp.go
  4. 5
      pkg/strategy/bollgrid.go

35
internal/trading/sig/indicator_summary.go

@ -1,7 +1,6 @@
package sig
import (
"fmt"
"sig-pub/pkg/indicator"
)
@ -22,30 +21,30 @@ func NewIndicatorSummary(summaryIndicatorNewer func() indicator.ISummaryIndicato
// Summary 0 10, 0 20, 1 30
func (s *IndicatorSummary) Summary(offset, count int16) (summary any, rok bool) {
key := fmt.Sprintf("%d,%d", offset, count)
summaryIndicator, ok := s.cachedSummaryIndicators[key]
// key := fmt.Sprintf("%d,%d", offset, count)
// summaryIndicator, ok := s.cachedSummaryIndicators[key]
if ok {
s.indicatorContext.AddOffset(offset + count + 1)
eliminater, ok := summaryIndicator.(indicator.ISummaryIndicatorEliminater)
if ok {
eliminater.Eliminate(s.indicatorContext)
}
s.indicatorContext.AddOffset(-(offset + count + 1))
// if ok {
// s.indicatorContext.AddOffset(offset + count + 1)
// eliminater, ok := summaryIndicator.(indicator.ISummaryIndicatorEliminater)
// if ok {
// eliminater.Eliminate(s.indicatorContext)
// }
// s.indicatorContext.AddOffset(-(offset + count + 1))
s.indicatorContext.AddOffset(offset)
summaryIndicator.Accumulate(s.indicatorContext)
summary, ok = summaryIndicator.Summary(s.indicatorContext)
s.indicatorContext.AddOffset(-offset)
return
}
// s.indicatorContext.AddOffset(offset)
// summaryIndicator.Accumulate(s.indicatorContext)
// summary, ok = summaryIndicator.Summary(s.indicatorContext)
// s.indicatorContext.AddOffset(-offset)
// return
// }
// 初始化, 计算全量数据
summaryIndicator = s.summaryIndicatorNewer()
summaryIndicator := s.summaryIndicatorNewer()
if err := summaryIndicator.Init(s.indicatorContext.Input()); err != nil {
panic(err)
}
s.cachedSummaryIndicators[key] = summaryIndicator
// s.cachedSummaryIndicators[key] = summaryIndicator
// 设置当前相对offset
offset = offset + count

3
internal/trading/trading_service.go

@ -19,6 +19,7 @@ import (
"sig-pub/pkg/utils/times"
"sig-pub/pkg/zlog"
"sort"
"time"
"sig-pub/internal/trading/backtest"
"sig-pub/internal/trading/sig"
@ -449,6 +450,8 @@ func (svc *TradingService) StrategySeries(ctx context.Context, req *pb.ReqStrate
rsp.Times = append(rsp.Times, ktime)
return
})
lastK := iiks.Get(driverInstId, interval).MustGet(0)
fmt.Println("lastK: ", lastK, lastK.Ts, time.UnixMilli(lastK.Ts))
return
}

5
pkg/indicator/vrvp.go

@ -3,7 +3,6 @@ package indicator
import (
"math"
"sig-pub/pkg/types"
"sig-pub/pkg/zlog"
)
const (
@ -202,8 +201,8 @@ func (v *VRVP) halveResolution() {
// Summary 计算最终的成交量分布结果
// 在所有K线Accumulate完成后调用
func (v *VRVP) Summary(ctx IIndicatorContext) (summary any, ok bool) {
zlog.Debugf("VRVP Summary: klines=%d, skts=%d, ekts=%d, minPrice=%.2f, maxPrice=%.2f, baseStep=%.2f",
v.klines, v.skts, v.ekts, v.minPrice, v.maxPrice, v.baseStep)
// zlog.Debugf("VRVP Summary: klines=%d, skts=%d, ekts=%d, minPrice=%.2f, maxPrice=%.2f, baseStep=%.2f",
// v.klines, v.skts, v.ekts, v.minPrice, v.maxPrice, v.baseStep)
if v.minPrice >= v.maxPrice {
return nil, false
}

5
pkg/strategy/bollgrid.go

@ -2,6 +2,7 @@ package strategy
import (
"sig-pub/pkg/types"
"sig-pub/pkg/zlog"
)
// BollGrid 布林带网格策略
@ -50,6 +51,10 @@ func (s *BollGrid) Update(ctx ISingleSigStrategyContext) (side types.Side) {
// 128 根k线的成交量分布图
summary, ok := ctx.SummaryIndicator("VRVP", types.Input{"buckets": 48}).Summary(0, 128)
_, _ = summary, ok
ts := ctx.Get(0).Ts
if ts == 1763685000000 {
zlog.Infof("last summary: %#v", summary)
}
// 获取指标数据
// BOLL指标 Calculate 返回值为 mb (中轨)

Loading…
Cancel
Save