init
This commit is contained in:
47
trend/macd.go
Normal file
47
trend/macd.go
Normal 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,
|
||||
})
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user