This commit is contained in:
2026-08-24 20:53:21 +08:00
commit 6e78bba16a
287 changed files with 32443 additions and 0 deletions

59
trend/dv2.go Normal file
View File

@@ -0,0 +1,59 @@
package trend
import (
"github.com/banbox/banbot/config"
"github.com/banbox/banbot/strat"
ta "github.com/banbox/banta"
)
/*
基于DV2超卖且大均线上方时做多
基于RSI4百分位排名超卖,且大均线上方时做多
效果好于双均线仅做多。
DV2加入做空部分持续亏钱
RSI加入做空变化不大
*/
func DVRSI(p *config.RunPolicyConfig) *strat.TradeStrat {
return &strat.TradeStrat{
WarmupNum: 100,
RunTimeFrames: []string{"4h"},
OnBar: func(s *strat.StratJob) {
e := s.Env
c := e.Close.Get(0)
dv := ta.DV2(e.High, e.Low, e.Close, 126, 2).Get(0)
sma := ta.SMA(e.Close, 50).Get(0)
ma10 := ta.SMA(e.Close, 10).Get(0)
rsi := ta.PercentRank(ta.RSI(e.Close, 4), 126).Get(0)
atr := ta.ATR(e.High, e.Low, e.Close, 14).Get(0)
if len(s.LongOrders) > 0 {
if c < ma10 {
for _, o := range s.LongOrders {
holdNum := e.BarCount(o.EnterAt)
if holdNum > 5 {
s.CloseOrders(&strat.ExitReq{Tag: "exitL", OrderID: o.ID})
}
}
}
} else if len(s.ShortOrders) > 0 {
if c > ma10 {
for _, o := range s.ShortOrders {
holdNum := e.BarCount(o.EnterAt)
if holdNum > 5 {
s.CloseOrders(&strat.ExitReq{Tag: "exitS", OrderID: o.ID})
}
}
}
} else if dv <= 10 && c > sma {
s.OpenOrder(&strat.EnterReq{Tag: "long", StopLossVal: atr * 3})
} else if rsi < 10 && c > sma {
s.OpenOrder(&strat.EnterReq{Tag: "long", StopLossVal: atr * 3})
}
//else if rsi > 90 && c < sma {
// s.OpenOrder(&strat.EnterReq{Tag: "short", Short: true, StopLossVal: atr})
//}
},
}
}