init
This commit is contained in:
50
trend/rsi_macd.go
Normal file
50
trend/rsi_macd.go
Normal file
@@ -0,0 +1,50 @@
|
||||
package trend
|
||||
|
||||
import (
|
||||
"github.com/banbox/banbot/config"
|
||||
"github.com/banbox/banbot/strat"
|
||||
ta "github.com/banbox/banta"
|
||||
)
|
||||
|
||||
func rsi_macd(p *config.RunPolicyConfig) *strat.TradeStrat {
|
||||
return &strat.TradeStrat{
|
||||
WarmupNum: 100,
|
||||
OnBar: func(s *strat.StratJob) {
|
||||
e := s.Env
|
||||
rsi := ta.RSI(e.Close, 2).Get(0)
|
||||
sml := ta.SMA(e.Close, 5).Get(0)
|
||||
big := ta.SMA(e.Close, 20).Get(0)
|
||||
if len(s.LongOrders) > 0 {
|
||||
for _, od := range s.LongOrders {
|
||||
barNum := e.BarCount(od.EnterAt)
|
||||
if barNum > 5 {
|
||||
s.CloseOrders(&strat.ExitReq{
|
||||
Tag: "exitL",
|
||||
OrderID: od.ID,
|
||||
})
|
||||
}
|
||||
}
|
||||
} else if rsi <= 10 && sml > big {
|
||||
s.OpenOrder(&strat.EnterReq{
|
||||
Tag: "long",
|
||||
})
|
||||
}
|
||||
if len(s.ShortOrders) > 0 {
|
||||
for _, od := range s.ShortOrders {
|
||||
barNum := e.BarCount(od.EnterAt)
|
||||
if barNum > 5 {
|
||||
s.CloseOrders(&strat.ExitReq{
|
||||
Tag: "exitS",
|
||||
OrderID: od.ID,
|
||||
})
|
||||
}
|
||||
}
|
||||
} else if rsi >= 90 && sml < big {
|
||||
s.OpenOrder(&strat.EnterReq{
|
||||
Tag: "short",
|
||||
Short: true,
|
||||
})
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user