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

47
trend/macd.go Normal file
View File

@@ -0,0 +1,47 @@
package trend
import (
"github.com/banbox/banbot/config"
"github.com/banbox/banbot/strat"
ta "github.com/banbox/banta"
)
func MACDX(pol *config.RunPolicyConfig) *strat.TradeStrat {
return &strat.TradeStrat{
WarmupNum: 220,
EachMaxLong: 1,
OnBar: func(s *strat.StratJob) {
e := s.Env
c := e.Close.Get(0)
atr := ta.ATR(e.High, e.Low, e.Close, 29).Get(0)
macd, macdSig := ta.MACD(e.Close, 12, 26, 9)
macdX := macd.Cross(macdSig)
maBig := ta.SMA(e.Close, 200).Get(0)
isBull := c > maBig
kdjK, kdjD, _ := ta.KDJ(e.High, e.Low, e.Close, 30, 5, 5)
kdjX := kdjK.Cross(kdjD)
if kdjX < 0 {
kdjX = -kdjX
}
rsi := ta.RSI(e.Close, 4).Get(0) - 50
if isBull && rsi < 30 && (macdX == 1 && kdjX <= 3 || macdX > 1 && kdjX == 1) && macd.Get(0) < 0 {
s.OpenOrder(&strat.EnterReq{
Tag: "long",
StopLossVal: atr * 0.8,
TakeProfitVal: atr * 3,
})
} else if !isBull && rsi > -30 && (macdX == -1 && kdjX <= 3 || macdX < -1 && kdjX == 1) && macd.Get(0) > 0 {
s.OpenOrder(&strat.EnterReq{
Tag: "short",
Short: true,
StopLossVal: atr * 0.8,
TakeProfitVal: atr * 3,
})
}
},
}
}