init
This commit is contained in:
74
llmjob/7593.go
Normal file
74
llmjob/7593.go
Normal file
@@ -0,0 +1,74 @@
|
||||
package llmjob
|
||||
|
||||
import (
|
||||
"math"
|
||||
|
||||
"github.com/banbox/banbot/config"
|
||||
"github.com/banbox/banbot/core"
|
||||
"github.com/banbox/banbot/orm/ormo"
|
||||
"github.com/banbox/banbot/strat"
|
||||
ta "github.com/banbox/banta"
|
||||
)
|
||||
|
||||
func J7593(pol *config.RunPolicyConfig) *strat.TradeStrat {
|
||||
// 定义可调参数
|
||||
lengthRSI := pol.DefInt("lengthRSI", 20, core.PNorm(5, 30))
|
||||
rsiEntryThs := pol.DefInt("rsiEntryThs", 72, core.PNorm(60, 85))
|
||||
rsiExitThs := pol.DefInt("rsiExitThs", 50, core.PNorm(45, 65))
|
||||
takeProfitRate := pol.Def("takeProfitRate", 6.0, core.PNorm(1, 15))
|
||||
|
||||
return &strat.TradeStrat{
|
||||
Name: "TrendFollowingRSI",
|
||||
WarmupNum: lengthRSI + 10, // 预热足够的K线用于RSI计算
|
||||
HedgeOff: true, // 单向持仓模式
|
||||
EachMaxLong: 1, // 最多持有一个多单
|
||||
TimeFrames: "8h",
|
||||
OnBar: func(s *strat.StratJob) {
|
||||
e := s.Env
|
||||
|
||||
// 计算RSI指标
|
||||
rsi := ta.RSI(e.Close, lengthRSI)
|
||||
currentRSI := rsi.Get(0)
|
||||
|
||||
// 检查是否有有效的RSI值
|
||||
if math.IsNaN(currentRSI) {
|
||||
return
|
||||
}
|
||||
|
||||
// 入场条件:RSI > 70
|
||||
if currentRSI > float64(rsiEntryThs) && len(s.LongOrders) == 0 {
|
||||
s.OpenOrder(&strat.EnterReq{
|
||||
Tag: "long",
|
||||
Short: false,
|
||||
})
|
||||
}
|
||||
|
||||
// 出场条件:RSI < 55
|
||||
if currentRSI < float64(rsiExitThs) && s.Position(core.OdDirtLong, "") > 0 {
|
||||
s.CloseOrders(&strat.ExitReq{
|
||||
Tag: "rsi_exit",
|
||||
Dirt: core.OdDirtLong,
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
OnCheckExit: func(s *strat.StratJob, od *ormo.InOutOrder) *strat.ExitReq {
|
||||
// 仅对开仓状态的多头订单检查止盈
|
||||
if !od.Short || od.Status != ormo.InOutStatusFullEnter {
|
||||
return nil
|
||||
}
|
||||
|
||||
// 基于持仓成本计算止盈目标价
|
||||
longTakeProfit := od.InitPrice * (1 + takeProfitRate/100)
|
||||
|
||||
// 检查是否达到止盈条件
|
||||
if s.Env.Close.Get(0) > longTakeProfit {
|
||||
return &strat.ExitReq{
|
||||
Tag: "tp_exit",
|
||||
Dirt: core.OdDirtLong,
|
||||
}
|
||||
}
|
||||
return nil
|
||||
},
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user