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

60
llmjob/6697.go Normal file
View File

@@ -0,0 +1,60 @@
package llmjob
import (
"github.com/banbox/banbot/config"
"github.com/banbox/banbot/core"
"github.com/banbox/banbot/strat"
ta "github.com/banbox/banta"
)
func J6697(pol *config.RunPolicyConfig) *strat.TradeStrat {
// 定义可调超参数
periodK := pol.DefInt("periodK", 13, core.PNorm(5, 30))
smoothK := pol.DefInt("smoothK", 5, core.PNorm(2, 8))
periodD := pol.DefInt("periodD", 2, core.PNorm(2, 5))
tpTicks := pol.DefInt("tpTicks", 100, core.PNorm(10, 500)) // 固定tick止盈
overboughtLevel := pol.DefInt("overboughtLevel", 80, core.PNorm(70, 90))
oversoldLevel := 100 - overboughtLevel // 自动计算超卖水平
return &strat.TradeStrat{
WarmupNum: periodK + smoothK + periodD + 10, // 确保足够的数据计算指标
HedgeOff: true, // 启用单向持仓模式
EachMaxLong: 100, // 对应pyramiding=100
EachMaxShort: 100, // 对应pyramiding=100
TimeFrames: "8h",
OnBar: func(s *strat.StratJob) {
e := s.Env
// 计算KDJ指标,返回[K, D, RSV]
k, d, _ := ta.KDJ(e.High, e.Low, e.Close, periodK, smoothK, periodD)
// 获取最新值
kVal := k.Get(0)
// 计算交叉信号
kdCross := k.Cross(d) // 1:上穿, -1:下穿, 0:重合
// 使用ATR作为动态止盈参考
atr := ta.ATR(e.High, e.Low, e.Close, 14)
// 做多条件:K线上穿D线,且K值未达超买区
if kdCross == 1 && kVal < float64(overboughtLevel) {
s.OpenOrder(&strat.EnterReq{
Tag: "Long",
OrderType: core.OrderTypeMarket,
TakeProfitVal: atr.Get(0) * float64(tpTicks) / 100, // 使用ATR作为动态止盈
})
}
// 做空条件:K线下穿D线,且K值未破超卖区
if kdCross == -1 && kVal > float64(oversoldLevel) {
s.OpenOrder(&strat.EnterReq{
Tag: "Short",
Short: true,
OrderType: core.OrderTypeMarket,
TakeProfitVal: atr.Get(0) * float64(tpTicks) / 100, // 使用ATR作为动态止盈
})
}
},
}
}